From 4f8ff82800429612d2263e346c6ac835a58abb6b Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Sat, 13 Nov 2021 19:59:49 +0000 Subject: [PATCH] Bug 29474: Check ItemsAnyAvailableAndNOtRestricted outside of loop IsAvailableForItemLevelRequest takes $items_any_available to avoid a double loop - this was done in request.pl, but it makes sense to do the same here --- C4/Circulation.pm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index 3e32a0f24b..f446d3ef3e 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -27,7 +27,7 @@ use Encode; use Koha::DateUtils qw( dt_from_string output_pref ); use C4::Context; use C4::Stats qw( UpdateStats ); -use C4::Reserves qw( CheckReserves CanItemBeReserved MoveReserve ModReserve ModReserveMinusPriority RevertWaitingStatus IsItemOnHoldAndFound IsAvailableForItemLevelRequest ); +use C4::Reserves qw( CheckReserves CanItemBeReserved MoveReserve ModReserve ModReserveMinusPriority RevertWaitingStatus IsItemOnHoldAndFound IsAvailableForItemLevelRequest ItemsAnyAvailableAndNotRestricted ); use C4::Biblio qw( UpdateTotalIssues ); use C4::Items qw( ModItemTransfer ModDateLastSeen CartToShelf ); use C4::Accounts; @@ -2847,8 +2847,9 @@ sub CanBookBeRenewed { my @reservable; ITEM: while ( my $item = $items->next ) { next if IsItemOnHoldAndFound( $item->itemnumber ); + my $items_any_available = ItemsAnyAvailableAndNotRestricted( { biblionumber => $item->biblionumber, patron => $patron }); while ( my $patron = $patrons->next ) { - next unless IsAvailableForItemLevelRequest($item, $patron); + next unless IsAvailableForItemLevelRequest($item, $patron, undef, $items_any_available); next unless CanItemBeReserved($patron->borrowernumber,$item->itemnumber,undef,{ignore_hold_counts=>1})->{status} eq 'OK'; push @reservable, $item->itemnumber; if (@reservable >= @borrowernumbers) { -- 2.20.1