Bug 41260 - Running holds reminder cronjob with both triggered and holidays parameter may leave hold reminders unformed
Summary: Running holds reminder cronjob with both triggered and holidays parameter may...
Status: Needs Signoff
Alias: None
Product: Koha
Classification: Unclassified
Component: Command-line Utilities (show other bugs)
Version: Main
Hardware: All All
: P5 - low normal
Assignee: Emmi Takkinen
QA Contact: Testopia
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-11-18 11:08 UTC by Emmi Takkinen
Modified: 2025-12-03 12:40 UTC (History)
1 user (show)

See Also:
GIT URL:
Initiative type: ---
Sponsorship status: ---
Comma delimited list of Sponsors:
Crowdfunding goal: 0
Patch complexity: ---
Documentation contact:
Documentation submission:
Text to go in the release notes:
Version(s) released in:
Circulation function:


Attachments
Bug 41260: Ensure hold reminders are send for holds with waiting date on holiday (2.92 KB, patch)
2025-12-03 12:40 UTC, Emmi Takkinen
Details | Diff | Splinter Review

Note You need to log in before you can comment on or make changes to this bug.
Description Emmi Takkinen 2025-11-18 11:08:29 UTC
If one runs cronjob holds_reminder.pl with both triggered and holidays parameter, reminders are not formed for holds which waiting date is same as library's closing date.

This happens because triggered parameter changes crons functionality to handle only holds which waiting date is exactly the same one as variable $waiting_since. If date in holds waiting date is bypassed by above conditions reminder is never formed.

To reproduce:
1. Find hold which waiting date is 2 days from day you're testing this or update one holds waitingdate value directly from database.
2. Set day which is same as the holds waiting date as closing day from that library's calendar where hold is waiting in.
3. Run perl holds_reminder.pl -v -days 2 --triggered -holidays -c
=> Note that no reminder is formed for the hold.
4. Wait for one day and run the cron again.
=> Note that no reminder is formed for the hold.
5. Now run cron without triggered parameter.
=> Reminder id formed.

Triggered parameter is supposed to prevent spamming patrons with hold reminders, but it shouldn't prevent libraries from sending out reminders in cases where hold just happens to have waiting date on a closing date.
Comment 1 Emmi Takkinen 2025-12-03 12:40:39 UTC
Created attachment 190105 [details] [review]
Bug 41260: Ensure hold reminders are send for holds with waiting date on holiday

If one runs cronjob holds_reminder.pl with both triggered and
holidays parameter, reminders are not formed for holds which have
same date as waiting date as library's closing date. This happens
because triggered parameter changes crons functionality to handle
only holds which waiting date is exactly the same one as variable
$waiting_since. If date in holds waiting date is bypassed by above
conditions, reminder is never formed.

This patch adds new condition which checks that if triggered
parameter is used and the date used in variable $waiting_date_static
is a holiday. If both are true we use $waiting_date_static as a
condition to search for holds waiting for pick up instead of
skipping holidays with addDays method.

To test:
1. Find hold which waiting date is 2 days from the day when you're
testing this or update one holds waitingdate value directly
from database.
2. Set day which is same as the holds waiting date as closing day
from that library's calendar where hold is waiting in.
3. Run perl holds_reminder.pl -v -days 2 --triggered -holidays -c
=> Note that no reminder is formed for the hold.
4. Now run cron without triggered parameter.
=> Note that reminder is formed.
5. Apply this patch.
6. Run cron again with triggerred parameter.
=> Note that reminder is now formed.

Sponsored-by: Koha-Suomi Oy