From e7b64250a110422316739356c30ffb799b9125f9 Mon Sep 17 00:00:00 2001 From: David Cook Date: Wed, 26 Aug 2020 07:35:36 +0000 Subject: [PATCH] Bug 26301: Use CanBookBeRenewed when renewing via self-checkout Currently, if you have OverduesBlockCirc set to "Ask for confirmation" and OverduesBlockRenewing set to "allow renewing", you get caught in a loop where you can never renew an overdue material. This patch uses CanBookBeRenewed for renewals, rather than CanBookBeIssued, which means the correct rules are applied to the correct scenario. To test: a. Set OverduesBlockCirc to "Ask for confirmation" b. Ensure "OverduesBlockRenewing" set to "allow renewing" 0. Apply the patch 1. Checkin item barcode 3999900000001 2. Go to http://localhost:8081/cgi-bin/koha/circ/circulation.pl?borrowernumber=51 3. Checkout item barcode 3999900000001 to 1 year ago 4. Go to http://localhost:8080/cgi-bin/koha/sco/sco-main.pl 5. Login as the "koha" user 6. Click on "Renew item" 7. Note that the item is renewed 8. Checkin item barcode 3999900000001 9. Go to http://localhost:8081/cgi-bin/koha/circ/circulation.pl?borrowernumber=51 10. Checkout item barcode 3999900000001 to 1 year ago 11. Go to http://localhost:8080/cgi-bin/koha/sco/sco-main.pl 12. Login as the "koha" user 13. Type "3999900000001" into the box under "Scan a new item or enter its barcode" 14. Click "Submit" 15. Note the system says the item is already checked out and it prompts you to click "Renew item" in this screen 16. Click "Renew item" 17. Note the system says "Item renewed" near the top of the screen, and the "Due" date near the bottom of the screen is more recent than the original due date 18. Checkin item barcode 3999900000001 19. Go to http://localhost:8080/cgi-bin/koha/sco/sco-main.pl 20. Login as the "koha" user 21. Type "3999900000001" into the box under "Scan a new item or enter its barcode" 22. Click "Submit" 23. Note the system says "Item checked out" and the item appears in the checkouts at the bottom of the screen Signed-off-by: Martin Renvoize Signed-off-by: Nick Clemens --- .../opac-tmpl/bootstrap/en/modules/sco/sco-main.tt | 2 +- opac/sco/sco-main.pl | 26 ++++++++++++---------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/sco/sco-main.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/sco/sco-main.tt index 8020d5ee39..1becf82106 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/sco/sco-main.tt +++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/sco/sco-main.tt @@ -327,7 +327,7 @@ [% IF ISSUE.can_be_renewed %] - + [% UNLESS ( ISSUE.renew ) %] diff --git a/opac/sco/sco-main.pl b/opac/sco/sco-main.pl index c55791fbfc..4c405f5b5c 100755 --- a/opac/sco/sco-main.pl +++ b/opac/sco/sco-main.pl @@ -138,7 +138,7 @@ elsif ( $op eq "returnbook" && $allowselfcheckreturns ) { my ($doreturn) = AddReturn( $barcode, $branch ); $template->param( returned => $doreturn ); } -elsif ( $patron && ( $op eq 'checkout' || $op eq 'renew' ) ) { +elsif ( $patron && ( $op eq 'checkout' ) ) { my $impossible = {}; my $needconfirm = {}; ( $impossible, $needconfirm ) = CanBookBeIssued( @@ -182,22 +182,14 @@ elsif ( $patron && ( $op eq 'checkout' || $op eq 'renew' ) ) { barcode => $barcode, ); } - } elsif ( $needconfirm->{RENEW_ISSUE} || $op eq 'renew' ) { - if ($confirmed) { - #warn "renewing"; - AddRenewal( $borrower->{borrowernumber}, $item->itemnumber ); - push @newissueslist, $barcode; - $template->param( renewed => 1 ); - } else { - #warn "renew confirmation"; - $template->param( + } elsif ( $needconfirm->{RENEW_ISSUE} ){ + $template->param( renew => 1, barcode => $barcode, confirm => 1, confirm_renew_issue => 1, hide_main => 1, - ); - } + ); } elsif ( $confirm_required && !$confirmed ) { #warn "failed confirmation"; $template->param( @@ -260,6 +252,16 @@ elsif ( $patron && ( $op eq 'checkout' || $op eq 'renew' ) ) { } } # $op +if ( $patron && ( $op eq 'renew' ) ) { + my ($status,$renewerror) = CanBookBeRenewed( $borrower->{borrowernumber}, $item->itemnumber ); + if ($status) { + #warn "renewing"; + AddRenewal( $borrower->{borrowernumber}, $item->itemnumber ); + push @newissueslist, $barcode; + $template->param( renewed => 1 ); + } +} + if ($borrower) { # warn "issuer's branchcode: " . $issuer->{branchcode}; # warn "user's branchcode: " . $borrower->{branchcode}; -- 2.11.0