diff options
author | Ivan Kohler <ivan@freeside.biz> | 2018-01-24 12:28:57 -0800 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2018-01-24 12:28:57 -0800 |
commit | 046409735189fe40a1d349c4f1902da2bc1d71b2 (patch) | |
tree | 9871ad751210119bec2096f3dfdbdfdd596a4c2e /FS | |
parent | f3e7167443a72ca8136dfec7d67d8e5c8d648611 (diff) |
don't leave quotation side effects around, eek, RT#79310, RT#32489
Diffstat (limited to 'FS')
-rw-r--r-- | FS/FS/quotation.pm | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/FS/FS/quotation.pm b/FS/FS/quotation.pm index 6b0c9145f..a3f061291 100644 --- a/FS/FS/quotation.pm +++ b/FS/FS/quotation.pm @@ -716,7 +716,10 @@ sub estimate { my $cust_main; if ( $cust_or_prospect->isa('FS::prospect_main') ) { $cust_main = $cust_or_prospect->convert_cust_main; - die "$cust_main (simulating customer signup)\n" unless ref $cust_main; + unless ( ref($cust_main) ) { + $temp_dbh->rollback; + die "$cust_main (simulating customer signup)\n"; + } $fake_self->set('prospectnum', ''); $fake_self->set('custnum', $cust_main->custnum); } else { @@ -726,7 +729,10 @@ sub estimate { # order packages local($FS::cust_pkg::disable_start_on_hold) = 1; $error = $fake_self->order(\%pkgnum_of); - die "$error (simulating package order)\n" if $error; + if ( $error ) { + $temp_dbh->rollback; + die "$error (simulating package order)\n"; + } my @new_pkgs = map { FS::cust_pkg->by_key($_) } values(%pkgnum_of); @@ -739,7 +745,10 @@ sub estimate { 'no_usage_reset' => 1, ); $error = $cust_main->bill(%bill_opt); - die "$error (simulating initial billing)\n" if $error; + if ( $error ) { + $temp_dbh->rollback; + die "$error (simulating initial billing)\n" if $error; + } # pick dates for future bills my %next_bill_pkgs; @@ -755,7 +764,10 @@ sub estimate { $bill_opt{'return_bill'} = $return_bill[$i] = []; $bill_opt{'pkg_list'} = $next_bill_pkgs{$next_bill}; $error = $cust_main->bill(%bill_opt); - die "$error (simulating recurring billing cycle $i)\n" if $error; + if ( $error ) { + $temp_dbh->rollback; + die "$error (simulating recurring billing cycle $i)\n"; + } $i++; } |