Lines 573-607
sub GetBudgetHierarchy {
Link Here
|
573 |
GROUP BY shipmentcost_budgetid |
573 |
GROUP BY shipmentcost_budgetid |
574 |
|, 'budget_id'); |
574 |
|, 'budget_id'); |
575 |
|
575 |
|
576 |
my $recursiveAdd; |
|
|
577 |
$recursiveAdd = sub { |
578 |
my ($budget, $parent) = @_; |
579 |
|
576 |
|
580 |
foreach my $child (@{$budget->{children}}){ |
577 |
foreach my $budget (@sort) { |
581 |
$recursiveAdd->($child, $budget); |
578 |
if ($budget->{budget_parent_id} == undef) { |
|
|
579 |
_recursiveAdd( $budget, undef, $hr_budget_spent, $hr_budget_spent_shipment, $hr_budget_ordered, $hr_budget_ordered_shipment ); |
582 |
} |
580 |
} |
|
|
581 |
} |
582 |
return \@sort; |
583 |
} |
583 |
|
584 |
|
584 |
$budget->{budget_spent} += $hr_budget_spent->{$budget->{budget_id}}->{budget_spent}; |
585 |
sub _recursiveAdd { |
585 |
$budget->{budget_spent} += $hr_budget_spent_shipment->{$budget->{budget_id}}->{shipmentcost}; |
586 |
my ($budget, $parent, $hr_budget_spent, $hr_budget_spent_shipment, $hr_budget_ordered, $hr_budget_ordered_shipment ) = @_; |
586 |
$budget->{budget_ordered} += $hr_budget_ordered->{$budget->{budget_id}}->{budget_ordered}; |
|
|
587 |
$budget->{budget_ordered} += $hr_budget_ordered_shipment->{$budget->{budget_id}}->{shipmentcost}; |
588 |
|
587 |
|
589 |
$budget->{total_spent} += $budget->{budget_spent}; |
588 |
foreach my $child (@{$budget->{children}}){ |
590 |
$budget->{total_ordered} += $budget->{budget_ordered}; |
589 |
_recursiveAdd($child, $budget, $hr_budget_spent, $hr_budget_spent_shipment, $hr_budget_ordered, $hr_budget_ordered_shipment ); |
|
|
590 |
} |
591 |
|
591 |
|
592 |
if ($parent) { |
592 |
$budget->{budget_spent} += $hr_budget_spent->{$budget->{budget_id}}->{budget_spent}; |
593 |
$parent->{total_spent} += $budget->{total_spent}; |
593 |
$budget->{budget_spent} += $hr_budget_spent_shipment->{$budget->{budget_id}}->{shipmentcost}; |
594 |
$parent->{total_ordered} += $budget->{total_ordered}; |
594 |
$budget->{budget_ordered} += $hr_budget_ordered->{$budget->{budget_id}}->{budget_ordered}; |
595 |
} |
595 |
$budget->{budget_ordered} += $hr_budget_ordered_shipment->{$budget->{budget_id}}->{shipmentcost}; |
596 |
}; |
|
|
597 |
|
596 |
|
598 |
foreach my $budget (@sort) { |
597 |
$budget->{total_spent} += $budget->{budget_spent}; |
599 |
if ($budget->{budget_parent_id} == undef) { |
598 |
$budget->{total_ordered} += $budget->{budget_ordered}; |
600 |
$recursiveAdd->($budget); |
|
|
601 |
} |
602 |
} |
603 |
|
599 |
|
604 |
return \@sort; |
600 |
if ($parent) { |
|
|
601 |
$parent->{total_spent} += $budget->{total_spent}; |
602 |
$parent->{total_ordered} += $budget->{total_ordered}; |
603 |
} |
605 |
} |
604 |
} |
606 |
|
605 |
|
607 |
# Recursive method to add a budget and its chidren to an array |
606 |
# Recursive method to add a budget and its chidren to an array |
608 |
- |
|
|