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>

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
Kyle M Hall 2020-03-10 09:02:22 -04:00 committed by Tomas Cohen Arazi
parent 3f812dc4d6
commit 8cc9c705b1
No known key found for this signature in database
GPG Key ID: 0A272EA1B2F3C15F
1 changed files with 10 additions and 4 deletions

View File

@ -162,7 +162,7 @@ BEGIN {
itemnumber => $itemnumber,
found => $found,
itemtype => $itemtype,
item_gorup_id => $item_group_id
item_group_id => $item_group_id
}
);
@ -956,6 +956,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 );
@ -1748,7 +1749,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)
@ -1784,16 +1786,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);
@ -1819,7 +1824,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 = ?)