Bug 19792: (QA follow-up) Move anonymous sub out of GetHierarchy
authorMarcel de Rooy <m.de.rooy@rijksmuseum.nl>
Wed, 27 Dec 2017 16:04:36 +0000 (17:04 +0100)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Fri, 11 May 2018 13:52:46 +0000 (10:52 -0300)
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 <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Jon Knight <J.P.Knight@lboro.ac.uk>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
C4/Budgets.pm

index 6d2718a..c59d86a 100644 (file)
@@ -573,35 +573,34 @@ sub GetBudgetHierarchy {
         GROUP BY shipmentcost_budgetid
         |, 'budget_id');
 
-    my $recursiveAdd;
-    $recursiveAdd = sub {
-        my ($budget, $parent) = @_;
 
-        foreach my $child (@{$budget->{children}}){
-            $recursiveAdd->($child, $budget);
+    foreach my $budget (@sort) {
+        if ($budget->{budget_parent_id} == undef) {
+            _recursiveAdd( $budget, undef, $hr_budget_spent, $hr_budget_spent_shipment, $hr_budget_ordered, $hr_budget_ordered_shipment );
         }
+    }
+    return \@sort;
+}
 
-        $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};
+sub _recursiveAdd {
+    my ($budget, $parent, $hr_budget_spent, $hr_budget_spent_shipment, $hr_budget_ordered, $hr_budget_ordered_shipment ) = @_;
 
-        $budget->{total_spent} += $budget->{budget_spent};
-        $budget->{total_ordered} += $budget->{budget_ordered};
+    foreach my $child (@{$budget->{children}}){
+        _recursiveAdd($child, $budget, $hr_budget_spent, $hr_budget_spent_shipment, $hr_budget_ordered, $hr_budget_ordered_shipment );
+    }
 
-        if ($parent) {
-            $parent->{total_spent} += $budget->{total_spent};
-            $parent->{total_ordered} += $budget->{total_ordered};
-        }
-    };
+    $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};
 
-    foreach my $budget (@sort) {
-        if ($budget->{budget_parent_id} == undef) {
-            $recursiveAdd->($budget);
-        }
-    }
+    $budget->{total_spent} += $budget->{budget_spent};
+    $budget->{total_ordered} += $budget->{budget_ordered};
 
-    return \@sort;
+    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