diff options
author | Ivan Kohler <ivan@freeside.biz> | 2013-05-04 00:19:30 -0700 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2013-05-04 00:19:30 -0700 |
commit | 71c6403be78e91e34d4124da35c9d0d284ad197d (patch) | |
tree | 0cf8a3fe5851d25bc478d6a5fa57e333fa142979 /FS/FS/cust_main/Packages.pm | |
parent | e0d4d66f670371a0c8a40dc471352634f9fd6017 (diff) |
merging is now attaching, RT#22185
Diffstat (limited to 'FS/FS/cust_main/Packages.pm')
-rw-r--r-- | FS/FS/cust_main/Packages.pm | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/FS/FS/cust_main/Packages.pm b/FS/FS/cust_main/Packages.pm index e904cfd1f..41ef22894 100644 --- a/FS/FS/cust_main/Packages.pm +++ b/FS/FS/cust_main/Packages.pm @@ -7,6 +7,8 @@ use FS::UID qw( dbh ); use FS::Record qw( qsearch qsearchs ); use FS::cust_pkg; use FS::cust_svc; +use FS::contact; # for attach_pkgs +use FS::cust_location; # $DEBUG = 0; $me = '[FS::cust_main::Packages]'; @@ -344,11 +346,39 @@ sub attach_pkgs { #end of false laziness + #pull in contact + + my %contact_hash = ( 'first' => $self->first, + 'last' => $self->get('last'), + 'custnum' => $new_custnum, + 'disabled' => '', + ); + + my $contact = qsearchs( 'contact', \%contact_hash) + || new FS::contact \%contact_hash; + unless ( $contact->contactnum ) { + my $error = $contact->insert; + if ( $error ) { + $dbh->rollback if $oldAutoCommit; + return $error; + } + } + foreach my $cust_pkg ( $self->ncancelled_pkgs ) { + my $cust_location = $cust_pkg->cust_location || $self->ship_location; + my %loc_hash = $cust_location->hash; + $loc_hash{'locationnum'} = ''; + $loc_hash{'custnum'} = $new_custnum; + $loc_hash{'disabled'} = ''; + my $new_cust_location = qsearchs( 'cust_location', \%loc_hash) + || new FS::cust_location \%loc_hash; + my $pkg_or_error = $cust_pkg->change( { - 'keep_dates' => 1, - 'cust_main' => $new_cust_main, + 'keep_dates' => 1, + 'cust_main' => $new_cust_main, + 'contactnum' => $contact->contactnum, + 'cust_location' => $new_cust_location, } ); my $error = ref($pkg_or_error) ? '' : $pkg_or_error; |