@@ -, +, @@ --- Koha/Items.pm | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) --- a/Koha/Items.pm +++ a/Koha/Items.pm @@ -63,15 +63,31 @@ sub filter_by_for_hold { )->get_column('itemtype'); push @hold_not_allowed_itypes, Koha::ItemTypes->search({ notforloan => 1 })->get_column('itemtype'); - return $self->search( - { - itemlost => 0, - withdrawn => 0, - notforloan => { '<=' => 0 }, # items with negative or zero notforloan value are holdable - ( C4::Context->preference('AllowHoldsOnDamagedItems' ) ? () : ( damaged => 0 ) ), - itype => { -not_in => \@hold_not_allowed_itypes }, - } - ); + my $params = { + itemlost => 0, + withdrawn => 0, + notforloan => { '<=' => 0 }, # items with negative or zero notforloan value are holdable + ( C4::Context->preference('AllowHoldsOnDamagedItems')? (): ( damaged => 0 ) ), + }; + + if ( C4::Context->preference("item-level_itypes") ) { + return $self->search( + { + %$params, + itype => { -not_in => \@hold_not_allowed_itypes }, + } + ); + } else { + return $self->search( + { + %$params, + 'biblioitem.itemtype' => { -not_in => \@hold_not_allowed_itypes }, + }, + { + join => 'biblioitem', + } + ); + } } =head3 filter_by_visible_in_opac --