Bug 9762: (Alternative) Handle renewals

Signed-off-by: Martin Renvoize <martin.renvoize@openfifth.co.uk>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
(cherry picked from commit 255c0897f2)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
This commit is contained in:
Martin Renvoize 2025-04-25 17:21:13 +01:00 committed by Paul Derscheid
parent 3cb8cccf7e
commit 4921bb669a
No known key found for this signature in database
GPG Key ID: C25F9FD44CED595B
3 changed files with 38 additions and 14 deletions

View File

@ -3488,6 +3488,8 @@ sub AddRenewal {
my $seen = $params->{seen};
my $automatic = $params->{automatic};
my $skip_record_index = $params->{skip_record_index};
my $confirmations = $params->{confirmations};
my $forced = $params->{forced};
# Fallback on a 'seen' renewal
$seen = defined $seen && $seen == 0 ? 0 : 1;
@ -3561,10 +3563,12 @@ sub AddRenewal {
);
if ( !$seen && $rule && looks_like_number( $rule->rule_value ) ) {
$unseen_renewals++;
push @{$confirmations}, 'UNSEEN';
} else {
# If the renewal is seen, unseen should revert to 0
$unseen_renewals = 0;
push @{$confirmations}, 'SEEN';
}
}
@ -3677,8 +3681,24 @@ sub AddRenewal {
};
#Log the renewal
logaction( "CIRCULATION", "RENEWAL", $borrowernumber, $itemnumber )
if C4::Context->preference("RenewalLog");
if ( C4::Context->preference("RenewalLog") ) {
my $info = $itemnumber;
if ( defined($confirmations) || defined($forced) ) {
$info = to_json(
{
issue => $issue->issue_id,
itemnumber => $itemnumber,
confirmations => $confirmations,
forced => $forced
},
{
pretty => 1,
cononical => 1
}
);
}
logaction( "CIRCULATION", "RENEWAL", $borrowernumber, $info );
}
Koha::Plugins->call(
'after_circ_action',

View File

@ -71,9 +71,11 @@ if ( $op eq 'cud-renew' && $barcode ) {
my @message;
if ( ( $patron->is_debarred || q{} ) lt dt_from_string()->ymd() ) {
my $confirmations;
my $can_renew;
my $info;
( $can_renew, $error, $info ) = CanBookBeRenewed( $patron, $checkout, $override_limit );
push @{$confirmations}, $override_limit if $override_limit;
if ( $error && ( $error eq 'on_reserve' ) ) {
if ($override_holds) {
@ -126,7 +128,8 @@ if ( $op eq 'cud-renew' && $barcode ) {
itemnumber => $item->itemnumber(),
branch => $branchcode,
datedue => $date_due,
seen => !$unseen
seen => !$unseen,
confirmations => $confirmations
}
);
$template->param( date_due => $date_due );

View File

@ -59,7 +59,7 @@
<form method="post" action="/cgi-bin/koha/circ/renew.pl">
[% INCLUDE 'csrf-token.inc' %]
<input type="hidden" name="barcode" value="[% item.barcode | html %]" />
<input type="hidden" name="override_limit" value="1" />
<input type="hidden" name="override_limit" value="RENEWAL_LIMIT" />
<input type="hidden" name="op" value="cud-renew" />
<input type="hidden" name="hard_due_date" value="[% hard_due_date | html %]" />
<button type="submit" class="btn btn-default approve"><i class="fa fa-check"></i> Override limit and renew</button>
@ -72,7 +72,7 @@
<form method="post" action="/cgi-bin/koha/circ/renew.pl">
[% INCLUDE 'csrf-token.inc' %]
<input type="hidden" name="barcode" value="[% item.barcode | html %]" />
<input type="hidden" name="override_limit" value="1" />
<input type="hidden" name="override_limit" value="UNSEEN_LIMIT" />
<input type="hidden" name="op" value="cud-renew" />
<button type="submit" class="btn btn-default approve"><i class="fa fa-check"></i> Override limit and renew</button>
</form>
@ -84,7 +84,7 @@
<form method="post" action="/cgi-bin/koha/circ/renew.pl">
[% INCLUDE 'csrf-token.inc' %]
<input type="hidden" name="barcode" value="[% item.barcode | html %]" />
<input type="hidden" name="override_limit" value="1" />
<input type="hidden" name="override_limit" value="TOO_SOON" />
<input type="hidden" name="op" value="cud-renew" />
<button type="submit" class="btn btn-default approve"><i class="fa fa-check"></i> Override and renew</button>
</form>
@ -96,7 +96,7 @@
<form method="post" action="/cgi-bin/koha/circ/renew.pl">
[% INCLUDE 'csrf-token.inc' %]
<input type="hidden" name="barcode" value="[% item.barcode | html %]" />
<input type="hidden" name="override_limit" value="1" />
<input type="hidden" name="override_limit" value="AUTO_TOO_SOON" />
<input type="hidden" name="op" value="cud-renew" />
<button type="submit" class="btn btn-default approve"><i class="fa fa-check"></i> Override and renew</button>
</form>
@ -108,7 +108,7 @@
<form method="post" action="/cgi-bin/koha/circ/renew.pl">
[% INCLUDE 'csrf-token.inc' %]
<input type="hidden" name="barcode" value="[% item.barcode | html %]" />
<input type="hidden" name="override_limit" value="1" />
<input type="hidden" name="override_limit" value="AUTO_TOO_LATE" />
<input type="hidden" name="op" value="cud-renew" />
<input type="submit" class="btn btn-default approve" value="Override and renew" />
</form>
@ -120,19 +120,20 @@
<form method="post" action="/cgi-bin/koha/circ/renew.pl">
[% INCLUDE 'csrf-token.inc' %]
<input type="hidden" name="barcode" value="[% item.barcode | html %]" />
<input type="hidden" name="override_limit" value="1" />
<input type="hidden" name="override_limit" value="ACCOUNT_EXPIRED" />
<input type="hidden" name="op" value="cud-renew" />
<input type="submit" class="btn btn-default approve" value="Override and renew" />
</form>
[% END %]
[% ELSIF error == "auto_renew" or error == "auto_too_much_oweing" %]
<p>[% INCLUDE 'biblio-title.inc' biblio=item.biblio link = 1 %] ( [% item.barcode | html %] ) has been scheduled for automatic renewal. </p>
[% SET override_limit = error == "auto_renew" ? "AUTO_RENEW" : "TOO_MUCH" %]
[% IF Koha.Preference('AllowRenewalLimitOverride') %]
<form method="post" action="/cgi-bin/koha/circ/renew.pl">
[% INCLUDE 'csrf-token.inc' %]
<input type="hidden" name="barcode" value="[% item.barcode | html %]" />
<input type="hidden" name="override_limit" value="1" />
<input type="hidden" name="override_limit" value="[% override_limit | html %]" />
<input type="hidden" name="op" value="cud-renew" />
<button type="submit" class="btn btn-default approve"><i class="fa fa-check"></i> Override limit and renew</button>
</form>
@ -143,7 +144,7 @@
<form method="post" action="/cgi-bin/koha/circ/renew.pl">
[% INCLUDE 'csrf-token.inc' %]
<input type="hidden" name="barcode" value="[% item.barcode | html %]" />
<input type="hidden" name="override_limit" value="1" />
<input type="hidden" name="override_limit" value="ON_RESERVE" />
<input type="hidden" name="override_holds" value="1" />
<div>
<label for="renewonholdduedate">Renewal due date:</label>