From 89fca74d35c0da627b5cd2c2f8c226cb8cef24cb Mon Sep 17 00:00:00 2001 From: ByWater Migration Support Date: Fri, 15 Nov 2013 08:29:23 -0800 Subject: [PATCH] Bug 11258 - Holds queue is still making transfer requests that contradict the branch holds policy The holds queue generator is still making requests that are not allowed. Previously it was making transfer requests that were not allowed. Currently, it is still making requests where the pickup branch is the same as the item's branch but not the patron's branch, even if there is a "Default holds policy by item type" rule that states this item can only fill holds for patron's of the same branch as the item. Test Plan: 1) Create a test record with 2 items with different itemtypes 2) Set the Default holds policy by item type for the first item to "From any library" 3) Set the Default holds policy by item type for the second item to "From home library" 4) Place a record level hold for a patron from another library, but for pickup at the same library as the item is from 5) Rebuild the holds queue 6) View the holds queue, note the item is listed, though this patron cannot place a hold on this item 7) Apply this patch 8) Repeat step 5, note the hold is no longer in the queue --- C4/HoldsQueue.pm | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/C4/HoldsQueue.pm b/C4/HoldsQueue.pm index 7062cbe..503ed90 100755 --- a/C4/HoldsQueue.pm +++ b/C4/HoldsQueue.pm @@ -434,7 +434,6 @@ sub MapItemsToHoldRequests { } } $holdingbranch = $pickup_branch; - $itemnumber ||= $holding_branch_items->[0]->{itemnumber}; } elsif ($transport_cost_matrix) { $pull_branches = [keys %items_by_branch]; @@ -469,6 +468,7 @@ sub MapItemsToHoldRequests { $holdingbranch ||= $branch; foreach my $item (@$holding_branch_items) { next if $pickup_branch ne $item->{homebranch}; + next if ( $item->{holdallowed} == 1 && $item->{homebranch} ne $request->{borrowerbranch} ); $itemnumber = $item->{itemnumber}; $holdingbranch = $branch; @@ -478,7 +478,7 @@ sub MapItemsToHoldRequests { unless ( $itemnumber ) { foreach my $current_item ( @{ $items_by_branch{$holdingbranch} } ) { - if ( $holdingbranch && ( $current_item->{holdallowed} == 2 || $pickup_branch eq $current_item->{homebranch} ) ) { + if ( $holdingbranch && ( $current_item->{holdallowed} == 2 || $request->{borrowerbranch} eq $current_item->{homebranch} ) ) { $itemnumber = $current_item->{itemnumber}; last; # quit this loop as soon as we have a suitable item } -- 1.7.2.5