X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcontact.pm;fp=FS%2FFS%2Fcontact.pm;h=592c7199f39c004309db0d54edb5ed1c7a14e8e4;hb=b472074e9b8d1d9ca2e2e38e231bf1f209281286;hp=188d287790768bcd31b324a0c38d0ca83e4f929c;hpb=d9f0a98539cd8dd957ea9a4b5d77fbb739d43d2e;p=freeside.git diff --git a/FS/FS/contact.pm b/FS/FS/contact.pm index 188d28779..592c7199f 100644 --- a/FS/FS/contact.pm +++ b/FS/FS/contact.pm @@ -945,6 +945,7 @@ sub _upgrade_data { #class method # 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', {}); + my %custnum_dest; while (my $cust_main_invoice = $search->fetch) { my $custnum = $cust_main_invoice->custnum; my $dest = $cust_main_invoice->dest; @@ -956,17 +957,22 @@ sub _upgrade_data { #class method if !$svc_acct; $dest = $svc_acct->email; } + push @{ $custnum_dest{$custnum} ||= [] }, $dest; - my $error = $cust_main->replace( invoicing_list => [ $dest ] ); - + my $error = $cust_main_invoice->delete; if ( $error ) { - die "custnum $custnum, invoice destination $dest, creating contact: $error\n"; + die "custnum $custnum, cleaning up cust_main_invoice: $error\n"; } + } - $error = $cust_main_invoice->delete; - die "custnum $custnum, cleaning up cust_main_invoice: $error\n" if $error; - - } # while $search->fetch + foreach my $custnum (keys %custnum_dest) { + my $dests = $custnum_dest{$custnum}; + my $cust_main = FS::cust_main->by_key($custnum); + my $error = $cust_main->replace( invoicing_list => $dests ); + if ( $error ) { + die "custnum $custnum, creating contact: $error\n"; + } + } unless ( FS::upgrade_journal->is_done('contact_invoice_dest') ) {