From a409b16d5b3bd871a04f9bcdc8f01f6aed653f3b Mon Sep 17 00:00:00 2001 From: David Gustafsson Date: Tue, 19 Mar 2024 18:33:18 +0100 Subject: [PATCH] Bug 36362: Only call Koha::Libraries->search() if necessary in Item::pickup_locations To test: 1) Make sure the following tests pass: - t/db_dependent/Koha/Item.t - t/db_dependent/Koha/Biblios.t - db_dependent/Koha/Biblio.t Sponsored-by: Gothenburg University Library Signed-off-by: Matt Blenkinsop Signed-off-by: Kyle M Hall Signed-off-by: Martin Renvoize (cherry picked from commit 2c1e95562188a6d93c22055e30d6a5e9d7e50034) Signed-off-by: Lucas Gass --- Koha/Item.pm | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/Koha/Item.pm b/Koha/Item.pm index 45a4f43cf3..4672debecf 100644 --- a/Koha/Item.pm +++ b/Koha/Item.pm @@ -1000,10 +1000,16 @@ sub pickup_locations { my $branchitemrule = C4::Circulation::GetBranchItemRule( $circ_control_branch, $self->itype ); - return Koha::Libraries->new()->empty if $branchitemrule->{holdallowed} eq 'from_local_hold_group' && !$self->home_branch->validate_hold_sibling( {branchcode => $patron->branchcode} ); - return Koha::Libraries->new()->empty if $branchitemrule->{holdallowed} eq 'from_home_library' && $self->home_branch->branchcode ne $patron->branchcode; + if ( + $branchitemrule->{holdallowed} eq 'from_local_hold_group' && + !$self->home_branch->validate_hold_sibling( {branchcode => $patron->branchcode} ) || + $branchitemrule->{holdallowed} eq 'from_home_library' && + $self->home_branch->branchcode ne $patron->branchcode + ) { + return Koha::Libraries->new()->empty; + } - my $pickup_libraries = Koha::Libraries->search(); + my $pickup_libraries; if ($branchitemrule->{hold_fulfillment_policy} eq 'holdgroup') { $pickup_libraries = $self->home_branch->get_hold_libraries; } elsif ($branchitemrule->{hold_fulfillment_policy} eq 'patrongroup') { @@ -1013,7 +1019,9 @@ sub pickup_locations { $pickup_libraries = Koha::Libraries->search({ branchcode => $self->homebranch }); } elsif ($branchitemrule->{hold_fulfillment_policy} eq 'holdingbranch') { $pickup_libraries = Koha::Libraries->search({ branchcode => $self->holdingbranch }); - }; + } else { + $pickup_libraries = Koha::Libraries->search(); + } return $pickup_libraries->search( { @@ -1025,7 +1033,8 @@ sub pickup_locations { ) unless C4::Context->preference('UseBranchTransferLimits'); my $limittype = C4::Context->preference('BranchTransferLimitsType'); - my ($ccode, $itype) = (undef, undef); + my $ccode; + my $itype; if( $limittype eq 'ccode' ){ $ccode = $self->ccode; } else { -- 2.39.5