@@ -, +, @@ GetHierarchy --- C4/Budgets.pm | 43 +++++++++++++++++++++---------------------- 1 file changed, 21 insertions(+), 22 deletions(-) --- a/C4/Budgets.pm +++ a/C4/Budgets.pm @@ -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 --