From 7494fa2495af30b43204aeafc76649284491ce95 Mon Sep 17 00:00:00 2001 From: Lisette Scheer Date: Tue, 30 Sep 2025 16:16:41 +0000 Subject: [PATCH] Bug 35700: Holds reminder cronjob - Fix --triggered switch if the day to send notice hits concurrent holidays If the holds reminder cronjob would send a reminder on a holiday,when holidays are taken into account, it also will send it on the subsequent holidays and the first open day. This bugfix adds a check to the cron when --holidays is set to skip sending the notices for that library if today is a holiday. To Test: Before applying: 1. Create a hold for a patron (I used patron 23529000035676 and 39999000000252) 2. Ensure your patron has an email address set and the hold reminder email selected. 3. Set the hold to waiting by checking it and confirming the hold. 4. In Tools->Calendar add a holiday to yesterday and a seperate holiday to today. 5. On the command line (the date should be set to 5 days ago for my commands to work and any dates adjusted accordingly) koha-mysql kohadev update reserves set waitingdate="2025-09-25" exit perl misc/cronjobs/holds/holds_reminder.pl -days 3 -t -v -holidays --date 2025-09-29 6. Observe that 1 notice would have sent to your patron 7. On the command line perl misc/cronjobs/holds/holds_reminder.pl -days 3 -t -v -holidays 8. Observe that 1 notice would have sent to your patron 9. On the command line perl misc/cronjobs/holds/holds_reminder.pl -days 3 -t -v -holidays --date 2025-10-01 10. Observe that 1 notice would have sent to your patron 11. Apply patches 12. Repeat the last command from step 5 and step 7 13. Observe that no notice should be sent for your patron 14. Repeat step 7 15. Observe that a notice should be sent for your patron. 16. Run perl misc/cronjobs/holds/holds_reminder.pl -days 5 -t -v 17. Confirm the notice should be sent for your patron 18. Sign off Signed-off-by: Katie Bliss Bug 35700: (QA follow-up) fix POD and $today This patch replaces the inncorrectly removed POD note and replaces $today with the more correct $date_to_run for checking if we should be skipping sending the message on the day. Amended-by: Jonathan Druart Squashed and adjusted commit title Signed-off-by: Jonathan Druart --- misc/cronjobs/holds/holds_reminder.pl | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/misc/cronjobs/holds/holds_reminder.pl b/misc/cronjobs/holds/holds_reminder.pl index 6269301ee99..33ccfb37c8d 100755 --- a/misc/cronjobs/holds/holds_reminder.pl +++ b/misc/cronjobs/holds/holds_reminder.pl @@ -120,7 +120,6 @@ If omitted the patron's messaging preferences for Hold notices will be used. If supplied the notice types will be force sent even if patron has not selected hold notices Email and SMS will fall back to print if there is no valid info in the patron's account - =back =head1 DESCRIPTION @@ -244,8 +243,13 @@ foreach my $branchcode (@branchcodes) { #BEGIN BRANCH LOOP my $waiting_date; if ($use_calendar) { my $calendar = Koha::Calendar->new( branchcode => $branchcode, days_mode => 'Calendar' ); - my $duration = DateTime::Duration->new( days => -$days ); - $waiting_date = $calendar->addDays( $date_to_run, $duration ); #Add negative of days + + #if today is a holiday skip sending the message + next if $calendar->is_holiday($date_to_run); + { + my $duration = DateTime::Duration->new( days => -$days ); + $waiting_date = $calendar->addDays( $date_to_run, $duration ); #Add negative of days + } } else { $waiting_date = $waiting_date_static; } -- 2.34.1