From a96c8582fd399e96e601c43c17634706da08699d Mon Sep 17 00:00:00 2001 From: Michele Morgan Date: Fri, 20 Dec 2019 16:00:08 -0500 Subject: [PATCH] LP1781274 Fix floating point issue preventing transactions from closing Paying multiple bills with a single payment can lead to some transactions not closing because of floating point math inaccuracies. This branch resolves the issue by limiting pending payment amounts to 2 decimal places. The bug can be reproduced using grocery bills as follows. Retrieve a patron that owes no money. Add a billing of $.90 Add a billing of $.10 Select both billings Enter $1 in payment received and Apply the payment Click on History in the billings screen. Turn on the Total Billed and Transaction Finish Time column and note that the $.10 bill has zero balance owed, but does not have a transaction finish time. To test: Use the steps above to reproduce, noting the lack of Transaction Finish Time. Apply the patch. Use the same steps above and note that the post patch payments resulted in both transactions getting a Transaction Finish Time. Signed-off-by: Michele Morgan Signed-off-by: Terran McCanna Signed-off-by: Jason Stephenson --- Open-ILS/web/js/ui/default/staff/circ/patron/bills.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Open-ILS/web/js/ui/default/staff/circ/patron/bills.js b/Open-ILS/web/js/ui/default/staff/circ/patron/bills.js index a0dd979a16..b741359a4e 100644 --- a/Open-ILS/web/js/ui/default/staff/circ/patron/bills.js +++ b/Open-ILS/web/js/ui/default/staff/circ/patron/bills.js @@ -358,7 +358,8 @@ function($scope , $q , $routeParams , egCore , egConfirmDialog , $location, // balance owed on the current item matches or exceeds // the pending payment. Apply the full remainder of // the payment to this item.. and we're done. - item.payment_pending = payment_amount; + // Limit to two decimal places to avoid floating point issues + item.payment_pending = payment_amount.toFixed(2); break; } } -- 2.11.0