From: Jeff Godin Date: Tue, 12 Jun 2012 17:40:46 +0000 (-0400) Subject: Improve float avoidance in outstanding bills X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=refs%2Fheads%2Ftadl%2Flost_forgive_not_void_on_checkin;p=evergreen%2Ftadl.git Improve float avoidance in outstanding bills Simplify and improve floating point issue avoidance in outstanding_bills_for_circ: fewer parentheses, better results. Signed-off-by: Jeff Godin --- diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/AppUtils.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/AppUtils.pm index 70f961663e..88d786aecd 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/AppUtils.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/AppUtils.pm @@ -1827,16 +1827,16 @@ sub outstanding_bills_for_circ { # adjusting the amount for partially paid bills map { my $payment = $_; - my $paybal = $payment->amount; + my $paybal = $payment->amount * 100; while ($paybal > 0) { # get next billing my $bill = shift @{$bills}; - my $newbal = (($paybal*100) - ($bill->amount*100))/100; + my $newbal = $paybal - $bill->amount*100; if ($newbal < 0) { $newbal = 0; - my $new_bill_amount = (($bill->amount*100) - ($paybal*100))/100; - $bill->amount($new_bill_amount); + my $new_bill_amount = $bill->amount*100 - $paybal; + $bill->amount($new_bill_amount/100); unshift(@{$bills}, $bill); # put the partially-paid bill back on top of the stack }