X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fcontact.pm;h=fd3e9d770dd8a4ac171fdf5784d7f5062b27f091;hp=f6d9d0329159618d10b0d1568221ce7ad759ae74;hb=ae362d637c6ec2db80184d5ae6c30b1f5dc3271c;hpb=65b639012a5dc547eccb01fd0e55efd4aa728039 diff --git a/FS/FS/contact.pm b/FS/FS/contact.pm index f6d9d0329..fd3e9d770 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 field, L 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 field, L 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 an L 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