@@ -, +, @@ almost place a hold on an item already on hold you just placed an item-level hold on any and all other reasons --- reserve/placerequest.pl | 9 ++++++++- reserve/request.pl | 7 +++++-- 2 files changed, 13 insertions(+), 3 deletions(-) --- a/reserve/placerequest.pl +++ a/reserve/placerequest.pl @@ -88,16 +88,23 @@ if ( $type eq 'str8' && $borrower ) { } } + my $can_override = C4::Context->preference('AllowHoldPolicyOverride'); if ( defined $checkitem && $checkitem ne '' ) { + my $item = Koha::Items->find($checkitem); + if ( $item->biblionumber ne $biblionumber ) { $biblionumber = $item->biblionumber; } - if ( CanItemBeReserved($borrower->{'borrowernumber'}, $item->itemnumber, $branch)->{status} eq 'OK' ) { + + my $can_item_be_reserved = canItemBeReserved($borrower->{'borrowernumber'}, $item->itemnumber, $branch)->{status}; + + if ( $can_item_be_reserved ne 'itemAlreadyOnHold' ) { AddReserve( $branch, $borrower->{'borrowernumber'}, $biblionumber, \@realbi, $rank[0], $startdate, $expirationdate, $notes, $title, $checkitem, $found, $itemtype ); } + } elsif ($multi_hold) { my $bibinfo = $bibinfos{$biblionumber}; if ( CanBookBeReserved($borrower->{'borrowernumber'}, $biblionumber)->{status} eq 'OK' ) { --- a/reserve/request.pl +++ a/reserve/request.pl @@ -508,8 +508,11 @@ foreach my $biblionumber (@biblionumbers) { } elsif ( C4::Context->preference('AllowHoldPolicyOverride') ) { # If AllowHoldPolicyOverride is set, it should override EVERY restriction, not just branch item rules - $item->{override} = 1; - $num_override++; + # with the exception of itemAlreadyOnHold because, you know, the item is already on hold + if ( $can_item_be_reserved ne 'itemAlreadyOnHold' ) { + $item->{override} = 1; + $num_override++; + } push( @available_itemtypes, $item->{itype} ); } --