From 36dbf6ba8050ba1d633a362fa44b38c6d26c3fd5 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Thu, 10 Apr 2014 13:43:00 +0200 Subject: [PATCH] Bug 12164: On cloning budget period, mark original budget as inactive This patch adds a checkbox "mark original budget as inactive" (budget period). If it is checked, the original budget will be marked as inactive. --- C4/Budgets.pm | 22 ++++++++++-- admin/aqbudgetperiods.pl | 2 ++ .../prog/en/modules/admin/aqbudgetperiods.tt | 5 +++ t/db_dependent/Budgets.t | 35 ++++++++++++++++++-- 4 files changed, 60 insertions(+), 4 deletions(-) diff --git a/C4/Budgets.pm b/C4/Budgets.pm index 6086bdb..dc6de5a 100644 --- a/C4/Budgets.pm +++ b/C4/Budgets.pm @@ -986,10 +986,13 @@ sub ConvertCurrency { my $new_budget_period_id = CloneBudgetPeriod({ budget_period_id => $budget_period_id, budget_period_startdate => $budget_period_startdate; - $budget_period_enddate => $budget_period_enddate; + budget_period_enddate => $budget_period_enddate; + mark_original_budget_as_inactive => 1 }); Clone a budget period with all budgets. +If the mark_origin_budget_as_inactive is set (0 by default), +the original budget will be marked as inactive. =cut @@ -998,6 +1001,8 @@ sub CloneBudgetPeriod { 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 $mark_original_budget_as_inactive = + $params->{mark_original_budget_as_inactive} || 0; my $budget_period = GetBudgetPeriod($budget_period_id); @@ -1009,8 +1014,21 @@ sub CloneBudgetPeriod { my $budgets = GetBudgetHierarchy($budget_period_id); CloneBudgetHierarchy( - { budgets => $budgets, new_budget_period_id => $new_budget_period_id } + { + budgets => $budgets, + new_budget_period_id => $new_budget_period_id + } ); + + if ($mark_original_budget_as_inactive) { + ModBudgetPeriod( + { + budget_period_id => $budget_period_id, + budget_period_active => 0, + } + ); + } + return $new_budget_period_id; } diff --git a/admin/aqbudgetperiods.pl b/admin/aqbudgetperiods.pl index a59e311..a62deb2 100755 --- a/admin/aqbudgetperiods.pl +++ b/admin/aqbudgetperiods.pl @@ -185,12 +185,14 @@ elsif ( $op eq 'duplicate_budget' ){ my $budget_period_startdate = $input->param('budget_period_startdate'); my $budget_period_enddate = $input->param('budget_period_enddate'); + my $mark_original_budget_as_inactive = $input->param('mark_original_budget_as_inactive'); my $new_budget_period_id = C4::Budgets::CloneBudgetPeriod( { budget_period_id => $budget_period_id, budget_period_startdate => $budget_period_startdate, budget_period_enddate => $budget_period_enddate, + mark_original_budget_as_inactive => $mark_original_budget_as_inactive, } ); diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/aqbudgetperiods.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/aqbudgetperiods.tt index 9bcf311..0f4bca6 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/aqbudgetperiods.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/aqbudgetperiods.tt @@ -185,6 +185,11 @@
[% INCLUDE 'date-format.inc' %]
+
  • + + +
  • + diff --git a/t/db_dependent/Budgets.t b/t/db_dependent/Budgets.t index 902e348..882c12c 100755 --- a/t/db_dependent/Budgets.t +++ b/t/db_dependent/Budgets.t @@ -1,5 +1,5 @@ use Modern::Perl; -use Test::More tests => 25; +use Test::More tests => 29; BEGIN {use_ok('C4::Budgets') } use C4::Biblio; @@ -336,7 +336,38 @@ is( is_deeply( _get_dependencies($budget_hierarchy), _get_dependencies($budget_hierarchy_cloned), - 'CloneBudgetPeriod keep the same dependencies order' + 'CloneBudgetPeriod keeps the same dependencies order' +); + +# CloneBudgetPeriod with param mark_original_budget_as_inactive +my $budget_period = C4::Budgets::GetBudgetPeriod($budget_period_id); +is( $budget_period->{budget_period_active}, 1, + 'CloneBudgetPeriod does not mark as inactive the budgetperiod if not needed' +); + +$budget_period_id_cloned = C4::Budgets::CloneBudgetPeriod( + { + budget_period_id => $budget_period_id, + budget_period_startdate => '2014-01-01', + budget_period_enddate => '2014-12-31', + mark_original_budget_as_inactive => 1, + } +); + +$budget_hierarchy = GetBudgetHierarchy($budget_period_id); +$budget_hierarchy_cloned = GetBudgetHierarchy($budget_period_id_cloned); + +is( scalar(@$budget_hierarchy_cloned), scalar(@$budget_hierarchy), +'CloneBudgetPeriod (with inactive param) clones the same number of budgets (funds)' +); +is_deeply( + _get_dependencies($budget_hierarchy), + _get_dependencies($budget_hierarchy_cloned), + 'CloneBudgetPeriod (with inactive param) keeps the same dependencies order' +); +$budget_period = C4::Budgets::GetBudgetPeriod($budget_period_id); +is( $budget_period->{budget_period_active}, 0, + 'CloneBudgetPeriod (with inactive param) marks as inactive the budgetperiod' ); sub _get_dependencies { -- 1.7.10.4