=cut
sub CloneBudgetPeriod {
- my ($params) = @_;
- my $budget_period_id = $params->{budget_period_id};
- my $budget_period_startdate = $params->{budget_period_startdate};
- my $budget_period_enddate = $params->{budget_period_enddate};
+ my ($params) = @_;
+ my $budget_period_id = $params->{budget_period_id};
+ my $budget_period_startdate = $params->{budget_period_startdate};
+ my $budget_period_enddate = $params->{budget_period_enddate};
+ my $budget_period_description = $params->{budget_period_description};
my $mark_original_budget_as_inactive =
$params->{mark_original_budget_as_inactive} || 0;
my $reset_all_budgets = $params->{reset_all_budgets} || 0;
my $budget_period = GetBudgetPeriod($budget_period_id);
- $budget_period->{budget_period_startdate} = $budget_period_startdate;
- $budget_period->{budget_period_enddate} = $budget_period_enddate;
+ $budget_period->{budget_period_startdate} = $budget_period_startdate;
+ $budget_period->{budget_period_enddate} = $budget_period_enddate;
+ $budget_period->{budget_period_description} = $budget_period_description;
# The new budget (budget_period) should be active by default
$budget_period->{budget_period_active} = 1;
my $original_budget_period_id = $budget_period->{budget_period_id};
my $tidy_budget =
{ map { join( ' ', @columns ) =~ /$_/ ? ( $_ => $budget->{$_} ) : () }
- keys($budget) };
+ keys %$budget };
my $new_budget_id = AddBudget(
{
%$tidy_budget,
to_budget_period_id => $to_budget_period_id,
});
-Clone a budget hierarchy.
+Move orders from one budget period to another.
=cut
my ($params) = @_;
my $from_budget_period_id = $params->{from_budget_period_id};
my $to_budget_period_id = $params->{to_budget_period_id};
+ my $move_remaining_unspent = $params->{move_remaining_unspent};
return
if not $from_budget_period_id
or not $to_budget_period_id
WHERE ordernumber = ?
|
);
+ my $sth_update_budget_amount = $dbh->prepare(
+ q|
+ UPDATE aqbudgets
+ SET budget_amount = ?
+ WHERE budget_id = ?
+ |
+ );
my $from_budgets = GetBudgetHierarchy($from_budget_period_id);
for my $from_budget (@$from_budgets) {
my $new_budget_id = $dbh->selectcol_arrayref(
push @report,
{
moved => 0,
- budget_code => $from_budget->{budget_code},
+ budget => $from_budget,
error => 'budget_code_not_exists',
};
next;
my @orders_moved;
for my $order (@$orders_to_move) {
$sth_update_aqorders->execute( $new_budget->{budget_id}, $order->{ordernumber} );
- push @orders_moved, $order->{ordernumber};
+ push @orders_moved, $order;
+ }
+
+ my $unspent_moved = 0;
+ if ($move_remaining_unspent) {
+ my $spent = GetBudgetHierarchySpent( $from_budget->{budget_id} );
+ my $unspent = $from_budget->{budget_amount} - $spent;
+ my $new_budget_amount = $new_budget->{budget_amount};
+ if ( $unspent > 0 ) {
+ $new_budget_amount += $unspent;
+ $unspent_moved = $unspent;
+ }
+ $new_budget->{budget_amount} = $new_budget_amount;
+ $sth_update_budget_amount->execute( $new_budget_amount,
+ $new_budget->{budget_id} );
}
push @report,
{
- budget => $new_budget,
+ budget => $new_budget,
orders_moved => \@orders_moved,
moved => 1,
+ unspent_moved => $unspent_moved,
};
}
return \@report;