X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=C4%2FBudgets.pm;h=005bba8d176629a9c015c7ce9117a3670a5da066;hb=08c2668ee218e162af099de7dffa724624e04ac5;hp=24c4a90d3a5a97dc8303899466af416f0ceed1a6;hpb=6643b8b9727f1509da13bb9660637288ceb829c5;p=koha.git diff --git a/C4/Budgets.pm b/C4/Budgets.pm index 24c4a90d3a..005bba8d17 100644 --- a/C4/Budgets.pm +++ b/C4/Budgets.pm @@ -13,11 +13,12 @@ package C4::Budgets; # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR # A PARTICULAR PURPOSE. See the GNU General Public License for more details. # -# You should have received a copy of the GNU General Public License along with -# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place, -# Suite 330, Boston, MA 02111-1307 USA +# You should have received a copy of the GNU General Public License along +# with Koha; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. use strict; +#use warnings; FIXME - Bug 2505 use C4::Context; use C4::Dates qw(format_date format_date_in_iso); use C4::SQLHelper qw<:all>; @@ -39,7 +40,9 @@ BEGIN { &ModBudget &DelBudget &GetBudgetSpent + &GetBudgetOrdered &GetPeriodsCount + &GetChildBudgetsSpent &GetBudgetPeriod &GetBudgetPeriods @@ -74,6 +77,10 @@ BEGIN { # ----------------------------BUDGETS.PM-----------------------------"; +=head1 FUNCTIONS ABOUT BUDGETS + +=cut + sub HideCols { my ( $authcat, @hide_cols ) = @_; my $dbh = C4::Context->dbh; @@ -235,7 +242,7 @@ sub GetBudgetsPlanCell { $actual = $sth->fetchrow_array; # get the estimated amount - my $sth = $dbh->prepare( qq| + $sth = $dbh->prepare( qq| SELECT estimated_amount AS estimated, display FROM aqbudgets_planning WHERE budget_period_id = ? AND @@ -300,9 +307,26 @@ sub GetBudgetSpent { my ($budget_id) = @_; my $dbh = C4::Context->dbh; my $sth = $dbh->prepare(qq| - SELECT SUM(ecost * quantity ) AS sum FROM aqorders + SELECT SUM(ecost * quantity) AS sum FROM aqorders + WHERE budget_id = ? AND + quantityreceived > 0 AND + datecancellationprinted IS NULL + |); + + $sth->execute($budget_id); + my $sum = $sth->fetchrow_array; + return $sum; +} + +# ------------------------------------------------------------------- +sub GetBudgetOrdered { + my ($budget_id) = @_; + my $dbh = C4::Context->dbh; + my $sth = $dbh->prepare(qq| + SELECT SUM(ecost * quantity) AS sum FROM aqorders WHERE budget_id = ? AND - datecancellationprinted IS NULL + quantityreceived = 0 AND + datecancellationprinted IS NULL |); $sth->execute($budget_id); @@ -318,6 +342,7 @@ sub GetBudgetPermDropbox { $labels{'1'} = 'Owner'; $labels{'2'} = 'Library'; my $radio = CGI::scrolling_list( + -id => 'budget_permission', -name => 'budget_permission', -values => [ '0', '1', '2' ], -default => $perm, @@ -477,7 +502,7 @@ sub GetBudgetHierarchy { # show only budgets owned by me, my branch or everyone if ($owner) { if ($branchcode) { - push @where_strings,qq{ (budget_owner_id = ? OR budget_branchcode = ? OR (budget_branchcode IS NULL or budget_branchcode="" AND (budget_owner_id IS NULL OR budget_owner_id=""))}; + push @where_strings,qq{ (budget_owner_id = ? OR budget_branchcode = ? OR (budget_branchcode IS NULL or budget_branchcode="" AND (budget_owner_id IS NULL OR budget_owner_id="")))}; push @bind_params, ($owner, $branchcode); } else { push @where_strings, ' (budget_owner_id = ? OR budget_owner_id IS NULL or budget_owner_id ="") '; @@ -489,7 +514,7 @@ sub GetBudgetHierarchy { push @bind_params, $branchcode; } } - $query.=" WHERE ".join(' AND ', @where_strings); + $query.=" WHERE ".join(' AND ', @where_strings) if @where_strings; $debug && warn $query,join(",",@bind_params); my $sth = $dbh->prepare($query); $sth->execute(@bind_params); @@ -517,8 +542,8 @@ sub GetBudgetHierarchy { } # look for top parents 1st - my @sort; - my ($i, $depth_count) = 0; + my (@sort, $depth_count); + ($i, $depth_count) = 0; while (1) { my $children = 0; foreach my $r (@res) { @@ -568,7 +593,7 @@ sub GetBudgetHierarchy { $moo =~ s/\ /\ \;/g; $r->{'budget_code_indent'} = $moo; - my $moo = $r->{'budget_name_indent'}; + $moo = $r->{'budget_name_indent'}; $moo =~ s/\ /\ \;/g; $r->{'budget_name_indent'} = $moo; @@ -611,31 +636,19 @@ sub DelBudget { return $rc; } -=back - -=head2 FUNCTIONS ABOUT BUDGETS -=over 2 +=head2 GetBudget -=cut - -=head3 GetBudget - -=over 4 - -&GetBudget($budget_id); + &GetBudget($budget_id); get a specific budget -=back - =cut # ------------------------------------------------------------------- sub GetBudget { my ( $budget_id ) = @_; my $dbh = C4::Context->dbh; - my $query; my $query = " SELECT * FROM aqbudgets @@ -647,29 +660,52 @@ sub GetBudget { return $result; } -=head3 GetBudgets - -=over 4 +=head2 GetBudgets -&GetBudgets($filter, $order_by); + &GetBudgets($filter, $order_by); gets all budgets -=back +=cut + +# ------------------------------------------------------------------- +sub GetChildBudgetsSpent { + my ( $budget_id ) = @_; + my $dbh = C4::Context->dbh; + my $query = " + SELECT * + FROM aqbudgets + WHERE budget_parent_id=? + "; + my $sth = $dbh->prepare($query); + $sth->execute( $budget_id ); + my $result = $sth->fetchall_arrayref({}); + my $total_spent = GetBudgetSpent($budget_id); + if ($result){ + $total_spent += GetChildBudgetsSpent($_->{"budget_id"}) foreach @$result; + } + return $total_spent; +} + +=head2 GetChildBudgetsSpent + + &GetChildBudgetsSpent($budget-id); + +gets the total spent of the level and sublevels of $budget_id =cut # ------------------------------------------------------------------- sub GetBudgets { my ($filters,$orderby) = @_; - return SearchInTable("aqbudgetperiods",$filters, $orderby, undef,undef, undef, "wide"); + return SearchInTable("aqbudgets",$filters, $orderby, undef,undef, undef, "wide"); } # ------------------------------------------------------------------- -=head3 GetCurrencies +=head2 GetCurrencies -@currencies = &GetCurrencies; + @currencies = &GetCurrencies; Returns the list of all known currencies. @@ -705,7 +741,7 @@ sub GetCurrency { return $r; } -=head3 ModCurrencies +=head2 ModCurrencies &ModCurrencies($currency, $newrate); @@ -726,15 +762,14 @@ sub ModCurrencies { # ------------------------------------------------------------------- -=head3 ConvertCurrency +=head2 ConvertCurrency -$foreignprice = &ConvertCurrency($currency, $localprice); + $foreignprice = &ConvertCurrency($currency, $localprice); Converts the price C<$localprice> to foreign currency C<$currency> by dividing by the exchange rate, and returns the result. -If no exchange rate is found,e is one -to one. +If no exchange rate is found, e is one to one. =cut @@ -755,9 +790,12 @@ sub ConvertCurrency { return ( $price / $cur ); } -=item - returns an array containing fieldname followed by PRI as value if PRIMARY Key +=head2 _columns + +returns an array containing fieldname followed by PRI as value if PRIMARY Key + =cut + sub _columns(;$) { my $tablename=shift||"aqbudgets"; return @{C4::Context->dbh->selectcol_arrayref("SHOW columns from $tablename",{Columns=>[1,4]})}; @@ -788,10 +826,8 @@ END { } # module clean-up code here (global destructor) 1; __END__ -=back - =head1 AUTHOR -Koha Developement team +Koha Development Team =cut