projects
/
freeside.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
b1f580c
)
don't leave dangling cust_svc records when running inside a big transaction (i.e...
author
Ivan Kohler
<ivan@freeside.biz>
Fri, 1 Jun 2012 08:29:27 +0000
(
01:29
-0700)
committer
Ivan Kohler
<ivan@freeside.biz>
Fri, 1 Jun 2012 08:29:27 +0000
(
01:29
-0700)
FS/FS/svc_Common.pm
patch
|
blob
|
history
diff --git
a/FS/FS/svc_Common.pm
b/FS/FS/svc_Common.pm
index
19f5819
..
a6daf44
100644
(file)
--- 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 $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 ( {
#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;
}
$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});
$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 ) {
|| $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;
}
$dbh->rollback if $oldAutoCommit;
return $error;
}