X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fcust_main.pm;h=e1d3caafef938e82d4a7aedc194c6339779b91f7;hp=43d8f0ce77edfff0e0f795dfba5513d0679ffd44;hb=aa59cc83ffa65da2fce9b5be42f483d9b17d91c0;hpb=2eb4ef92fbea43f55fd705d604fda5c815f9eb9c diff --git a/FS/FS/cust_main.pm b/FS/FS/cust_main.pm index 43d8f0ce7..e1d3caafe 100644 --- a/FS/FS/cust_main.pm +++ b/FS/FS/cust_main.pm @@ -402,11 +402,8 @@ sub insert { # insert locations foreach my $l (qw(bill_location ship_location)) { - my $loc = delete $self->hashref->{$l}; - # XXX if we're moving a prospect's locations, do that here - if ( !$loc ) { - return "$l not set"; - } + + my $loc = delete $self->hashref->{$l} or return "$l not set"; if ( !$loc->locationnum ) { # warn the location that we're going to insert it with no custnum @@ -419,8 +416,19 @@ sub insert { my $label = $l eq 'ship_location' ? 'service' : 'billing'; return "$error (in $label location)"; } - } - elsif ( ($loc->custnum || 0) > 0 or $loc->prospectnum ) { + + } elsif ( $loc->prospectnum ) { + + $loc->prospectnum(''); + $loc->set(custnum_pending => 1); + my $error = $loc->replace; + if ( $error ) { + $dbh->rollback if $oldAutoCommit; + my $label = $l eq 'ship_location' ? 'service' : 'billing'; + return "$error (moving $label location)"; + } + + } elsif ( ($loc->custnum || 0) > 0 ) { # then it somehow belongs to another customer--shouldn't happen $dbh->rollback if $oldAutoCommit; return "$l belongs to customer ".$loc->custnum;