Merge branch 'master' of git.freeside.biz:/home/git/freeside
[freeside.git] / FS / FS / cust_main / Packages.pm
index 41ef228..152c496 100644 (file)
@@ -130,13 +130,10 @@ sub order_pkg {
 
   } elsif ( $opt->{'cust_location'} ) {
 
-    if ( ! $opt->{'cust_location'}->locationnum ) {
-      # not inserted yet
-      my $error = $opt->{'cust_location'}->insert;
-      if ( $error ) {
-        $dbh->rollback if $oldAutoCommit;
-        return "inserting cust_location (transaction rolled back): $error";
-      }
+    my $error = $opt->{'cust_location'}->find_or_insert;
+    if ( $error ) {
+      $dbh->rollback if $oldAutoCommit;
+      return "inserting cust_location (transaction rolled back): $error";
     }
     $cust_pkg->locationnum($opt->{'cust_location'}->locationnum);
 
@@ -186,7 +183,6 @@ sub order_pkg {
         'pkglinknum'    => $link->pkglinknum,
         'custnum'       => $self->custnum,
         'main_pkgnum'   => $cust_pkg->pkgnum,
-        'locationnum'   => $cust_pkg->locationnum,
         # try to prevent as many surprises as possible
         'pkgbatch'      => $cust_pkg->pkgbatch,
         'start_date'    => $cust_pkg->start_date,
@@ -199,7 +195,8 @@ sub order_pkg {
         'waive_setup'   => $cust_pkg->waive_setup,
         'allow_pkgpart' => $opt->{'allow_pkgpart'},
     });
-    $error = $self->order_pkg('cust_pkg' => $pkg);
+    $error = $self->order_pkg('cust_pkg' => $pkg,
+                              'locationnum' => $cust_pkg->locationnum);
     if ( $error ) {
       $dbh->rollback if $oldAutoCommit;
       return "inserting supplemental package: $error";