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;