@@ -, +, @@ --- C4/Reserves.pm | 6 ++++-- reserve/placerequest.pl | 4 ++-- reserve/request.pl | 6 +++--- 3 files changed, 9 insertions(+), 7 deletions(-) --- a/C4/Reserves.pm +++ a/C4/Reserves.pm @@ -341,7 +341,8 @@ sub CanBookBeReserved{ foreach my $itemnumber (@itemnumbers) { $canReserve = CanItemBeReserved( $borrowernumber, $itemnumber, $pickup_branchcode, $params ); - return { status => 'recordHoldNotAllowed' } if $canReserve->{rights}->{opacitemholds} eq 'F'; + my $opacitemholds = $canReserve->{rights}->{opacitemholds} // 'Y'; + return { status => 'recordHoldNotAllowed' } if $opacitemholds eq 'F'; return { status => 'OK' } if $canReserve->{status} eq 'OK'; return { status => 'OK' } if $canReserve->{status} eq 'recordHoldsOnly'; } @@ -384,6 +385,7 @@ sub CanItemBeReserved { my $biblio = $item->biblio; my $patron = Koha::Patrons->find( $borrowernumber ); my $borrower = $patron->unblessed; + my $context = $params->{context} // ''; # If an item is damaged and we don't allow holds on damaged items, we can stop right here return { status =>'damaged' } @@ -591,7 +593,7 @@ sub CanItemBeReserved { } } - if ( $opacitemholds eq "N" ) { + if ( $opacitemholds eq "N" && $context ne 'staff') { return { status => "recordHoldsOnly", right => $rights }; } --- a/reserve/placerequest.pl +++ a/reserve/placerequest.pl @@ -99,7 +99,7 @@ if ( $type eq 'str8' && $borrower ) { $biblionumber = $item->biblionumber; } - my $can_item_be_reserved = CanItemBeReserved($borrower->{'borrowernumber'}, $item->itemnumber, $branch)->{status}; + my $can_item_be_reserved = CanItemBeReserved($borrower->{'borrowernumber'}, $item->itemnumber, $branch, { context => 'staff' })->{status}; if ( $can_item_be_reserved eq 'OK' || ( $can_item_be_reserved ne 'itemAlreadyOnHold' && $can_override ) ) { AddReserve( @@ -144,7 +144,7 @@ if ( $type eq 'str8' && $borrower ) { } else { # place a request on 1st available for ( my $i = 0 ; $i < $holds_to_place_count ; $i++ ) { - if ( $can_override || CanBookBeReserved($borrower->{'borrowernumber'}, $biblionumber)->{status} eq 'OK' ) { + if ( $can_override || CanBookBeReserved($borrower->{'borrowernumber'}, $biblionumber, undef, { context => 'staff' })->{status} eq 'OK' ) { AddReserve( { branchcode => $branch, --- a/reserve/request.pl +++ a/reserve/request.pl @@ -318,10 +318,10 @@ foreach my $biblionumber (@biblionumbers) { $template->param( $canReserve->{status} => 1); $biblioloopiter{ $canReserve->{status} } = 1; } - elsif ( $canReserve->{status} eq 'recordHoldNotAllowed' ) { + elsif ( $canReserve->{status} eq 'recordHoldNotAllowed' ) { $template->param( $canReserve->{status} => 1 ); - $biblioloopiter{ $canReserve->{status} } = 1; - } + $biblioloopiter{ $canReserve->{status} } = 1; + } else { $biblioloopiter{ $canReserve->{status} } = 1; } --