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>;
+use Koha::Database;
use C4::Debug;
-
use vars qw($VERSION @ISA @EXPORT);
BEGIN {
&GetBudgetOrdered
&GetBudgetName
&GetPeriodsCount
- &GetChildBudgetsSpent
+ GetBudgetHierarchySpent
+ GetBudgetHierarchyOrdered
&GetBudgetUsers
&ModBudgetUsers
sub AddBudgetPeriod {
my ($budgetperiod) = @_;
- return InsertInTable("aqbudgetperiods",$budgetperiod);
+ return unless($budgetperiod->{budget_period_startdate} && $budgetperiod->{budget_period_enddate});
+
+ my $resultset = Koha::Database->new()->schema->resultset('Aqbudgetperiod');
+ return $resultset->create($budgetperiod)->id;
}
# -------------------------------------------------------------------
sub GetPeriodsCount {
# -------------------------------------------------------------------
sub GetBudgetPeriods {
my ($filters,$orderby) = @_;
- return SearchInTable("aqbudgetperiods",$filters, $orderby, undef,undef, undef, "wide");
+
+ my $rs = Koha::Database->new()->schema->resultset('Aqbudgetperiod');
+ $rs = $rs->search( $filters, { order_by => $orderby } );
+ $rs->result_class('DBIx::Class::ResultClass::HashRefInflator');
+ return [ $rs->all ];
}
# -------------------------------------------------------------------
sub GetBudgetPeriod {
# -------------------------------------------------------------------
sub ModBudgetPeriod {
- my ($budget_period_information) = @_;
- return UpdateInTable("aqbudgetperiods",$budget_period_information);
+ my ($budget_period) = @_;
+ my $result = Koha::Database->new()->schema->resultset('Aqbudgetperiod')->find($budget_period);
+ return unless($result);
+
+ $result = $result->update($budget_period);
+ return $result->in_storage;
}
# -------------------------------------------------------------------
last if $children == 0;
}
-# add budget-percent and allocation, and flags for html-template
- foreach my $r (@sort) {
- my $subs_href = $r->{'child'};
- my @subs_arr = ();
- if ( defined $subs_href ) {
- @subs_arr = @{$subs_href};
- }
- my $moo = $r->{'budget_code_indent'};
- $moo =~ s/\ /\ \;/g;
- $r->{'budget_code_indent'} = $moo;
-
- $moo = $r->{'budget_name_indent'};
- $moo =~ s/\ /\ \;/g;
- $r->{'budget_name_indent'} = $moo;
-
- $r->{'budget_spent'} = GetBudgetSpent( $r->{'budget_id'} );
- $r->{budget_ordered} = GetBudgetOrdered( $r->{budget_id} );
-
- $r->{budget_spent_sublevels} = 0;
- $r->{budget_ordered_sublevels} = 0;
- # foreach sub-levels
- foreach my $sub (@subs_arr) {
- my $sub_budget = GetBudget($sub);
- $r->{budget_spent_sublevels} += GetBudgetSpent( $sub_budget->{'budget_id'} );
- $r->{budget_ordered_sublevels} += GetBudgetOrdered($sub);
- }
- }
- return \@sort;
+ foreach my $budget (@sort) {
+ $budget->{budget_spent} = GetBudgetSpent( $budget->{budget_id} );
+ $budget->{budget_ordered} = GetBudgetOrdered( $budget->{budget_id} );
+ $budget->{total_spent} = GetBudgetHierarchySpent( $budget->{budget_id} );
+ $budget->{total_ordered} = GetBudgetHierarchyOrdered( $budget->{budget_id} );
+ }
+ return \@sort;
}
# -------------------------------------------------------------------
sub AddBudget {
my ($budget) = @_;
- return InsertInTable("aqbudgets",$budget);
+ return unless ($budget);
+
+ my $resultset = Koha::Database->new()->schema->resultset('Aqbudget');
+ return $resultset->create($budget)->id;
}
# -------------------------------------------------------------------
sub ModBudget {
my ($budget) = @_;
- return UpdateInTable("aqbudgets",$budget);
+ my $result = Koha::Database->new()->schema->resultset('Aqbudget')->find($budget);
+ return unless($result);
+
+ $result = $result->update($budget);
+ return $result->in_storage;
}
# -------------------------------------------------------------------
return $sth->fetchrow_hashref;
}
-=head2 GetChildBudgetsSpent
+=head2 GetBudgetHierarchySpent
- &GetChildBudgetsSpent($budget-id);
+ my $spent = GetBudgetHierarchySpent( $budget_id );
-gets the total spent of the level and sublevels of $budget_id
+Gets the total spent of the level and sublevels of $budget_id
=cut
-# -------------------------------------------------------------------
-sub GetChildBudgetsSpent {
+sub GetBudgetHierarchySpent {
my ( $budget_id ) = @_;
my $dbh = C4::Context->dbh;
- my $query = "
- SELECT *
+ my $children_ids = $dbh->selectcol_arrayref(q|
+ SELECT budget_id
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;
+ WHERE budget_parent_id = ?
+ |, {}, $budget_id );
+
+ my $total_spent = GetBudgetSpent( $budget_id );
+ for my $child_id ( @$children_ids ) {
+ $total_spent += GetBudgetHierarchySpent( $child_id );
}
return $total_spent;
}
+=head2 GetBudgetHierarchyOrdered
+
+ my $ordered = GetBudgetHierarchyOrdered( $budget_id );
+
+Gets the total ordered of the level and sublevels of $budget_id
+
+=cut
+
+sub GetBudgetHierarchyOrdered {
+ my ( $budget_id ) = @_;
+ my $dbh = C4::Context->dbh;
+ my $children_ids = $dbh->selectcol_arrayref(q|
+ SELECT budget_id
+ FROM aqbudgets
+ WHERE budget_parent_id = ?
+ |, {}, $budget_id );
+
+ my $total_ordered = GetBudgetOrdered( $budget_id );
+ for my $child_id ( @$children_ids ) {
+ $total_ordered += GetBudgetHierarchyOrdered( $child_id );
+ }
+ return $total_ordered;
+}
+
=head2 GetBudgets
&GetBudgets($filter, $order_by);
# -------------------------------------------------------------------
sub GetBudgets {
- my $filters = shift;
- my $orderby = shift || 'budget_name';
- return SearchInTable("aqbudgets",$filters, $orderby, undef,undef, undef, "wide");
+ my ($filters, $orderby) = @_;
+ $orderby = 'budget_name' unless($orderby);
+
+ my $rs = Koha::Database->new()->schema->resultset('Aqbudget');
+ $rs = $rs->search( $filters, { order_by => $orderby } );
+ $rs->result_class('DBIx::Class::ResultClass::HashRefInflator');
+ return [ $rs->all ];
}
=head2 GetBudgetUsers