From 2acb46fb73092f6ebe781903a5506537d2fec696 Mon Sep 17 00:00:00 2001 From: Agustin Moyano Date: Wed, 28 Oct 2020 10:48:18 -0300 Subject: [PATCH] Bug 24359: Remove hold from holds queue when captured This patch removes a hold from holds queue when captured by check in. To test: 1. check out an item from a book with multiple items for patron_1 2. place a biblio level hold for patron_2 3. perl misc/cronjobs/holds/build_holds_queue.pl CHECK => holds queue shows the placed hold 4. check in the item from step 1 and confirm hold for patron_2 SUCCESS => hold for patron_2 is no longer in holds queue 5. prove t/db_dependent/HoldsQueue.t Signed-off-by: Martin Renvoize Signed-off-by: Tomas Cohen Arazi Signed-off-by: Kyle M Hall --- C4/Reserves.pm | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/C4/Reserves.pm b/C4/Reserves.pm index db236947c5..88d00fd98c 100644 --- a/C4/Reserves.pm +++ b/C4/Reserves.pm @@ -1162,6 +1162,8 @@ if $transferToDo is not set, then the status is set to "Waiting" as well. otherwise, a transfer is on the way, and the end of the transfer will take care of the waiting status +This function also removes any entry of the hold in holds queue table. + =cut sub ModReserveAffect { @@ -1217,6 +1219,19 @@ sub ModReserveAffect { CartToShelf( $itemnumber ); } + my $std = $dbh->prepare(q{ + DELETE q, t + FROM tmp_holdsqueue q + INNER JOIN hold_fill_targets t + ON q.borrowernumber = t.borrowernumber + AND q.biblionumber = t.biblionumber + AND q.itemnumber = t.itemnumber + AND q.item_level_request = t.item_level_request + AND q.holdingbranch = t.source_branchcode + WHERE t.reserve_id = ? + }); + $std->execute($hold->reserve_id); + logaction( 'HOLDS', 'MODIFY', $hold->reserve_id, Dumper($hold->unblessed) ) if C4::Context->preference('HoldsLog'); -- 2.24.1 (Apple Git-126)