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 <matt.blenkinsop@ptfs-europe.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
This commit is contained in:
David Gustafsson 2024-03-19 18:33:18 +01:00 committed by Martin Renvoize
parent 1a154f1f0e
commit 2c1e955621
Signed by: martin.renvoize
GPG key ID: 422B469130441A0F

View file

@ -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 {