From 09b6b3da971dbf47341ffd5599df8431e0da50be Mon Sep 17 00:00:00 2001
From: Kyle M Hall <kyle@bywatersolutions.com>
Date: Tue, 10 Mar 2020 09:02:22 -0400
Subject: [PATCH] Bug 24860: Skip non-matching item group holds in
CheckReserves
Signed-off-by: Andrew Fuerste-Henry <andrew@bywatersolutions.com>
Signed-off-by: Rebecca Coert <rcoert@arlingtonva.us>
---
C4/Reserves.pm | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/C4/Reserves.pm b/C4/Reserves.pm
index a94d66d2a8..10eb089a9b 100644
--- a/C4/Reserves.pm
+++ b/C4/Reserves.pm
@@ -162,7 +162,7 @@ BEGIN {
itemnumber => $itemnumber,
found => $found,
itemtype => $itemtype,
- item_gorup_id => $item_group_id
+ item_group_id => $item_group_id
}
);
@@ -957,6 +957,7 @@ sub CheckReserves {
# See if this item is more important than what we've got so far
if ( ( $res->{'priority'} && $res->{'priority'} < $priority ) || $local_hold_match ) {
$item ||= Koha::Items->find($itemnumber);
+ next if $res->{item_group_id} && ( !$item->item_group || $item->item_group->id != $res->{item_group_id} );
next if $res->{itemtype} && $res->{itemtype} ne $item->effective_itemtype;
$patron ||= Koha::Patrons->find( $res->{borrowernumber} );
my $branch = GetReservesControlBranch( $item->unblessed, $patron->unblessed );
@@ -1749,7 +1750,8 @@ sub _Findgroupreserve {
reserves.itemnumber AS itemnumber,
reserves.reserve_id AS reserve_id,
reserves.itemtype AS itemtype,
- reserves.non_priority AS non_priority
+ reserves.non_priority AS non_priority,
+ reserves.item_group_id AS item_group_id
FROM reserves
JOIN biblioitems USING (biblionumber)
JOIN hold_fill_targets USING (reserve_id)
@@ -1785,16 +1787,19 @@ sub _Findgroupreserve {
reserves.itemnumber AS itemnumber,
reserves.reserve_id AS reserve_id,
reserves.itemtype AS itemtype,
- reserves.non_priority AS non_priority
+ reserves.non_priority AS non_priority,
+ reserves.item_group_id AS item_group_id
FROM reserves
JOIN biblioitems USING (biblionumber)
JOIN hold_fill_targets USING (reserve_id)
+ LEFT JOIN item_group_items ON ( item_group_items.item_id = hold_fill_targets.itemnumber )
WHERE found IS NULL
AND priority > 0
AND item_level_request = 0
AND hold_fill_targets.itemnumber = ?
AND reservedate <= DATE_ADD(NOW(),INTERVAL ? DAY)
AND suspend = 0
+ AND reserves.item_group_id = item_group_items.item_group_id
ORDER BY priority
};
$sth = $dbh->prepare($title_level_target_query);
@@ -1820,7 +1825,8 @@ sub _Findgroupreserve {
reserves.itemnumber AS itemnumber,
reserves.reserve_id AS reserve_id,
reserves.itemtype AS itemtype,
- reserves.non_priority AS non_priority
+ reserves.non_priority AS non_priority,
+ reserves.item_group_id AS item_group_id
FROM reserves
WHERE reserves.biblionumber = ?
AND (reserves.itemnumber IS NULL OR reserves.itemnumber = ?)
--
2.30.2