-my $suggestion = CountSuggestion($status);
-my $suggestions_loop = &SearchSuggestion( {STATUS=> $status} );
-# ---------------------------------------------------
-# number format
-my $period = GetBudgetPeriod;
-my $budget_period_id = $period->{budget_period_id};
-my $budget_branchcode = $period->{budget_branchcode};
-my $moo = GetBudgetHierarchy('',$homebranch, $template->{param_map}->{'USER_INFO'}[0]->{'borrowernumber'} );
-@results = @$moo;
-my $period_total = 0;
-my $toggle = 0;
-my @loop;
-
-foreach my $result (@results) {
- # only get top-level budgets for display
- # warn $result->{'budget_branchcode'};
-
- $period_total += $result->{'budget_amount'};
-
- my $a = $result->{'budget_code_indent'};
- $a =~ s/\ /\ \;/g;
- $result->{'budget_code_indent'} = $a;
-
- my $r = GetBranchName( $result->{'budget_owner_id'} );
- $result->{'budget_branchname'} = GetBranchName( $result->{'budget_branchcode'} );
-
- my $member = GetMember( $result->{'budget_owner_id'} );
- my $member_full = $member->{'firstname'} . ' ' . $member->{'surname'};
-
- $result->{'budget_owner'} = $member_full;
- $result->{'budget_avail'} = $result->{'budget_amount'} - $result->{'budget_spent'};
- $result->{'budget_spent'} = GetBudgetSpent( $result->{'budget_id'} );
-
- $total += $result->{'budget_amount'};
- $totspent += $result->{'budget_spent'};
- $totavail += $result->{'budget_avail'};
-
- $result->{'budget_amount'} = $num->format_price( $result->{'budget_amount'} );
- $result->{'budget_spent'} = $num->format_price( $result->{'budget_spent'} );
- $result->{'budget_avail'} = $num->format_price( $result->{'budget_avail'} );
-
- # my $spent_percent = ( $result->{'budget_spent'} / $result->{'budget_amount'} ) * 100;
- # $result->{'budget_spent_percent'} = sprintf( "%00d", $spent_percent );
-
- my $borrower = &GetMember( $result->{budget_owner_id} );
- $result->{budget_owner_name} = $borrower->{'firstname'} . ' ' . $borrower->{'surname'};
-
- push( @loop_budget, { %{$result}, toggle => $toggle++ % 2, } );
+my $suggestions_count = CountSuggestion($status);
+
+my $budget_arr = GetBudgetHierarchy;
+
+my $total = 0;
+my $totspent = 0;
+my $totordered = 0;
+my $totcomtd = 0;
+my $totavail = 0;
+
+my $total_active = 0;
+my $totspent_active = 0;
+my $totordered_active = 0;
+my $totavail_active = 0;
+
+my @budget_loop;
+foreach my $budget ( @{$budget_arr} ) {
+ next unless (CanUserUseBudget($loggedinuser, $budget, $userflags));
+
+ $budget->{budget_code_indent} =~ s/\ /\ \;/g;
+
+ $budget->{'budget_branchname'} =
+ GetBranchName( $budget->{'budget_branchcode'} );
+
+ my $member = GetMember( borrowernumber => $budget->{budget_owner_id} );
+ if ($member) {
+ $budget->{budget_owner_firstname} = $member->{'firstname'};
+ $budget->{budget_owner_surname} = $member->{'surname'};
+ $budget->{budget_owner_borrowernumber} = $member->{'borrowernumber'};
+ }
+
+ if ( !defined $budget->{budget_amount} ) {
+ $budget->{budget_amount} = 0;
+ }
+
+ $budget->{'budget_ordered'} = GetBudgetOrdered( $budget->{'budget_id'} );
+ $budget->{'budget_spent'} = GetBudgetSpent( $budget->{'budget_id'} );
+ if ( !defined $budget->{budget_spent} ) {
+ $budget->{budget_spent} = 0;
+ }
+ if ( !defined $budget->{budget_ordered} ) {
+ $budget->{budget_ordered} = 0;
+ }
+ $budget->{'budget_avail'} =
+ $budget->{'budget_amount'} - ( $budget->{'budget_spent'} + $budget->{'budget_ordered'} );
+
+ $total += $budget->{'budget_amount'};
+ $totspent += $budget->{'budget_spent'};
+ $totordered += $budget->{'budget_ordered'};
+ $totavail += $budget->{'budget_avail'};
+
+ if ($budget->{budget_period_active}){
+ $total_active += $budget->{'budget_amount'};
+ $totspent_active += $budget->{'budget_spent'};
+ $totordered_active += $budget->{'budget_ordered'};
+ $totavail_active += $budget->{'budget_avail'};
+ }
+
+ for my $field (qw( budget_amount budget_spent budget_ordered budget_avail ) ) {
+ $budget->{"formatted_$field"} = $num_formatter->format_price( $budget->{$field} );
+ }
+
+ push @budget_loop, $budget;