LP#1689656: Adjust to zero on negative balance
authorJeff Davis <jdavis@sitka.bclibraries.ca>
Tue, 9 May 2017 21:17:29 +0000 (14:17 -0700)
committerDan Wells <dbw2@calvin.edu>
Thu, 20 Jul 2017 22:11:35 +0000 (18:11 -0400)
Adjust to zero was not actually adjusting to zero on negative balances
in at least some cases.  This patch corrects that behavior.

Test plan:

[1] Generate multiple overdue billings on an overdue circ.
[2] Apply a payment (cash or forgive) to resolve the overdue billings.
[3] Checkin the item using backdated checkin or amnesty mode, such that
    the overdue billings are automatically voided, resulting in a
    negative balance.
[4] Adjust to zero.  A single new manual adjustment billing is created,
    reinstating one overdue billing, and then the adjust-to-zero process
    exits.  The negative balance has been reduced by the amount of one
    overdue billing, rather than being fully adjusted to zero.
[5] Apply the patch and restart services.
[6] Repeat steps 1-3 with a new circulation.
[7] Adjust to zero.  This time, the balance should be correctly adjusted
    to zero, instead of exiting prematurely with an outstanding
    negative balance.

Signed-off-by: Jeff Davis <jdavis@sitka.bclibraries.ca>
Signed-off-by: Dan Wells <dbw2@calvin.edu>
Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Money.pm

index 22d37a9..c434b15 100644 (file)
@@ -981,7 +981,7 @@ sub _rebill_xact {
         $rebill_amount += $billing->amount;
 
         # if we have a postive (or zero) balance now, stop
-        last if $rebill_amount >= $xact_balance;
+        last if ($xact_balance + $rebill_amount >= 0);
     }
 }