# 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>;
&ModBudget
&DelBudget
&GetBudgetSpent
+ &GetBudgetOrdered
&GetPeriodsCount
+ &GetChildBudgetsSpent
&GetBudgetPeriod
&GetBudgetPeriods
# ----------------------------BUDGETS.PM-----------------------------";
+=head1 FUNCTIONS ABOUT BUDGETS
+
+=cut
+
sub HideCols {
my ( $authcat, @hide_cols ) = @_;
my $dbh = C4::Context->dbh;
$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
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);
$labels{'1'} = 'Owner';
$labels{'2'} = 'Library';
my $radio = CGI::scrolling_list(
+ -id => 'budget_permission',
-name => 'budget_permission',
-values => [ '0', '1', '2' ],
-default => $perm,
# -------------------------------------------------------------------
sub GetBudgetPeriods {
my ($filters,$orderby) = @_;
- return SearchInTable("aqbudgetperiods",$filters, $orderby);
+ return SearchInTable("aqbudgetperiods",$filters, $orderby, undef,undef, undef, "wide");
}
# -------------------------------------------------------------------
sub GetBudgetPeriod {
# 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 ="") ';
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);
}
# 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) {
# add indent
my $depth = $r->{depth} * 2;
- my $space = pack "A[$depth]";
- $r->{budget_code_indent} = $space . $r->{budget_code};
- $r->{budget_name_indent} = $space . $r->{budget_name};
+ $r->{budget_code_indent} = $r->{budget_code};
+ $r->{budget_name_indent} = $r->{budget_name};
foreach my $r3 (@sort) {
if ($r3->{budget_id} == $r->{budget_parent_id}) {
$parent = $i2;
$r->{budget_code_indent} = $r->{budget_code};
$r->{budget_name_indent} = $r->{budget_name};
}
-
+
if (defined $parent) {
splice @sort, ($parent + 1), 0, $r;
} else {
$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;
$r->{'budget_spent'} = GetBudgetSpent( $r->{'budget_id'} );
- $r->{'budget_amount_total'} = $r->{'budget_amount'} + $r->{'budget_amount_sublevel'} ;
+ $r->{'budget_amount_total'} = $r->{'budget_amount'};
# foreach sub-levels
my $unalloc_count ;
my $sub_budget = GetBudget($sub);
$r->{budget_spent_sublevel} += GetBudgetSpent( $sub_budget->{'budget_id'} );
- $unalloc_count += $sub_budget->{'budget_amount'} + $sub_budget->{'budget_amount_sublevel'};
+ $unalloc_count += $sub_budget->{'budget_amount'};
}
-
- $r->{budget_unalloc_sublevel} = $r->{'budget_amount_sublevel'} - $unalloc_count;
-
- if ( scalar @subs_arr == 0 && $r->{budget_amount_sublevel} > 0 ) {
- $r->{warn_no_subs} = 1;
- }
}
return \@sort;
}
return $rc;
}
-=back
-
-=head2 FUNCTIONS ABOUT BUDGETS
-
-=over 2
-
-=cut
-
-=head3 GetBudget
-=over 4
+=head2 GetBudget
-&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
return $result;
}
-=head3 GetBudgets
+=head2 GetBudgets
-=over 4
-
-&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("aqbudgets",$filters,$orderby);
+ return SearchInTable("aqbudgets",$filters, $orderby, undef,undef, undef, "wide");
}
# -------------------------------------------------------------------
-=head3 GetCurrencies
+=head2 GetCurrencies
-@currencies = &GetCurrencies;
+ @currencies = &GetCurrencies;
Returns the list of all known currencies.
return $r;
}
-=head3 ModCurrencies
+=head2 ModCurrencies
&ModCurrencies($currency, $newrate);
# -------------------------------------------------------------------
-=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
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]})};
1;
__END__
-=back
-
=head1 AUTHOR
-Koha Developement team <info@koha.org>
+Koha Development Team <http://koha-community.org/>
=cut