X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcontact.pm;h=592c7199f39c004309db0d54edb5ed1c7a14e8e4;hb=fad183c519f7d8b7c905708efc984c571b2c2990;hp=e5ddcdcb6782b049276108a80178935f05933a26;hpb=a68f2e9239ad5cde3bd25ca7aea6af7e0f2ce75f;p=freeside.git diff --git a/FS/FS/contact.pm b/FS/FS/contact.pm index e5ddcdcb6..592c7199f 100644 --- a/FS/FS/contact.pm +++ b/FS/FS/contact.pm @@ -90,10 +90,6 @@ empty or bcrypt disabled -=item invoice_dest - -empty, or 'Y' if email invoices should be sent to this contact - =back =head1 METHODS @@ -134,6 +130,7 @@ be included in that record, if they are set on the object: - classnum - comment - selfservice_access +- invoice_dest =cut @@ -157,7 +154,7 @@ sub insert { $self->custnum(''); my %link_hash = (); - for (qw( classnum comment selfservice_access )) { + for (qw( classnum comment selfservice_access invoice_dest )) { $link_hash{$_} = $self->get($_); $self->$_(''); } @@ -381,7 +378,8 @@ sub delete { } } - my $error = $self->SUPER::delete; + my $error = $self->delete_password_history + || $self->SUPER::delete; if ( $error ) { $dbh->rollback if $oldAutoCommit; return $error; @@ -425,7 +423,7 @@ sub replace { $self->custnum(''); my %link_hash = (); - for (qw( classnum comment selfservice_access )) { + for (qw( classnum comment selfservice_access invoice_dest )) { $link_hash{$_} = $self->get($_); $self->$_(''); } @@ -674,7 +672,6 @@ sub check { || $self->ut_textn('_password') || $self->ut_enum('_password_encoding', [ '', 'bcrypt']) || $self->ut_enum('disabled', [ '', 'Y' ]) - || $self->ut_flag('invoice_dest') ; return $error if $error; @@ -948,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; @@ -959,26 +957,33 @@ sub _upgrade_data { #class method if !$svc_acct; $dest = $svc_acct->email; } + push @{ $custnum_dest{$custnum} ||= [] }, $dest; - my $error = $cust_main->replace( [ $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; + 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"; + } + } - } # while $search->fetch + unless ( FS::upgrade_journal->is_done('contact_invoice_dest') ) { - unless ( FS::upgrade_journal->is_done('contact__DUPEMAIL') ) { + local($skip_fuzzyfiles) = 1; foreach my $contact (qsearch('contact', {})) { my $error = $contact->replace; die $error if $error; } - FS::upgrade_journal->set_done('contact__DUPEMAIL'); + FS::upgrade_journal->set_done('contact_invoice_dest'); } }