summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2012-06-01 01:29:30 -0700
committerIvan Kohler <ivan@freeside.biz>2012-06-01 01:29:30 -0700
commit5dc38d70da9bdaeebc4a90c955022cdf917f62ad (patch)
tree522ae5c40deae4e98b67291c5f8c1363253465d3
parentcf8051f1b06d78a1267c468ce067b03f25575162 (diff)
don't leave dangling cust_svc records when running inside a big transaction (i.e. data import)
-rw-r--r--FS/FS/svc_Common.pm6
1 files changed, 6 insertions, 0 deletions
diff --git a/FS/FS/svc_Common.pm b/FS/FS/svc_Common.pm
index 19f5819cb..a6daf44c8 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;
}