From 8f3f232175183e117931bb6895cbc2d3dbf64534 Mon Sep 17 00:00:00 2001 From: Marcel de Rooy Date: Wed, 27 Dec 2017 17:04:36 +0100 Subject: [PATCH] Bug 19792: (QA follow-up) Move anonymous sub out of GetHierarchy Test plan: Run t/db_dependent/Budgets.t. Without both patches, running the test is slower than with only the first or both patches. Signed-off-by: Marcel de Rooy Signed-off-by: Jon Knight Signed-off-by: Jonathan Druart --- C4/Budgets.pm | 45 ++++++++++++++++++++++----------------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/C4/Budgets.pm b/C4/Budgets.pm index 6d2718af01..c59d86ad34 100644 --- a/C4/Budgets.pm +++ b/C4/Budgets.pm @@ -573,37 +573,36 @@ sub GetBudgetHierarchy { GROUP BY shipmentcost_budgetid |, 'budget_id'); - my $recursiveAdd; - $recursiveAdd = sub { - my ($budget, $parent) = @_; - - foreach my $child (@{$budget->{children}}){ - $recursiveAdd->($child, $budget); - } - - $budget->{budget_spent} += $hr_budget_spent->{$budget->{budget_id}}->{budget_spent}; - $budget->{budget_spent} += $hr_budget_spent_shipment->{$budget->{budget_id}}->{shipmentcost}; - $budget->{budget_ordered} += $hr_budget_ordered->{$budget->{budget_id}}->{budget_ordered}; - $budget->{budget_ordered} += $hr_budget_ordered_shipment->{$budget->{budget_id}}->{shipmentcost}; - - $budget->{total_spent} += $budget->{budget_spent}; - $budget->{total_ordered} += $budget->{budget_ordered}; - - if ($parent) { - $parent->{total_spent} += $budget->{total_spent}; - $parent->{total_ordered} += $budget->{total_ordered}; - } - }; foreach my $budget (@sort) { if ($budget->{budget_parent_id} == undef) { - $recursiveAdd->($budget); + _recursiveAdd( $budget, undef, $hr_budget_spent, $hr_budget_spent_shipment, $hr_budget_ordered, $hr_budget_ordered_shipment ); } } - return \@sort; } +sub _recursiveAdd { + my ($budget, $parent, $hr_budget_spent, $hr_budget_spent_shipment, $hr_budget_ordered, $hr_budget_ordered_shipment ) = @_; + + foreach my $child (@{$budget->{children}}){ + _recursiveAdd($child, $budget, $hr_budget_spent, $hr_budget_spent_shipment, $hr_budget_ordered, $hr_budget_ordered_shipment ); + } + + $budget->{budget_spent} += $hr_budget_spent->{$budget->{budget_id}}->{budget_spent}; + $budget->{budget_spent} += $hr_budget_spent_shipment->{$budget->{budget_id}}->{shipmentcost}; + $budget->{budget_ordered} += $hr_budget_ordered->{$budget->{budget_id}}->{budget_ordered}; + $budget->{budget_ordered} += $hr_budget_ordered_shipment->{$budget->{budget_id}}->{shipmentcost}; + + $budget->{total_spent} += $budget->{budget_spent}; + $budget->{total_ordered} += $budget->{budget_ordered}; + + if ($parent) { + $parent->{total_spent} += $budget->{total_spent}; + $parent->{total_ordered} += $budget->{total_ordered}; + } +} + # Recursive method to add a budget and its chidren to an array sub _add_budget_children { my $res = shift;