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);
use C4::Context;
-use Test::More tests => 61;
+use Test::More tests => 63;
use MARC::Record;
use C4::Biblio;
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});