From eb2b2fc7103d821c4d812b32eba95819e5132816 Mon Sep 17 00:00:00 2001 From: D Ruth Bavousett Date: Fri, 4 Mar 2011 11:02:21 -0500 Subject: [PATCH] Bug 3595 (partial): Items seen at checkin are not filling holds well In Liz's second comment on this bug, she points out that local-only holds (and also no-holds) items are being used to fill the first hold in the queue, no matter where located, transitting if necessary. If all the items on a biblio are set to no-holds types, this problem would never arise, as no holds could be *placed*. But if you have one or more unlimitedor local-hold items, then holds are getting filled by the first item to cross a scanner, no matter what. This patch will check during C4::Reserves::CheckReserves to make sure that the hold being handed back to AddReturn is actually fillable by the item just scanned. One caveat: If CircControl is set to "the library you are logged in at", this will cause items checked in at other-than-their-home-library to fill local holds at the library where scanned. This is, however, an edge case! --- C4/Reserves.pm | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) diff --git a/C4/Reserves.pm b/C4/Reserves.pm index 2dd2688..ca8f2fb 100644 --- a/C4/Reserves.pm +++ b/C4/Reserves.pm @@ -804,6 +804,12 @@ sub CheckReserves { } else { # See if this item is more important than what we've got so far if ( $res->{'priority'} && $res->{'priority'} < $priority ) { + my $borrowerinfo=C4::Members::GetMemberDetails($res->{'borrowernumber'}); + my $iteminfo=C4::Items::GetItem($itemnumber); + my $branch=C4::Circulation::_GetCircControlBranch($iteminfo,$borrowerinfo); + my $branchitemrule = C4::Circulation::GetBranchItemRule($branch,$iteminfo->{'itype'}); + next if ($branchitemrule->{'holdallowed'} == 0); + next if (($branchitemrule->{'holdallowed'} == 1) && ($branch ne $borrowerinfo->{'branchcode'})); $priority = $res->{'priority'}; $highest = $res; } -- 1.7.2.3