From f84cd75af2ca24ba495e1f97b00cd31a366a13a5 Mon Sep 17 00:00:00 2001
From: Hammat Wele <hammat.wele@inlibro.com>
Date: Wed, 31 Jul 2024 21:28:41 +0000
Subject: [PATCH] Bug 35434: (follow-up) added canreservefromotherbranches in
 addition to canreservefromotherbranches to prevent non-superlibrarians from
 placing holds in other libraries

---
 Koha/Item.pm | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/Koha/Item.pm b/Koha/Item.pm
index f765196c7b..a21f0a6e91 100644
--- a/Koha/Item.pm
+++ b/Koha/Item.pm
@@ -990,9 +990,15 @@ is not passed.
 
 sub pickup_locations {
     my ($self, $params) = @_;
-
-    return Koha::Libraries->search( { branchcode => $self->holdingbranch } ) if C4::Context->preference("IndependentBranches") && !C4::Context->IsSuperLibrarian();
-
+    if ( C4::Context->preference("IndependentBranches")
+        and !C4::Context->preference("canreservefromotherbranches") )
+    {
+        my $userenv = C4::Context->userenv;
+        unless ( C4::Context->IsSuperLibrarian ) {
+            return Koha::Libraries->new()->empty if ( $self->homebranch ne $userenv->{branch} );
+            return Koha::Libraries->search( { branchcode => $self->homebranch } );
+        }
+    }
     Koha::Exceptions::MissingParameter->throw( parameter => 'patron' )
       unless exists $params->{patron};
 
-- 
2.34.1