don't leave dangling cust_svc records when running inside a big transaction (i.e...
authorIvan Kohler <ivan@freeside.biz>
Fri, 1 Jun 2012 08:29:27 +0000 (01:29 -0700)
committerIvan Kohler <ivan@freeside.biz>
Fri, 1 Jun 2012 08:29:27 +0000 (01:29 -0700)
FS/FS/svc_Common.pm

index 19f5819..a6daf44 100644 (file)
@@ -244,6 +244,7 @@ sub insert {
 
   my $svcnum = $self->svcnum;
   my $cust_svc = $svcnum ? qsearchs('cust_svc',{'svcnum'=>$self->svcnum}) : '';
+  my $inserted_cust_svc = 0;
   #unless ( $svcnum ) {
   if ( !$svcnum or !$cust_svc ) {
     $cust_svc = new FS::cust_svc ( {
@@ -257,6 +258,7 @@ sub insert {
       $dbh->rollback if $oldAutoCommit;
       return $error;
     }
+    $inserted_cust_svc  = 1;
     $svcnum = $self->svcnum($cust_svc->svcnum);
   } else {
     #$cust_svc = qsearchs('cust_svc',{'svcnum'=>$self->svcnum});
@@ -275,6 +277,10 @@ sub insert {
               || $self->preinsert_hook
               || $self->SUPER::insert;
   if ( $error ) {
+    if ( $inserted_cust_svc ) {
+      my $derror = $cust_svc->delete;
+      die $derror if $derror;
+    }
     $dbh->rollback if $oldAutoCommit;
     return $error;
   }