set fixed values from an explicitly specified svcpart on replace too
[freeside.git] / FS / FS / cust_svc.pm
index 384b23a..118ab79 100644 (file)
@@ -11,7 +11,7 @@ use FS::pkg_svc;
 use FS::svc_acct;
 use FS::svc_domain;
 use FS::svc_forward;
-use FS::svc_broadband
+use FS::svc_broadband;
 use FS::svc_external;
 use FS::domain_record;
 use FS::part_export;
@@ -172,15 +172,9 @@ sub replace {
   local $FS::UID::AutoCommit = 0;
   my $dbh = dbh;
 
-  my $error = $new->SUPER::replace($old);
-  if ( $error ) {
-    $dbh->rollback if $oldAutoCommit;
-    return $error if $error;
-  }
-
   if ( $new->svcpart != $old->svcpart ) {
     my $svc_x = $new->svc_x;
-    my $new_svc_x = ref($svc_x)->new({$svc_x->hash});
+    my $new_svc_x = ref($svc_x)->new({$svc_x->hash, svcpart=>$new->svcpart });
     my $error = $new_svc_x->replace($svc_x);
     if ( $error ) {
       $dbh->rollback if $oldAutoCommit;
@@ -188,6 +182,12 @@ sub replace {
     }
   }
 
+  my $error = $new->SUPER::replace($old);
+  if ( $error ) {
+    $dbh->rollback if $oldAutoCommit;
+    return $error if $error;
+  }
+
   $dbh->commit or die $dbh->errstr if $oldAutoCommit;
   ''; #no error