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>
$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);
}
}