Bug 31459: (follow-up) Preserve budget period display

This patch adds a level to the budget_loops and displays the budgets
as optgroups for the funds

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>

https://bugs.koha-community.org/show_bug.cgi?id=31559
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
(cherry picked from commit 2a22c13cf3)

Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This commit is contained in:
Nick Clemens 2022-10-12 14:55:55 +00:00 committed by Lucas Gass
parent 382e80b737
commit 63a5684020
2 changed files with 49 additions and 36 deletions

View file

@ -170,21 +170,26 @@ if ( $suggestion ) {
}
my $patron = Koha::Patrons->find( $loggedinuser )->unblessed;
my $budget_loop = [];
my %budget_loops;
my $budgets = GetBudgetHierarchy( undef, undef, undef, 1 );
foreach my $r (@{$budgets}) {
next unless (CanUserUseBudget($patron, $r, $userflags));
push @{$budget_loop}, {
b_id => $r->{budget_id},
b_txt => $r->{budget_name},
b_sort1_authcat => $r->{'sort1_authcat'},
b_sort2_authcat => $r->{'sort2_authcat'},
b_active => $r->{budget_period_active},
b_sel => ( $r->{budget_id} == $order->budget_id ) ? 1 : 0,
b_level => $r->{budget_level},
foreach my $budget (@{$budgets}) {
next unless (CanUserUseBudget($patron, $budget, $userflags));
unless ( defined $budget_loops{$budget->{budget_period_id}} ){
$budget_loops{$budget->{budget_period_id}}->{description} = $budget->{budget_period_description};
$budget_loops{$budget->{budget_period_id}}->{active} = $budget->{budget_period_active};
$budget_loops{$budget->{budget_period_id}}->{funds} = [];
}
push @{$budget_loops{$budget->{budget_period_id}}->{funds}}, {
b_id => $budget->{budget_id},
b_txt => $budget->{budget_name},
b_sort1_authcat => $budget->{'sort1_authcat'},
b_sort2_authcat => $budget->{'sort2_authcat'},
b_active => $budget->{budget_period_active},
b_sel => ( $budget->{budget_id} == $order->budget_id ) ? 1 : 0,
b_level => $budget->{budget_level},
};
}
$template->{'VARS'}->{'budget_loop'} = $budget_loop;
$template->{'VARS'}->{'budget_loops'} = \%budget_loops;
my $op = $input->param('op');
if ($op and $op eq 'edit'){

View file

@ -284,33 +284,41 @@
<label class="required" for="bookfund">Fund: </label>
[% active_count = 0 %]
[% IF !ordernumber %]
[% FOREACH budget_loo IN budget_loop %]
[% active_count= active_count + budget_loo.b_active %]
[% FOREACH budget_period IN budget_loops.keys %]
[% FOREACH fund IN budget_loops.$budget_period.funds %]
[% active_count= active_count + fund.b_active %]
[% END %]
[% END %]
[% END %]
<select class="select2" id="bookfund" name="bookfund">
[% FOREACH budget_loo IN budget_loop %]
[% level_indent_cnt = 0 %]
[% level_indent = "" %]
[% WHILE level_indent_cnt < budget_loo.b_level %]
[% level_indent = level_indent _ " -- " %]
[% level_indent_cnt = level_indent_cnt +1 %]
[% END %]
[% IF ( budget_loo.b_sel ) %]
[% active_count = 0 #select no other fund %]
<option value="[% budget_loo.b_id | html %]" selected="selected" data-sort1-authcat="[% budget_loo.b_sort1_authcat | html %]" data-sort2-authcat="[% budget_loo.b_sort2_authcat | html %]"
>
[% ELSIF active_count==1 && budget_loo.b_active %]
<option value="[% budget_loo.b_id | html %]" selected="selected" data-sort1-authcat="[% budget_loo.b_sort1_authcat | html %]" data-sort2-authcat="[% budget_loo.b_sort2_authcat | html %]"
>
[% FOREACH budget_period_id IN budget_loops.keys %]
[% SET budget_period = budget_loops.$budget_period_id %]
[% IF budget_period.active %]
<optgroup label="[% budget_period.description %]">
[% ELSE %]
[% bdgclass=budget_loo.b_active? "": "b_inactive" | html %]
<option value="[% budget_loo.b_id | html %]" class="[% bdgclass | html %]" data-sort1-authcat="[% budget_loo.b_sort1_authcat | html %]" data-sort2-authcat="[% budget_loo.b_sort2_authcat | html %]"
>
<optgroup class="inactive_budget" label="[% budget_period.description %] (Inactive)">
[% END %]
[% level_indent | html %][% budget_loo.b_txt | html %][% IF !budget_loo.b_active %] (inactive)[% END %]
</option>
[% FOREACH budget_loo IN budget_period.funds %]
[% level_indent_cnt = 0 %]
[% level_indent = "" %]
[% WHILE level_indent_cnt < budget_loo.b_level %]
[% level_indent = level_indent _ " -- " %]
[% level_indent_cnt = level_indent_cnt +1 %]
[% END %]
[% IF ( budget_loo.b_sel ) %]
[% active_count = 0 #select no other fund %]
<option value="[% budget_loo.b_id | html %]" selected="selected" data-sort1-authcat="[% budget_loo.b_sort1_authcat | html %]" data-sort2-authcat="[% budget_loo.b_sort2_authcat | html %]">
[% ELSIF active_count==1 && budget_loo.b_active %]
<option value="[% budget_loo.b_id | html %]" selected="selected" data-sort1-authcat="[% budget_loo.b_sort1_authcat | html %]" data-sort2-authcat="[% budget_loo.b_sort2_authcat | html %]">
[% ELSE %]
[% bdgclass=budget_loo.b_active? "": "inactive_budget" | html %]
<option value="[% budget_loo.b_id | html %]" class="[% bdgclass | html %]" data-sort1-authcat="[% budget_loo.b_sort1_authcat | html %]" data-sort2-authcat="[% budget_loo.b_sort2_authcat | html %]">
[% END %]
[% level_indent | html %][% budget_loo.b_txt | html %][% IF !budget_loo.b_active %] (inactive)[% END %]
</option>
[% END %]
</optgroup>
[% END %]
</select>
<span class="required">Required</span>
@ -548,14 +556,14 @@
//keep a copy of all budgets before removing the inactives
disabledBudgetsCopy = $('#bookfund').html();
$('#bookfund .b_inactive').remove();
$('#bookfund .inactive_budget').remove();
$('#showallbudgets').click(function() {
if ($(this).is(":checked")) {
$('#bookfund').html(disabledBudgetsCopy); //Puts back all the funds
}
else {
$('#bookfund .b_inactive').remove();
$('#bookfund .inactive_budget').remove();
}
});