@@ -, +, @@ request.pl - Looped every item to find out that book could not be reserved - Looped until we found an item that could be reserved, then looped all items to get statuses --- reserve/request.pl | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) --- a/reserve/request.pl +++ a/reserve/request.pl @@ -33,7 +33,7 @@ use List::MoreUtils qw( uniq ); use Date::Calc qw( Date_to_Days ); use C4::Output qw( output_html_with_http_headers ); use C4::Auth qw( get_template_and_user ); -use C4::Reserves qw( RevertWaitingStatus AlterPriority ToggleLowestPriority ToggleSuspend CanBookBeReserved GetMaxPatronHoldsForRecord ItemsAnyAvailableAndNotRestricted CanItemBeReserved IsAvailableForItemLevelRequest ); +use C4::Reserves qw( RevertWaitingStatus AlterPriority ToggleLowestPriority ToggleSuspend CanBookBeReserved GetMaxPatronHoldsForRecord ItemsAnyAvailableAndNotRestricted IsAvailableForItemLevelRequest ); use C4::Items qw( get_hostitemnumbers_of ); use C4::Koha qw( getitemtypeimagelocation ); use C4::Serials qw( CountSubscriptionFromBiblionumber ); @@ -308,9 +308,10 @@ if ( ( $findborrower && $borrowernumber_hold || $findclub && $club_hold ) $biblioloopiter{object} = $biblio; + my $canReserve; if ( $patron ) { { # CanBookBeReserved - my $canReserve = CanBookBeReserved( $patron->borrowernumber, $biblionumber ); + $canReserve = CanBookBeReserved( $patron->borrowernumber, $biblionumber, undef,{ return_all_items => 1 }); if ( $canReserve->{status} eq 'OK' ) { #All is OK and we can continue @@ -486,7 +487,7 @@ if ( ( $findborrower && $borrowernumber_hold || $findclub && $club_hold ) $item->{'holdallowed'} = $branchitemrule->{'holdallowed'}; - my $can_item_be_reserved = CanItemBeReserved( $patron, $item_object )->{status}; + my $can_item_be_reserved = $canReserve->{$item_object->itemnumber}->{status}; $item->{not_holdable} = $can_item_be_reserved unless ( $can_item_be_reserved eq 'OK' ); $item->{not_holdable} ||= 'notforloan' if ( $item->{notforloanitype} || $item->{notforloan} > 0 ); --