Bug 11644: fix occasional failure to update fund amount due to floating-point math
authorKyle M Hall <kyle@bywatersolutions.com>
Thu, 30 Jan 2014 17:39:19 +0000 (12:39 -0500)
committerGalen Charlton <gmc@esilibrary.com>
Wed, 19 Feb 2014 20:04:19 +0000 (20:04 +0000)
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 <smcgarvey@pascocountyfl.net>
Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
admin/check_parent_total.pl

index f0f8c9b..653a9f2 100755 (executable)
@@ -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;