From 276f188e795485716cb6716dbe3bfe31f69f6300 Mon Sep 17 00:00:00 2001 From: Martin Renvoize Date: Fri, 30 Jan 2026 12:10:16 +0000 Subject: [PATCH] Bug 41679: Fix overlapping modals when hold conflicts with stock rotation transfer When checking in an item that has both a hold and a stock rotation repatriation transfer, both modals would appear simultaneously, overlapping each other and making it impossible to interact with either one properly. This occurred because: 1. The hold modal showed when 'waiting' was set 2. The transfer modal condition checked for 'reserved' but not 'waiting' 3. Both modals had the "block" class, causing simultaneous display This patch ensures holds take precedence over stock rotation transfers by adding a check for the 'waiting' flag to the transfer modal condition. When a hold is found, only the hold modal displays. The stock rotation transfer can be handled at a subsequent check-in, which is appropriate since holds are patron-facing and time-sensitive, while stock rotation is an internal process that can be deferred. Test plan: 1. Enable StockRotation system preference 2. Navigate to Cataloging->Stock rotation 3. Click '+ New rota' and fill out with any values 4. Click 'Manage->stages' for the Rota 5. Add a stage for Centerville for 1 day, and Midway for 1 day 6. Return to rotas 7. Click Manage->items for the rota 8. Add an item 9. Return to rotas 10. Click 'Activate' 11. On the command line run the stock rotation job: perl misc/cronjobs/stockrotation.pl -x 12. There should be one item for initiation 13. Run it again, there should be one stationary item 14. Place an item specific hold for the item, for pickup at Midway 15. Check the item in at Centerville, confirm transfer 16. Check the item in at Midway, confirm hold 17. Run the stock rotation job again: perl misc/cronjobs/stockrotation.pl -x 18. There should be one item for repatriation 19. Check in the item again at Midway 20. Before patch: Two overlapping modals appear (hold + transfer) 21. After patch: Only the hold modal appears 22. Confirm the hold - no transfer modal should appear 23. The stock rotation transfer will be handled at the next check-in --- koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt index 31bea0dc2bd..ea934d014b5 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt @@ -790,7 +790,7 @@ [% END # /IF waiting %] - [% IF (transfer || needstransfer) && !(reserved and !recalled and !waitingrecall) %] + [% IF (transfer || needstransfer) && !waiting && !(reserved and !recalled and !waitingrecall) %] [% IF Koha.Preference('TransfersBlockCirc') %] [% SET div_class='block' %] [% ELSE %] -- 2.52.0