diff options
author | Ivan Kohler <ivan@freeside.biz> | 2012-06-01 01:29:27 -0700 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2012-06-01 01:29:27 -0700 |
commit | 2bc9bac2a63cb778fd7be89066bfe9f591829f96 (patch) | |
tree | 54974e97666826027b53c75c98ebd6f6ad5eccee /FS/FS/svc_Common.pm | |
parent | b1f580c37e3da920fd6669e7431fd8cb06810f35 (diff) |
don't leave dangling cust_svc records when running inside a big transaction (i.e. data import)
Diffstat (limited to 'FS/FS/svc_Common.pm')
-rw-r--r-- | FS/FS/svc_Common.pm | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/FS/FS/svc_Common.pm b/FS/FS/svc_Common.pm index 19f5819..a6daf44 100644 --- a/FS/FS/svc_Common.pm +++ b/FS/FS/svc_Common.pm @@ -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; } |