@@ -, +, @@ ignores default hold policy - Have a test user from one branch (eg Centerville) - Set "On shelf holds allowed" to "If all unavailable" for your patron and item category (or everyone and everything) - For "Default checkout, hold and return policy", set hold policy to "From home library" -> make sure there is no "Default holds policy by item type" to override the setting - Have two items for a record. 1. An item with home branch same as test user (eg Centerville) -> check this item out to somebody else 2. an item with a different home branch (eg Fairfield) -> available, not checked out - Try to place a hold for your test user. Does not work. - Apply the patch - Try to place a hold. Should work now. --- C4/Reserves.pm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) --- a/C4/Reserves.pm +++ a/C4/Reserves.pm @@ -1413,6 +1413,10 @@ sub IsAvailableForItemLevelRequest { my $any_available = 0; foreach my $i (@items) { + + my $circ_control_branch = C4::Circulation::_GetCircControlBranch( $i->unblessed(), $borrower ); + my $branchitemrule = C4::Circulation::GetBranchItemRule( $circ_control_branch, $i->itype ); + $any_available = 1 unless $i->itemlost || $i->notforloan > 0 @@ -1421,7 +1425,8 @@ sub IsAvailableForItemLevelRequest { || IsItemOnHoldAndFound( $i->id ) || ( $i->damaged && !C4::Context->preference('AllowHoldsOnDamagedItems') ) - || Koha::ItemTypes->find( $i->effective_itemtype() )->notforloan; + || Koha::ItemTypes->find( $i->effective_itemtype() )->notforloan + || $branchitemrule->{holdallowed} == 1 && $borrower->{branchcode} ne $i->homebranch; } return $any_available ? 0 : 1; --