From d02f87a2986bd20e513e02ab299a9b66af9ea08f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Holger=20Mei=C3=9Fner?= Date: Fri, 16 May 2014 13:14:32 +0200 Subject: [PATCH] Bug 11577: Add an automatic renewal cronjob MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This patch adds a new cron script automatic_renewals.pl and a new entry in crontab.example. To test: 1) You need a few issues, some with automatic renewal and some without. 2) Confirm that each time you run misc/cronjobs/automatic_renewals.pl those issues are renewed that meet all of the following criteria: - automatic renewal has been scheduled either by issuing rule or by checkbox on the checkout page - the number of allowed renewals isn't exceeded - renewal isn't premature (No renewal before) 3) Confirm that all other issues are not affected. Sponsored-by: Hochschule für Gesundheit (hsg), Germany Signed-off-by: Chris Cormack Signed-off-by: Martin Renvoize Signed-off-by: Tomas Cohen Arazi --- debian/koha-common.cron.daily | 1 + misc/cronjobs/automatic_renewals.pl | 60 +++++++++++++++++++++++++++++ misc/cronjobs/crontab.example | 3 ++ 3 files changed, 64 insertions(+) create mode 100644 misc/cronjobs/automatic_renewals.pl diff --git a/debian/koha-common.cron.daily b/debian/koha-common.cron.daily index 2f899b08c2..f62ad53e01 100644 --- a/debian/koha-common.cron.daily +++ b/debian/koha-common.cron.daily @@ -23,4 +23,5 @@ koha-foreach --enabled /usr/share/koha/bin/cronjobs/services_throttle.pl > /dev/ koha-foreach --enabled /usr/share/koha/bin/cronjobs/cleanup_database.pl --sessions --zebraqueue 10 --list-invites koha-foreach --enabled --noemail /usr/share/koha/bin/cronjobs/cleanup_database.pl --mail koha-foreach --enabled /usr/share/koha/bin/cronjobs/holds/auto_unsuspend_holds.pl > /dev/null 2>&1 +koha-foreach --enabled /usr/share/koha/bin/cronjobs/automatic_renewals.pl koha-run-backups --days 2 --output /var/spool/koha diff --git a/misc/cronjobs/automatic_renewals.pl b/misc/cronjobs/automatic_renewals.pl new file mode 100644 index 0000000000..1ecfc4785a --- /dev/null +++ b/misc/cronjobs/automatic_renewals.pl @@ -0,0 +1,60 @@ +# This file is part of Koha. +# +# Copyright (C) 2014 Hochschule für Gesundheit (hsg), Germany +# +# Koha is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# Koha is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . + +=head1 NAME + +automatic_renewals.pl - cron script to renew loans + +=head1 SYNOPSIS + +./automatic_renewals.pl + +or, in crontab: +0 3 * * * automatic_renewals.pl + +=head1 DESCRIPTION + +This script searches for issues scheduled for automatic renewal +(issues.auto_renew). If there are still renews left (Renewals allowed) +and the renewal isn't premature (No Renewal before) the issue is renewed. + +=head1 OPTIONS + +No options. + +=cut + +use Modern::Perl; + +use C4::Circulation; +use C4::Context; + +my $dbh = C4::Context->dbh; +my ( $borrowernumber, $itemnumber, $branch, $ok, $error ); + +my $query = +"SELECT borrowernumber, itemnumber, branchcode FROM issues WHERE auto_renew = 1"; +my $sth = $dbh->prepare($query); +$sth->execute(); + +while ( ( $borrowernumber, $itemnumber, $branch ) = $sth->fetchrow_array ) { + +# CanBookBeRenewed returns 'auto_renew' when the renewal should be done by this script + ( $ok, $error ) = CanBookBeRenewed( $borrowernumber, $itemnumber ); + AddRenewal( $borrowernumber, $itemnumber, $branch ) + if ( $error eq "auto_renew" ); +} diff --git a/misc/cronjobs/crontab.example b/misc/cronjobs/crontab.example index a937bf0020..5ef68cba6b 100644 --- a/misc/cronjobs/crontab.example +++ b/misc/cronjobs/crontab.example @@ -85,3 +85,6 @@ KOHA_CRON_PATH = /usr/share/koha/bin/cronjobs # delete old purchase suggestions weekly. Replace XX with a number to define the age of suggestions to delete. @weekly __KOHA_USER__ $KOHA_CRON_PATH/purge_suggestions.pl --days XX > /dev/null 2>&1 + +# every day at 3AM renew all issues scheduled for automatic renewal +0 3 * * * __KOHA_USER__ $KOHA_CRON_PATH/automatic_renewals.pl -- 2.39.5