View | Details | Raw Unified | Return to bug 12168
Collapse All | Expand All

(-)a/C4/Budgets.pm (-44 / +45 lines)
Lines 44-50 BEGIN { Link Here
44
        &GetBudgetOrdered
44
        &GetBudgetOrdered
45
        &GetBudgetName
45
        &GetBudgetName
46
        &GetPeriodsCount
46
        &GetPeriodsCount
47
        &GetChildBudgetsSpent
47
        GetBudgetHierarchySpent
48
        GetBudgetHierarchyOrdered
48
49
49
        &GetBudgetUsers
50
        &GetBudgetUsers
50
        &ModBudgetUsers
51
        &ModBudgetUsers
Lines 594-628 sub GetBudgetHierarchy { Link Here
594
		last if $children == 0;
595
		last if $children == 0;
595
	}
596
	}
596
597
597
# add budget-percent and allocation, and flags for html-template
598
	foreach my $r (@sort) {
599
		my $subs_href = $r->{'child'};
600
        my @subs_arr = ();
601
        if ( defined $subs_href ) {
602
            @subs_arr = @{$subs_href};
603
        }
604
605
        my $moo = $r->{'budget_code_indent'};
606
        $moo =~ s/\ /\&nbsp\;/g;
607
        $r->{'budget_code_indent'} =  $moo;
608
609
        $moo = $r->{'budget_name_indent'};
610
        $moo =~ s/\ /\&nbsp\;/g;
611
        $r->{'budget_name_indent'} = $moo;
612
613
        $r->{'budget_spent'}       = GetBudgetSpent( $r->{'budget_id'} );
614
        $r->{budget_ordered} = GetBudgetOrdered( $r->{budget_id} );
615
598
616
        $r->{budget_spent_sublevels} = 0;
599
    foreach my $budget (@sort) {
617
        $r->{budget_ordered_sublevels} = 0;
600
        $budget->{budget_spent}   = GetBudgetSpent( $budget->{budget_id} );
618
        # foreach sub-levels
601
        $budget->{budget_ordered} = GetBudgetOrdered( $budget->{budget_id} );
619
		foreach my $sub (@subs_arr) {
602
        $budget->{total_spent} = GetBudgetHierarchySpent( $budget->{budget_id} );
620
			my $sub_budget = GetBudget($sub);
603
        $budget->{total_ordered} = GetBudgetHierarchyOrdered( $budget->{budget_id} );
621
            $r->{budget_spent_sublevels} += GetBudgetSpent( $sub_budget->{'budget_id'} );
604
    }
622
            $r->{budget_ordered_sublevels} += GetBudgetOrdered($sub);
605
    return \@sort;
623
		}
624
	}
625
	return \@sort;
626
}
606
}
627
607
628
# -------------------------------------------------------------------
608
# -------------------------------------------------------------------
Lines 695-727 sub GetBudgetByOrderNumber { Link Here
695
    return $result;
675
    return $result;
696
}
676
}
697
677
698
=head2 GetChildBudgetsSpent
678
=head2 GetBudgetHierarchySpent
699
679
700
  &GetChildBudgetsSpent($budget-id);
680
  my $spent = GetBudgetHierarchySpent( $budget_id );
701
681
702
gets the total spent of the level and sublevels of $budget_id
682
Gets the total spent of the level and sublevels of $budget_id
703
683
704
=cut
684
=cut
705
685
706
# -------------------------------------------------------------------
686
sub GetBudgetHierarchySpent {
707
sub GetChildBudgetsSpent {
708
    my ( $budget_id ) = @_;
687
    my ( $budget_id ) = @_;
709
    my $dbh = C4::Context->dbh;
688
    my $dbh = C4::Context->dbh;
710
    my $query = "
689
    my $children_ids = $dbh->selectcol_arrayref(q|
711
        SELECT *
690
        SELECT budget_id
712
        FROM   aqbudgets
691
        FROM   aqbudgets
713
        WHERE  budget_parent_id=?
692
        WHERE  budget_parent_id = ?
714
        ";
693
    |, {}, $budget_id );
715
    my $sth = $dbh->prepare($query);
694
716
    $sth->execute( $budget_id );
695
    my $total_spent = GetBudgetSpent( $budget_id );
717
    my $result = $sth->fetchall_arrayref({});
696
    for my $child_id ( @$children_ids ) {
718
    my $total_spent = GetBudgetSpent($budget_id);
697
        $total_spent += GetBudgetHierarchySpent( $child_id );
719
    if ($result){
720
        $total_spent += GetChildBudgetsSpent($_->{"budget_id"}) foreach @$result;    
721
    }
698
    }
722
    return $total_spent;
699
    return $total_spent;
723
}
700
}
724
701
702
=head2 GetBudgetHierarchyOrdered
703
704
  my $ordered = GetBudgetHierarchyOrdered( $budget_id );
705
706
Gets the total ordered of the level and sublevels of $budget_id
707
708
=cut
709
710
sub GetBudgetHierarchyOrdered {
711
    my ( $budget_id ) = @_;
712
    my $dbh = C4::Context->dbh;
713
    my $children_ids = $dbh->selectcol_arrayref(q|
714
        SELECT budget_id
715
        FROM   aqbudgets
716
        WHERE  budget_parent_id = ?
717
    |, {}, $budget_id );
718
719
    my $total_ordered = GetBudgetOrdered( $budget_id );
720
    for my $child_id ( @$children_ids ) {
721
        $total_ordered += GetBudgetHierarchyOrdered( $child_id );
722
    }
723
    return $total_ordered;
724
}
725
725
=head2 GetBudgets
726
=head2 GetBudgets
726
727
727
  &GetBudgets($filter, $order_by);
728
  &GetBudgets($filter, $order_by);
(-)a/admin/aqbudgets.pl (-4 lines)
Lines 273-281 if ( $op eq 'list' ) { Link Here
273
	#This Looks WEIRD to me : should budgets be filtered in such a way ppl who donot own it would not see the amount spent on the budget by others ?
273
	#This Looks WEIRD to me : should budgets be filtered in such a way ppl who donot own it would not see the amount spent on the budget by others ?
274
274
275
    foreach my $budget (@budgets) {
275
    foreach my $budget (@budgets) {
276
        #Level and sublevels total spent and ordered
277
        $budget->{total_spent} = $budget->{budget_spent_sublevels} + $budget->{budget_spent};
278
        $budget->{total_ordered} = $budget->{budget_ordered_sublevels} + $budget->{budget_ordered};
279
        # PERMISSIONS
276
        # PERMISSIONS
280
        unless(CanUserModifyBudget($borrowernumber, $budget, $staffflags)) {
277
        unless(CanUserModifyBudget($borrowernumber, $budget, $staffflags)) {
281
            $budget->{'budget_lock'} = 1;
278
            $budget->{'budget_lock'} = 1;
282
- 

Return to bug 12168