X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;ds=sidebyside;f=admin%2Fcheck_parent_total.pl;h=cd3678b389ae7a918722f632a50759485dfba5bc;hb=5d6c092921919526ade501facb1220f8a108a08f;hp=76b3e9a60da3f53d282f525bc08aa2086551c5f2;hpb=c9ba8c899d854d4190df783f3f1aec2989d2cb10;p=koha_fer diff --git a/admin/check_parent_total.pl b/admin/check_parent_total.pl index 76b3e9a60d..cd3678b389 100755 --- a/admin/check_parent_total.pl +++ b/admin/check_parent_total.pl @@ -25,7 +25,7 @@ use C4::Output; use C4::Auth; use C4::Budgets; -=head1 +=head1 DESCRIPTION This script checks the amount unallocated from the new parent budget , or the period - if no parent_id is given @@ -61,13 +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 @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 ) ; } @@ -75,15 +74,29 @@ if ($parent) { # ELSE , IF NO PARENT PASSED, THEN CHECK UNALLOCATED FOR PERIOD, IF NOT THEN RETURN 2 else { my $query = qq| SELECT SUM(budget_amount) as sum - FROM aqbudgets WHERE budget_period_id = ?|; + FROM aqbudgets WHERE budget_period_id = ? and budget_parent_id IS NULL |; + my @sql_params; + push @sql_params, $period_id; + if ($budget_id){ + $query.=qq| and budget_id <> ? |; + push @sql_params,$budget_id; + } - my $sth = $dbh->prepare($query); - $sth->execute( $period_id ); + my $sth = $dbh->prepare($query); + $sth->execute(@sql_params); $period_sum = $sth->fetchrow_hashref; $sth->finish; $budget_period_unalloc = $period->{'budget_period_total'} - $period_sum->{'sum'} if $period->{'budget_period_total'}; } +# FIXME - we really need a better way to do this consistently +# and across the board, be it bigints, Math::FixedPoint, a +# modernized version of Math::Curency that isn't tied to the system +# locale, or something else. +$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; @@ -95,7 +108,6 @@ if ( $parent_id) { $returncode = 0; } -$template->param( return => $returncode ); -output_html_with_http_headers $input, $cookie, $template->output; +output_html_with_http_headers $input, $cookie, $returncode; 1;