diff --git a/C4/Reserves.pm b/C4/Reserves.pm index 49a4445857..f4d45560aa 100644 --- a/C4/Reserves.pm +++ b/C4/Reserves.pm @@ -793,7 +793,7 @@ sub CheckReserves { return unless $itemnumber; # bail if we got nothing. # if item is not for loan it cannot be reserved either..... # except where items.notforloan < 0 : This indicates the item is holdable. - return if ( $notforloan_per_item > 0 ) or $notforloan_per_itemtype; + return if $notforloan_per_item or $notforloan_per_itemtype; # Find this item in the reserves my @reserves = _Findgroupreserve( $bibitem, $biblio, $itemnumber, $lookahead_days, $ignore_borrowers); diff --git a/t/db_dependent/Holds.t b/t/db_dependent/Holds.t index 69b2071284..3cc2dc7e0f 100755 --- a/t/db_dependent/Holds.t +++ b/t/db_dependent/Holds.t @@ -7,7 +7,7 @@ use t::lib::TestBuilder; use C4::Context; -use Test::More tests => 61; +use Test::More tests => 63; use MARC::Record; use C4::Biblio; @@ -344,6 +344,20 @@ t::lib::Mocks::mock_preference( 'AllowHoldsOnDamagedItems', 0 ); ok( CanItemBeReserved( $borrowernumbers[0], $itemnumber)->{status} eq 'damaged', "Patron cannot reserve damaged item with AllowHoldsOnDamagedItems disabled" ); ok( !defined( ( CheckReserves($itemnumber) )[1] ), "Hold cannot be trapped for damaged item with AllowHoldsOnDamagedItems disabled" ); +# Items that are not for loan, but holdable should not be trapped until they are available for loan +Koha::Items->find($itemnumber)->damaged(0)->notforloan(-1)->store; +Koha::Holds->search({ biblionumber => $biblio->id })->delete(); +is( CanItemBeReserved( $borrowernumbers[0], $itemnumber)->{status}, 'OK', "Patron can place hold on item that is not for loan but holdable ( notforloan < 0 )" ); +$hold = Koha::Hold->new( + { + borrowernumber => $borrowernumbers[0], + itemnumber => $itemnumber, + biblionumber => $biblio->biblionumber, + } +)->store(); +ok( !defined( ( CheckReserves($itemnumber) )[1] ), "Hold cannot be trapped for item that is not for loan but holdable ( notforloan < 0 )" ); +$hold->delete(); + # Regression test for bug 9532 $biblio = $builder->build_sample_biblio({ itemtype => 'CANNOT' }); $item = $builder->build_sample_item({ library => $branch_1, itype => 'CANNOT', biblionumber => $biblio->biblionumber});