From cd2f23fbe093cf41f9753a6ac435674d2d4aa16e Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Thu, 23 Jan 2020 02:38:50 +0000 Subject: [PATCH] Bug 24476: Allow patrons to opt out of auto-renewal To test: 1 - Verify on staff side that patron can be edited to opt in our out of auto renewal 2 - Check out some items to a patron opted in to auto renewal 3 - Ensure the items are checked out and set to autorenew 4 - Login on the opac at the patron 5 - Verify items cannot be renewed as scheduled for auto-renewal 6 - On staff side, opt patron out of auto renewal 7 - Verify on opac items are no longer marked for auto renewal 8 - Run the auto renewal cron job, items are not renewed 9 - Set 'no renewal before' to a setting that would prevent renewal 10 - Verify that opting patron in or out of auto renewal changes only the reason items cannot be renewed 11 - Set 'no renewal before' to a setting that would allow for renewal 12 - Verify that opting patron in/out changes their ability to renew 13 - Verify that when opted out cron does not renew 14 - Verify that when opted in the item is auto renewed 15 - Reset the due date, opt out, verify manual renewal succeeds --- .../prog/en/modules/circ/circulation.tt | 5 +++- .../prog/en/modules/members/memberentrygen.tt | 26 +++++++++++++++++++++ .../prog/en/modules/members/members-update.tt | 1 + .../prog/en/modules/members/moremember-brief.tt | 1 + .../prog/en/modules/members/moremember.tt | 6 +++++ .../bootstrap/en/modules/opac-memberentry.tt | 27 ++++++++++++++++++++++ .../opac-tmpl/bootstrap/en/modules/opac-user.tt | 6 ++--- members/memberentry.pl | 1 + misc/cronjobs/automatic_renewals.pl | 2 +- 9 files changed, 70 insertions(+), 5 deletions(-) diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt index 6c5f9ebe7d..a8c59c93b1 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt @@ -565,8 +565,11 @@
[% IF NEEDSCONFIRMATION %] - [% ELSE %] + [% ELSIF patron.autorenewal %] + [% ELSE %] + [% END %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt index 23a32e0785..7d3d809798 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt @@ -711,6 +711,32 @@ [% PROCESS 'av-build-dropbox.inc' name="sort2", category="Bsort2", default=sort2, size = 20 %] [% IF ( mandatorysort2 ) %]Required[% END %] + [% UNLESS noautorenewal %] +
  • + + [% IF ( autorenewal ) %] + + + [% ELSE %] + + + [% END %] +
  • + [% END %] [% END %] [% IF ( Koha.Preference('CheckPrevCheckout') == 'softyes' || Koha.Preference('CheckPrevCheckout') == 'softno' ) %]
  • diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/members-update.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/members-update.tt index 77b368740d..c16e432530 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/members-update.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/members-update.tt @@ -52,6 +52,7 @@ [% CASE 'contacttitle' %]Contact: Title [% CASE 'relationship' %]Contact: Relationship [% CASE 'sex' %]Gender +[% CASE 'autorenewal' %]Auto-renewal [% CASE 'altcontactfirstname' %]Alternate contact: First name [% CASE 'altcontactsurname' %]Alternate contact: Surname [% CASE 'altcontactaddress1' %]Alternate contact: Address diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember-brief.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember-brief.tt index 1c3b2c3b1b..ecac3b7f28 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember-brief.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember-brief.tt @@ -84,6 +84,7 @@
  • Library: [% patron.library.branchname | html %]
  • [% IF ( patron.sort1 ) %]
  • Sort field 1:[% AuthorisedValues.GetByCode('Bsort1', patron.sort1) | html %]
  • [% END %] [% IF ( patron.sort2 ) %]
  • Sort field 2:[% AuthorisedValues.GetByCode('Bsort2', patron.sort2) | html %]
  • [% END %] + [% UNLESS ( patron.autorenewal ) %]
  • Auto renewal: Patron has opted out
  • [% END %]
    diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt index 0bd690f142..558aac9b24 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt @@ -516,6 +516,12 @@ [% AuthorisedValues.GetByCode('Bsort2', patron.sort2) | html %] [% END %] + [% UNLESS ( patron.autorenewal ) %] +
  • + Auto renewal: + Patron has opted out +
  • + [% END %]
  • Username: [% patron.userid | html %] diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-memberentry.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-memberentry.tt index 8761cc88ae..a2bcde4516 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-memberentry.tt +++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-memberentry.tt @@ -258,6 +258,33 @@ [% END %]
  • [% END %] + [% UNLESS hidden.defined('autorenewal') %] +
  • + + [% IF ( borrower.autorenewal ) %] + + + + [% ELSE %] + + + [% END %] +
  • + [% END %] [% END # / defined 'branchcode' %] diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt index 879867af0a..d92dc571fb 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt +++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt @@ -324,12 +324,12 @@ [% ELSIF ISSUE.auto_account_expired %] Automatic renewal failed, your account is expired. ([% ISSUE.renewsleft | html %] of [% ISSUE.renewsallowed | html %] renewals remaining) - [% ELSIF ( ISSUE.auto_renew || ISSUE.auto_too_soon ) %] - Automatic renewal - ([% ISSUE.renewsleft | html %] of [% ISSUE.renewsallowed | html %] renewals remaining) [% ELSIF ( ISSUE.too_soon ) %] No renewal before [% ISSUE.soonestrenewdate | html %] ([% ISSUE.renewsleft | html %] of [% ISSUE.renewsallowed | html %] renewals remaining) + [% ELSIF ( ISSUE.auto_renew || ISSUE.auto_too_soon ) %] + Automatic renewal + ([% ISSUE.renewsleft | html %] of [% ISSUE.renewsallowed | html %] renewals remaining) [% ELSIF ( ISSUE.item_denied_renewal ) %] Renewal not allowed [% END %] diff --git a/members/memberentry.pl b/members/memberentry.pl index 902beeb0e8..e6f6458cf0 100755 --- a/members/memberentry.pl +++ b/members/memberentry.pl @@ -725,6 +725,7 @@ $template->param(no_add => $no_add); $template->param( sort1 => $data{'sort1'}); $template->param( sort2 => $data{'sort2'}); +$template->param( autorenew => $data{'autorenew'}); if ($nok) { foreach my $error (@errors) { diff --git a/misc/cronjobs/automatic_renewals.pl b/misc/cronjobs/automatic_renewals.pl index fb1cf03ba9..f737d7eab9 100755 --- a/misc/cronjobs/automatic_renewals.pl +++ b/misc/cronjobs/automatic_renewals.pl @@ -70,7 +70,7 @@ GetOptions( pod2usage(0) if $help; cronlogaction(); -my $auto_renews = Koha::Checkouts->search({ auto_renew => 1 }); +my $auto_renews = Koha::Checkouts->search({ auto_renew => 1, 'borrower.autorenewal' => 1 },{ join => 'borrower'}); my %report; while ( my $auto_renew = $auto_renews->next ) { -- 2.11.0