From 13fa1397cd3fa1c56bcce8fc16c78c5a10d27190 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Fri, 8 Oct 2021 12:03:41 +0200 Subject: [PATCH] Bug 3142: Handle biblio level item type --- Koha/Items.pm | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/Koha/Items.pm b/Koha/Items.pm index ece4b866591..fd93030ffe4 100644 --- a/Koha/Items.pm +++ b/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 -- 2.25.1