diff options
author | ivan <ivan> | 2007-07-13 23:52:23 +0000 |
---|---|---|
committer | ivan <ivan> | 2007-07-13 23:52:23 +0000 |
commit | 9035034a53d60cb7a7687dfee899c1d0c775ea74 (patch) | |
tree | 80a6dc3d257fa24b2097746e4b8f074a420dfdd9 /httemplate | |
parent | ae5b57a84d549166bae637c0c01db0b9e09b138f (diff) |
fix race condition where ->apply_payments_and_credits could double-apply in rare cases
Diffstat (limited to 'httemplate')
-rwxr-xr-x | httemplate/edit/process/cust_main.cgi | 6 | ||||
-rwxr-xr-x | httemplate/misc/bill.cgi | 30 | ||||
-rwxr-xr-x | httemplate/misc/process/recharge_svc.html | 2 |
3 files changed, 22 insertions, 16 deletions
diff --git a/httemplate/edit/process/cust_main.cgi b/httemplate/edit/process/cust_main.cgi index b270fc661..b27e722aa 100755 --- a/httemplate/edit/process/cust_main.cgi +++ b/httemplate/edit/process/cust_main.cgi @@ -145,9 +145,9 @@ % my $conf = new FS::Conf; % if ( $conf->exists('backend-realtime') && ! $error ) { % -% my $berror = $new->bill; -% $new->apply_payments_and_credits; -% $berror ||= $new->collect( 'realtime' => 1 ); +% my $berror = $new->bill +% || $new->apply_payments_and_credits +% || $new->collect( 'realtime' => 1 ); % warn "Warning, error billing during backend-realtime: $berror" if $berror; % % } diff --git a/httemplate/misc/bill.cgi b/httemplate/misc/bill.cgi index 8d4b4ac65..1bf1eb11e 100755 --- a/httemplate/misc/bill.cgi +++ b/httemplate/misc/bill.cgi @@ -14,17 +14,24 @@ %#&eidiot($error) if $error; % %unless ( $error ) { -% $cust_main->apply_payments_and_credits; -% -% $error = $cust_main->collect( -% # 'invoice-time'=>$time, -% #'batch_card'=> 'yes', -% #'batch_card'=> 'no', -% #'report_badcard'=> 'yes', -% #'retry_card' => 'yes', -% 'retry' => 'yes', -% 'realtime' => $conf->exists('realtime-backend'), -% ); +% $error = $cust_main->apply_payments_and_credits +% || $cust_main->collect( +% #'invoice-time'=>$time, +% #'batch_card'=> 'yes', +% #'batch_card'=> 'no', +% #'report_badcard'=> 'yes', +% #'retry_card' => 'yes', +% +% 'retry' => 'yes', +% +% #this is used only by cust_main::batch_card +% #need to pick & create an actual config +% #value if we're going to turn this on +% #("realtime-backend" doesn't exist, +% # "backend-realtime" is for something +% # entirely different) +% #'realtime' => $conf->exists('realtime-backend'), +% ); %} %#&eidiot($error) if $error; % @@ -38,4 +45,3 @@ % print $cgi->redirect(popurl(2). "view/cust_main.cgi?$custnum"); %} % - diff --git a/httemplate/misc/process/recharge_svc.html b/httemplate/misc/process/recharge_svc.html index dc9d5ea2d..bc916e5da 100755 --- a/httemplate/misc/process/recharge_svc.html +++ b/httemplate/misc/process/recharge_svc.html @@ -57,7 +57,7 @@ % % my $old_balance = $cust_main->balance; % $error ||= $cust_main->bill; -% $cust_main->apply_payments_and_credits unless $error; +% $error ||= $cust_main->apply_payments_and_credits; % my $bill_error = $cust_main->collect('realtime' => 1) unless $error; % $error ||= "Failed to collect - $bill_error" % if $cust_main->balance > $old_balance && $cust_main->balance > 0 |