From b91c1d6005dbcfcd2dda885515cf5d377217f2c4 Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Thu, 11 Jan 2024 09:31:45 -0500 Subject: [PATCH] Bug 35357: Remove item from holds queue when it is checked out Test Plan: 1) Place a hold on an item 2) Build the holds queue 3) Check out the item to a different patron than the one targeted in the holds queue 4) Verify the holds queue viewer still shows that item and patron 5) Apply this patch 6) Repeat stepts 1 through 3 7) Verify the holds queue viewer no longer shows that patron and item! Signed-off-by: Owen Leonard Signed-off-by: Victor Grousset/tuxayo Signed-off-by: Katrin Fischer (cherry picked from commit 0eced8086634e0a77786ce4ea2bfc6e36f969b85) Signed-off-by: Fridolin Somers --- C4/Circulation.pm | 6 ++++++ t/db_dependent/HoldsQueue.t | 13 +++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index b98c4098a9..2d2b61f6fc 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -1729,6 +1729,12 @@ sub AddIssue { %$issue_attributes, } )->store; + + # Ensure item is no longer listed in the holds queue + $dbh->do( + q{DELETE tmp_holdsqueue, hold_fill_targets FROM tmp_holdsqueue LEFT JOIN hold_fill_targets USING ( itemnumber ) WHERE itemnumber = ?}, + undef, $item_object->id + ); } $issue->discard_changes; $patron->update_lastseen('check_out'); diff --git a/t/db_dependent/HoldsQueue.t b/t/db_dependent/HoldsQueue.t index 6bb0d8f0c1..8fb0b94c4c 100755 --- a/t/db_dependent/HoldsQueue.t +++ b/t/db_dependent/HoldsQueue.t @@ -2114,8 +2114,7 @@ subtest 'Remove item from holds queue on checkout' => sub { } ); - my $item = $builder->build_sample_item( - { homebranch => $lib->branchcode, holdingbranch => $lib->branchcode } ); + my $item = $builder->build_sample_item( { homebranch => $lib->branchcode, holdingbranch => $lib->branchcode } ); t::lib::Mocks::mock_userenv( { branchcode => $lib->branchcode } ); @@ -2131,11 +2130,17 @@ subtest 'Remove item from holds queue on checkout' => sub { C4::HoldsQueue::CreateQueue(); - is( Koha::Hold::HoldsQueueItems->search({ itemnumber => $item->id })->count(), 1, "Item is found in the holds queue" ); + is( + Koha::Hold::HoldsQueueItems->search( { itemnumber => $item->id } )->count(), 1, + "Item is found in the holds queue" + ); AddIssue( $patron1, $item->barcode, dt_from_string ); - is( Koha::Hold::HoldsQueueItems->search({ itemnumber => $item->id })->count(), 0, "Item is no longer found in the holds queue" ); + is( + Koha::Hold::HoldsQueueItems->search( { itemnumber => $item->id } )->count(), 0, + "Item is no longer found in the holds queue" + ); $schema->storage->txn_rollback; }; -- 2.39.5