Bug 11675: check allocated total correctly when editing a fund that has a parent...
authorJonathan Druart <jonathan.druart@biblibre.com>
Tue, 4 Feb 2014 11:15:42 +0000 (12:15 +0100)
committerKyle M Hall <kyle@bywatersolutions.com>
Fri, 6 Jun 2014 13:14:12 +0000 (09:14 -0400)
The sth was created before the query.
The query was modified after the sth creation and an error was raised.

Test plan:
0/ Don't apply the patch
1/ Create a budget A (amount=1000)
2/ Create a fund A1 (amount=1000)
3/ Create a child fund A11 (amount=1000)
4/ Edit A11 and change the amount to 2000
You are able to do it, an error appears in the Koha log:
  "check_parent_total.pl: DBD::mysql::st execute failed: called with 2 bind
  variables when 1 are needed"
5/ Apply the patch, edit A11 and save. You get an error
6/ Edit A11 and change the amount to <=1000
7/ Verify that there is no regression on adding/removing/editing budgets
and funds.

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Passes all tests and QA script.
Works as described, no regressions found.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
(cherry picked from commit 331ca7df3ec351a83982496bed7f103050e89af5)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
(cherry picked from commit 098ffcdd9ad10307ab63ea49b05c474263561992)

admin/check_parent_total.pl

index 653a9f2..83fecc2 100755 (executable)
@@ -61,19 +61,12 @@ my ($sub_unalloc , $period_sum, $budget_period_unalloc);
 
 if ($parent) {
     my $query = "  SELECT SUM(budget_amount) as sum FROM aqbudgets where budget_parent_id = ? ";
-    my $sth   = $dbh->prepare($query);
     my @sql_params;
-    push @sql_params, $parent->{'budget_id'} ;
-    if ($budget_id){
-        $query.=qq| and budget_id <> ? |;
-        push @sql_params,$budget_id;
-    }
-    $sth->execute( @sql_params );
+    my $sth   = $dbh->prepare($query);
+    $sth->execute( $parent->{'budget_id'} );
     my $sum = $sth->fetchrow_hashref;
     $sth->finish;
-    
     $sub_unalloc = $parent->{'budget_amount'} - $sum->{sum};
-        
 #    TRICKY.. , IF THE PARENT IS THE CURRENT PARENT  - THEN SUBSTRACT CURRENT BUDGET FROM TOTAL
     $sub_unalloc           += $budget->{'budget_amount'} if ( $budget->{'budget_parent_id'} == $parent_id ) ;
 }