[freeside-commits] branch master updated. ae362d637c6ec2db80184d5ae6c30b1f5dc3271c

Mark Wells mark at 420.am
Mon Jun 6 16:43:52 PDT 2016


The branch, master has been updated
       via  ae362d637c6ec2db80184d5ae6c30b1f5dc3271c (commit)
      from  65b639012a5dc547eccb01fd0e55efd4aa728039 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit ae362d637c6ec2db80184d5ae6c30b1f5dc3271c
Author: Mark Wells <mark at freeside.biz>
Date:   Mon Jun 6 16:27:01 2016 -0700

    on 4.x upgrade, migrate existing customer-contact links before assigning them as invoice destinations, #25536

diff --git a/FS/FS/contact.pm b/FS/FS/contact.pm
index f6d9d03..fd3e9d7 100644
--- a/FS/FS/contact.pm
+++ b/FS/FS/contact.pm
@@ -112,10 +112,10 @@ sub table { 'contact'; }
 Adds this record to the database.  If there is an error, returns the error,
 otherwise returns false.
 
-If the object has an C<emailaddress> field, L<FS::contact_email> records will
-be created for each (comma-separated) email address in that field. If any of
-these coincide with an existing email address, this contact will be merged with
-the contact with that address.
+If the object has an C<emailaddress> field, L<FS::contact_email> records
+will be created for each (comma-separated) email address in that field. If
+any of these coincide with an existing email address, this contact will be
+merged with the contact with that address.
 
 Then, if the object has any fields named C<phonetypenumN> an
 L<FS::contact_phone> record will be created for each of them. Those fields
@@ -206,6 +206,10 @@ sub insert {
   }
 
   my $cust_contact = '';
+  # if $self->custnum was set, then the customer-specific properties
+  # (custnum, classnum, invoice_dest, selfservice_access, comment) are in
+  # pseudo-fields, and are now in %link_hash. otherwise, ignore all those
+  # fields.
   if ( $custnum ) {
     my %hash = ( 'contactnum' => $self->contactnum,
                  'custnum'    => $custnum,
@@ -337,6 +341,8 @@ sub delete {
     }
   }
 
+  # if $self->custnum was set, then we're removing the contact from this
+  # customer.
   if ( $self->custnum ) {
     my $cust_contact = qsearchs('cust_contact', {
                          'contactnum'  => $self->contactnum,
@@ -438,6 +444,10 @@ sub replace {
   }
 
   my $cust_contact = '';
+  # if $self->custnum was set, then the customer-specific properties
+  # (custnum, classnum, invoice_dest, selfservice_access, comment) are in
+  # pseudo-fields, and are now in %link_hash. otherwise, ignore all those
+  # fields.
   if ( $custnum ) {
     my %hash = ( 'contactnum' => $self->contactnum,
                  'custnum'    => $custnum,
@@ -943,6 +953,20 @@ use FS::upgrade_journal;
 sub _upgrade_data { #class method
   my ($class, %opts) = @_;
 
+  # before anything else, migrate contact.custnum to cust_contact records
+  unless ( FS::upgrade_journal->is_done('contact_invoice_dest') ) {
+
+    local($skip_fuzzyfiles) = 1;
+
+    foreach my $contact (qsearch('contact', {})) {
+      my $error = $contact->replace;
+      die $error if $error;
+    }
+
+    FS::upgrade_journal->set_done('contact_invoice_dest');
+  }
+
+
   # always migrate cust_main_invoice records over
   local $FS::cust_main::import = 1; # override require_phone and such
   my $search = FS::Cursor->new('cust_main_invoice', {});
@@ -975,18 +999,6 @@ sub _upgrade_data { #class method
     }
   }
 
-  unless ( FS::upgrade_journal->is_done('contact_invoice_dest') ) {
-
-    local($skip_fuzzyfiles) = 1;
-
-    foreach my $contact (qsearch('contact', {})) {
-      my $error = $contact->replace;
-      die $error if $error;
-    }
-
-    FS::upgrade_journal->set_done('contact_invoice_dest');
-  }
-
 }
 
 =back

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/contact.pm |   44 ++++++++++++++++++++++++++++----------------
 1 file changed, 28 insertions(+), 16 deletions(-)




More information about the freeside-commits mailing list