@@ -, +, @@
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;
}
--