From 455c0ded1ecc98e5308841c89c5f3cedeec64aa3 Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Mon, 9 Dec 2024 20:23:11 +0000 Subject: [PATCH] Bug 38650: Only fill title level reserves, or reserves on the exact item We change the conditions for filling holds to require that either: - the hold is title level - the hold is on the exact item To test: 1 - Place a hold for patron A on item #1 of a record 2 - Place a hold for patron B on item #2 of a record 3 - Issue item #2 to patron A - their hold on item #1 is filled incorrectly, check the item in 4 - Apply patch, restart all 5 - Place hold for patron A on item #1 6 - Issue item #2 to patron A - their hold on item #1 is not filled, check the item in 7 - Cancel that hold 8 - Place a title level hold for the record for patron A 9 - Check item #1 in at a different branch and confirm transfer 9 - Issue item #2 to patron A 10 - The hold is filled as title level, even though item #1 was selected for the hold, check the item in 11 - Place an item level hold for item #2 for patron A 12 - Issue item #2 to patron A, hold is filled --- C4/Reserves.pm | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/C4/Reserves.pm b/C4/Reserves.pm index 046bfd02357..a1b5451c02c 100644 --- a/C4/Reserves.pm +++ b/C4/Reserves.pm @@ -1971,12 +1971,14 @@ sub MoveReserve { # The item is reserved by someone else. # Find this item in the reserves - my $borr_res = Koha::Holds->search({ - borrowernumber => $borrowernumber, - biblionumber => $biblionumber, - },{ - order_by => 'priority' - })->next(); + my $borr_res = Koha::Holds->search( + { + borrowernumber => $borrowernumber, + biblionumber => $biblionumber, + -or => [ item_level_hold => 0, itemnumber => $itemnumber ], + }, + { order_by => 'priority' } + )->next(); if ( $borr_res ) { # The item is reserved by the current patron -- 2.39.5