[freeside-commits] branch FREESIDE_4_BRANCH updated. c8ad68aada943ca7d468ed42695f043fa0d0f06f
Mark Wells
mark at 420.am
Mon Jun 6 16:43:48 PDT 2016
The branch, FREESIDE_4_BRANCH has been updated
via c8ad68aada943ca7d468ed42695f043fa0d0f06f (commit)
from b132af1852cba3679e29f6c2274215d8c237c290 (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 c8ad68aada943ca7d468ed42695f043fa0d0f06f
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 2cea2d1..a8aa43b 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,
@@ -949,6 +959,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', {});
@@ -981,18 +1005,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