From: ivan Date: Sat, 10 Jul 2004 14:46:17 +0000 (+0000) Subject: fix edge case avoiding erronous decline/cancel when customer has a negative balance... X-Git-Tag: BEFORE_FINAL_MASONIZE~982 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=4c4b99f655084122e9b55222dae3e94757b78cae fix edge case avoiding erronous decline/cancel when customer has a negative balance & purchases stuff with it --- diff --git a/FS/FS/ClientAPI/MyAccount.pm b/FS/FS/ClientAPI/MyAccount.pm index ceb1e65e7..f51174e5d 100644 --- a/FS/FS/ClientAPI/MyAccount.pm +++ b/FS/FS/ClientAPI/MyAccount.pm @@ -555,7 +555,8 @@ sub order_pkg { $cust_main->apply_credits; $bill_error = $cust_main->collect; - if ( $cust_main->balance > $old_balance + if ( $cust_main->balance > $old_balance + && $cust_main->balance > 0 && $cust_main->payby !~ /^(BILL|DCRD|DCHK)$/ ) { #this makes sense. credit is "un-doing" the invoice $cust_main->credit( sprintf("%.2f", $cust_main->balance - $old_balance ), @@ -563,7 +564,7 @@ sub order_pkg { $cust_main->apply_credits( 'order' => 'newest' ); $cust_pkg->cancel('quiet'=>1); - return { 'error' => '_decline' }; + return { 'error' => '_decline', 'bill_error' => $bill_error }; } else { $cust_pkg->reexport; }