From 23548863db6228a45b5a1487408bf1df590c0169 Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Tue, 11 Jun 2019 16:10:06 +0000 Subject: [PATCH] Bug 19014: Only process issues for autorenewal if on or after soonest renewal date This patch check the soonest renewal date and skips processing auto renewals if before this date This ensures patrons won't get notifications far in advance if an item is on hold or has other issues To test: 1 - Checkout an item to a patron with a due date 2 days in the future and 'No renewal before' unset 2 - Place a hold on that item 3 - Define an AUTO_RENEWALS circulation notice with below at a minimum [% checkout.auto_renew_error %] 4 - perl misc/cronjobs/automatic_renewals.pl --send-notices 5 - Patron is not notified 6 - Set 'No renewal before' to 1 7 - run cronjob 8 - Patron is notified with error 'on_reserve' 9 - Set 'No renewal before' to 3 10 - UPDATE issues SET auto_renew_error = NULL; 11 - run cronjob 12 - Patron is notified with error 'on_reserve' 13 - APPLY PATCH 14 - Unset 'No renewal before' 15 - UPDATE issues SET auto_renew_error = NULL; 16 - run cronjob 17 - Patron is not notified 18 - UPDATE issues SET auto_renew_error = NULL; 19 - Set 'No renewal before' to 1 20 - run cronjob 21 - Patron is notified with error 'on_reserve' 22 - Set 'No renewal before' to 3 23 - UPDATE issues SET auto_renew_error = NULL; 24 - run cronjob 25 - Patron is not notified Signed-off-by: Signed-off-by: Signed-off-by: Hasina Akhter --- misc/cronjobs/automatic_renewals.pl | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/misc/cronjobs/automatic_renewals.pl b/misc/cronjobs/automatic_renewals.pl index fb1cf03ba9..a442ff5716 100755 --- a/misc/cronjobs/automatic_renewals.pl +++ b/misc/cronjobs/automatic_renewals.pl @@ -75,6 +75,12 @@ my $auto_renews = Koha::Checkouts->search({ auto_renew => 1 }); my %report; while ( my $auto_renew = $auto_renews->next ) { +#If norenewalbefore is undef, $NoRenewalBeforeThisDate will equal $now. + my $NoRenewalBeforeThisDate = C4::Circulation::GetSoonestRenewDate($auto_renew->borrowernumber, $auto_renew->itemnumber); + my $now = Koha::DateUtils::dt_from_string; + if ( $NoRenewalBeforeThisDate > $now ){ + next; + } # CanBookBeRenewed returns 'auto_renew' when the renewal should be done by this script my ( $ok, $error ) = CanBookBeRenewed( $auto_renew->borrowernumber, $auto_renew->itemnumber ); if ( $error eq 'auto_renew' ) { -- 2.11.0