From ba689152e431217c8dd02d6ce0b8d14ae8d9f5da Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Thu, 30 Jan 2014 12:39:19 -0500 Subject: [PATCH] Bug 11644: fix occasional failure to update fund amount due to floating-point math When attempting to update a fund, if the amount unalloccated for the fund is equal to the total, you can be prevented from saving. This is due to imprecise floating point number comparison in check_parent_total.pl Test Plan: 1) Create a fund where the amount unallocated is equal to the amount unallocated for the budget period 2) Edit the fund, attempt to change the name of the fund 3) Note you recieve an error and cannot save 4) Apply this patch 5) Repeat step 2 6) Note you can now update the fund Signed-off-by: Sean McGarvey Signed-off-by: Jonathan Druart Signed-off-by: Galen Charlton --- admin/check_parent_total.pl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/admin/check_parent_total.pl b/admin/check_parent_total.pl index f0f8c9b85a..653a9f2b0b 100755 --- a/admin/check_parent_total.pl +++ b/admin/check_parent_total.pl @@ -96,6 +96,10 @@ else { $budget_period_unalloc = $period->{'budget_period_total'} - $period_sum->{'sum'} if $period->{'budget_period_total'}; } +$total = sprintf( "%.2f", $total ); +$sub_unalloc = sprintf( "%.2f", $sub_unalloc ); +$budget_period_unalloc = sprintf( "%.2f", $budget_period_unalloc ); + if ( $parent_id) { if ( ($total > $sub_unalloc ) && $sub_unalloc ) { $returncode = 1; -- 2.39.5