https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=41809 --- Comment #1 from Andrii Nugged <nugged@gmail.com> --- Created attachment 204547 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=204547&action=edit Bug 41809: Preserve waiting hold on other-item checkout When a patron checks out another item from a record with a waiting title-level hold, MoveReserve fills the hold using the checked-out item. This moves the hold to history and detaches the pickup-shelf item, leaving staff without an action to remove it. For a waiting hold, add a cancellation request instead. The hold remains linked to the pickup-shelf item until staff processes the request. Keep the existing fill behavior for non-waiting title-level holds. The regression test models a captured title-level hold and verifies that repeated MoveReserve calls create only one cancellation request. Test plan: Before applying the patch: 1. In Administration > Circulation and fine rules, set "Fill other holds on record" to "Yes" for an item type. 2. Create a record with two available items of that item type. 3. Place a record-level hold for a patron. 4. Open Circulation > Check in. 5. Check in item A. 6. Click "Confirm" to make item A waiting. 7. Open the checkout page for the same patron. 8. Check out item B. 9. Confirm the checkout success message names item B. 10. Confirm "Holds waiting here" no longer lists item A. 11. Open Circulation > Holds awaiting pickup. 12. Confirm "Holds with cancellation requests" does not list item A. Apply the patch. After applying the patch: 1. Create a fresh record with two available items of the same item type. 2. Place a record-level hold for a patron. 3. Open Circulation > Check in. 4. Check in item A. 5. Click "Confirm" to make item A waiting. 6. Open the checkout page for the same patron. 7. Check out item B. 8. Confirm the checkout success message names item B. 9. Confirm "Holds waiting here" still lists item A. 10. Open Circulation > Holds awaiting pickup. 11. Confirm "Holds with cancellation requests" lists item A. 12. Place a record-level hold that has not been captured for a patron. 13. Open the checkout page for the same patron. 14. Check out an item from that record. 15. Confirm the non-waiting hold is filled as before. Automated tests: 1. prove t/db_dependent/Reserves.t Co-Authored-By: Loontik <loontik@nugged.team> -- You are receiving this mail because: You are watching all bug changes.