# Fallback for automatic renewals:
# If norenewalbefore is undef, don't renew before due date.
- if ( $issue->auto_renew && !$auto_renew ) {
+ if ( $issue->auto_renew && !$auto_renew && $patron->autorenew_checkouts ) {
my $now = dt_from_string;
if ( $now >= dt_from_string( $issue->date_due, 'sql' ) ){
$auto_renew = 1;
<div id="set-automatic-renewal" class="circ-setting">
[% IF NEEDSCONFIRMATION %]
[% IF auto_renew %]
- <input type="checkbox" name="auto_renew" id="auto_renew" value="auto_renew" disabled="disabled" checked="checked" />
+ [% IF patron.autorenewal %]
+ <input type="checkbox" name="auto_renew" id="auto_renew" value="auto_renew" disabled="disabled"
+ title="Patron has opted out of auto-renewal"/>
+ [% ELSE %]
+ <input type="checkbox" name="auto_renew" id="auto_renew" value="auto_renew" disabled="disabled" checked="checked" />
+ [% END %]
[% ELSE %]
<input type="checkbox" name="auto_renew" id="auto_renew" value="auto_renew" disabled="disabled" />
[% END %]
[% ELSE %]
- [% IF auto_renew %]
+ [% IF ( auto_renew && patron.autorenewal ) %]
<input type="checkbox" name="auto_renew" id="auto_renew" value="auto_renew" class="circ_setting" checked="checked" />
- [% ELSE %]
+ [% ELSIF patron.autorenewal %]
<input type="checkbox" name="auto_renew" id="auto_renew" value="auto_renew" class="circ_setting" />
+ [% ELSE %]
+ <input type="checkbox" name="auto_renew" id="auto_renew" value="auto_renew" disabled="disabled"
+ title="Patron has opted out of auto-renewal"/>
[% END %]
[% END %]
</li>
[% END # /UNLESS nosort2 %]
+ [% UNLESS noautorenewal %]
+ <li class="radio">
+ <label for="yes-autorenewal">
+ Allow auto-renewal of items:
+ </label>
+ [% IF ( autorenewal ) %]
+ <label for="yes-autorenewal">
+ Yes
+ <input type="radio" id="yes-autorenewal" name="autorenewal" value="1" checked="checked" />
+ </label>
+ <label for="no-autorenewal">
+ No
+ <input type="radio" id="no-autorenewal" name="autorenewal" value="0" />
+ </label>
+ [% ELSE %]
+ <label for="yes-autorenewal">
+ Yes
+ <input type="radio" id="yes-autorenewal" name="autorenewal" value="1" />
+ </label>
+ <label for="no-autorenewal">
+ No
+ <input type="radio" id="no-autorenewal" name="autorenewal" value="0" checked="checked" />
+ </label>
+ [% END %]
+ </li>
+ [% END %]
+
[% IF ( Koha.Preference('CheckPrevCheckout') == 'softyes' || Koha.Preference('CheckPrevCheckout') == 'softno' ) %]
<li>
<label for="checkprevcheckout">Check for previous checkouts: </label>
[% CASE 'contacttitle' %]<span>Contact: Title</span>
[% CASE 'relationship' %]<span>Contact: Relationship</span>
[% CASE 'sex' %]<span>Gender</span>
+[% CASE 'autorenewal' %]<span>Auto-renewal</span>
[% CASE 'altcontactfirstname' %]<span>Alternate contact: First name</span>
[% CASE 'altcontactsurname' %]<span>Alternate contact: Surname</span>
[% CASE 'altcontactaddress1' %]<span>Alternate contact: Address</span>
<li><span class="label">Library: </span>[% patron.library.branchname | html %]</li>
[% IF ( patron.sort1 ) %]<li><span class="label">Sort field 1:</span>[% AuthorisedValues.GetByCode('Bsort1', patron.sort1) | html %]</li>[% END %]
[% IF ( patron.sort2 ) %]<li><span class="label">Sort field 2:</span>[% AuthorisedValues.GetByCode('Bsort2', patron.sort2) | html %]</li>[% END %]
+ [% UNLESS ( patron.autorenewal ) %]<li>Auto renewal: Patron has opted out</li>[% END %]
</ol>
</div>
</div>
[% AuthorisedValues.GetByCode('Bsort2', patron.sort2) | html %]
</li>
[% END %]
+ [% UNLESS ( patron.autorenewal ) %]
+ <li id="patron-autorenewal">
+ <span class="label">Auto renewal:</span>
+ Patron has opted out
+ </li>
+ [% END %]
<li id="patron-username">
<span class="label">Username: </span>
[% patron.userid | html %]
[% END %]
</li>
[% END %]
+ [% UNLESS hidden.defined('autorenewal') %]
+ <li class="lradio">
+ <label for="yes-autorenewal">
+ Allow auto-renewal:
+ </label>
+ [% IF ( borrower.autorenewal ) %]
+ <label class="radio inline" for="yes-autorenewal">
+ Yes
+ <input type="radio" id="yes-autorenewal" name="borrower_autorenewal" value="1" checked="checked" />
+ </label>
+
+ <label class="radio inline" for="no-autorenewal">
+ No
+ <input type="radio" id="no-autorenewal" name="borrower_autorenewal" value="0" />
+ </label>
+ [% ELSE %]
+ <label class="radio inline" for="yes-autorenewal">
+ Yes
+ <input type="radio" id="yes-autorenewal" name="borrower_autorenewal" value="1" />
+ </label>
+ <label class="radio inline" for="no-autorenewal">
+ No
+ <input type="radio" id="no-autorenewal" name="borrower_autorenewal" value="0" checked="checked" />
+ </label>
+ [% END %]
+ </li>
+ [% END %]
</ol>
</fieldset>
[% END # / defined 'branchcode' %]
[% ELSIF ISSUE.auto_account_expired %]
Automatic renewal failed, your account is expired.
<span class="renewals">([% ISSUE.renewsleft | html %] of [% ISSUE.renewsallowed | html %] renewals remaining)</span>
- [% ELSIF ( ISSUE.auto_renew || ISSUE.auto_too_soon ) %]
- Automatic renewal
- <span class="renewals">([% ISSUE.renewsleft | html %] of [% ISSUE.renewsallowed | html %] renewals remaining)</span>
[% ELSIF ( ISSUE.too_soon ) %]
No renewal before [% ISSUE.soonestrenewdate | html %]
<span class="renewals">([% ISSUE.renewsleft | html %] of [% ISSUE.renewsallowed | html %] renewals remaining)</span>
+ [% ELSIF ( ISSUE.auto_renew || ISSUE.auto_too_soon ) %]
+ Automatic renewal
+ <span class="renewals">([% ISSUE.renewsleft | html %] of [% ISSUE.renewsallowed | html %] renewals remaining)</span>
[% ELSIF ( ISSUE.item_denied_renewal ) %]
Renewal not allowed
[% END %]
$template->param( sort1 => $data{'sort1'});
$template->param( sort2 => $data{'sort2'});
+$template->param( autorenew => $data{'autorenew'});
if ($nok) {
foreach my $error (@errors) {
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;
$verbose = 1 unless $verbose or $confirm;
my ( $reused_itemnumber_1, $reused_itemnumber_2 );
subtest "CanBookBeRenewed tests" => sub {
- plan tests => 77;
+ plan tests => 83;
C4::Context->set_preference('ItemsDeniedRenewal','');
# Generate test biblio