@@ -, +, @@ when IndependentBranches enabled --- C4/Suggestions.pm | 15 ++++-- .../prog/en/modules/suggestion/suggestion.tt | 30 ++++++----- suggestion/suggestion.pl | 59 ++++++++++++++++++---- 3 files changed, 76 insertions(+), 28 deletions(-) --- a/C4/Suggestions.pm +++ a/C4/Suggestions.pm @@ -131,25 +131,30 @@ sub SearchSuggestion { } } + my $userenv = C4::Context->userenv; # filter on user branch if ( C4::Context->preference('IndependentBranches') ) { - my $userenv = C4::Context->userenv; - if ($userenv) { - if ( !C4::Context->IsSuperLibrarian() && !$suggestion->{branchcode} ) + if ( !C4::Context->IsSuperLibrarian() && $userenv ) { push @sql_params, $$userenv{branch}; push @query, q{ AND (suggestions.branchcode=? OR suggestions.branchcode='') }; + }else{ + if ( defined $suggestion->{branchcode} && $suggestion->{branchcode} ) { + unless ( $suggestion->{branchcode} eq '__ANY__' ) { + push @sql_params, $suggestion->{branchcode}; + push @query, qq{ AND suggestions.branchcode=? }; + } + } } - } } else { if ( defined $suggestion->{branchcode} && $suggestion->{branchcode} ) { unless ( $suggestion->{branchcode} eq '__ANY__' ) { push @sql_params, $suggestion->{branchcode}; push @query, qq{ AND suggestions.branchcode=? }; } - } + } } # filter on nillable fields --- a/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/suggestion.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/suggestion.tt @@ -605,10 +605,12 @@ [% ELSE %] [% END %] - [% IF ( displayby == "branchcode" ) %] - - [% ELSE %] - + [% IF ( IndependentBranches == 0 ) || (SuperLibrarian) %] + [% IF ( displayby == "branchcode" ) %] + + [% ELSE %] + + [% END %] [% END %] [% IF ( displayby == "itemtype" ) %] @@ -727,15 +729,17 @@ [% IF ( budgetid_loo.selected ) %] [% ELSE %][% END %] [% END %] -
  • -
  • + [% IF (IndependentBranches == 0 ) %] +
  • +
  • + [% END %] --- a/suggestion/suggestion.pl +++ a/suggestion/suggestion.pl @@ -92,9 +92,12 @@ my $managedby = $input->param('managedby'); my $displayby = $input->param('displayby') || ''; my $tabcode = $input->param('tabcode'); my $reasonsloop = GetAuthorisedValues("SUGGEST"); +my $filter_branchcode = $input->param('filter_branchcode'); # filter informations which are not suggestion related. my $suggestion_ref = $input->Vars; +my $IndependentBranches; +my $SuperLibrarian; # get only the columns of Suggestion my $schema = Koha::Database->new()->schema; @@ -118,6 +121,23 @@ my ( $template, $borrowernumber, $cookie, $userflags ) = get_template_and_user( $borrowernumber = $input->param('borrowernumber') if ( $input->param('borrowernumber') ); $template->param('borrowernumber' => $borrowernumber); +#Check if IndependentBranches syspref is enabled and if it is then return IndependentBranches variable of 1 so library +#filtering does not occur in suggestion.tt +if ( Koha::Config::SysPrefs->find( 'IndependentBranches')->value) { + $IndependentBranches = 1; + $template->param( + IndependentBranches => $IndependentBranches + ); +} + +if (C4::Context->IsSuperLibrarian()) { + $SuperLibrarian =1; + $template->param( + SuperLibrarian => $SuperLibrarian + ); +} + +# ######################################### ## Operations ## @@ -241,7 +261,7 @@ elsif ( $op eq 'show' ) { } if ($op=~/else/) { $op='else'; - + $displayby||="STATUS"; delete $$suggestion_ref{'branchcode'} if($displayby eq "branchcode"); # distinct values of display by @@ -260,29 +280,48 @@ if ($op=~/else/) { my @allsuggestions; foreach my $criteriumvalue ( @criteria_dv ) { # By default, display suggestions from current working branch - unless ( exists $$suggestion_ref{'branchcode'} ) { - $$suggestion_ref{'branchcode'} = C4::Context->userenv->{'branch'}; + + if ( $IndependentBranches && !$SuperLibrarian) { + unless ( $$suggestion_ref{'branchcode'} ) { + $$suggestion_ref{'branchcode'} = C4::Context->userenv->{'branch'}; + } } + my $definedvalue = defined $$suggestion_ref{$displayby} && $$suggestion_ref{$displayby} ne ""; next if ( $definedvalue && $$suggestion_ref{$displayby} ne $criteriumvalue ); $$suggestion_ref{$displayby} = $criteriumvalue; my $suggestions = &SearchSuggestion($suggestion_ref); + + my $filteredsuggestionlist; foreach my $suggestion (@$suggestions) { if ($suggestion->{budgetid}){ my $bud = GetBudget( $suggestion->{budgetid} ); $suggestion->{budget_name} = $bud->{budget_name} if $bud; } + if ($filter_branchcode) { + push @$filteredsuggestionlist, $suggestion if ($suggestion->{'branchcode'} eq $filter_branchcode); + } } - push @allsuggestions,{ - "suggestiontype"=>$criteriumvalue||"suggest", - "suggestiontypelabel"=>GetCriteriumDesc($criteriumvalue,$displayby)||"", - "suggestionscount"=>scalar(@$suggestions), - 'suggestions_loop'=>$suggestions, - 'reasonsloop' => $reasonsloop, - }; + if ( $filter_branchcode && $filteredsuggestionlist) { + push @allsuggestions,{ + "suggestiontype"=>$criteriumvalue||"suggest", + "suggestiontypelabel"=>GetCriteriumDesc($criteriumvalue,$displayby)||"", + "suggestionscount"=>scalar(@$filteredsuggestionlist), + 'suggestions_loop'=>$filteredsuggestionlist, + 'reasonsloop' => $reasonsloop, + }; + } elsif ( $filter_branchcode eq "__ANY__" ) { + push @allsuggestions,{ + "suggestiontype"=>$criteriumvalue||"suggest", + "suggestiontypelabel"=>GetCriteriumDesc($criteriumvalue,$displayby)||"", + "suggestionscount"=>scalar(@$suggestions), + 'suggestions_loop'=>$suggestions, + 'reasonsloop' => $reasonsloop, + }; + } delete $$suggestion_ref{$displayby} unless $definedvalue; } --