Bugzilla – Attachment 177589 Details for
Bug 38847
Renewing an expired child patron without a guarantor and with ChildNeedsGuarantor set results in an internal server error
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 38847: Fix error when renewing an expired child patron without a guarantor
Bug-38847-Fix-error-when-renewing-an-expired-child.patch (text/plain), 5.97 KB, created by
Nick Clemens (kidclamp)
on 2025-02-06 18:16:50 UTC
(
hide
)
Description:
Bug 38847: Fix error when renewing an expired child patron without a guarantor
Filename:
MIME Type:
Creator:
Nick Clemens (kidclamp)
Created:
2025-02-06 18:16:50 UTC
Size:
5.97 KB
patch
obsolete
>From 8124aa8f2366f3c1e89ab00717233db778eb879d Mon Sep 17 00:00:00 2001 >From: Baptiste Wojtkowski <baptiste.wojtkowski@biblibre.com> >Date: Wed, 8 Jan 2025 16:26:37 +0100 >Subject: [PATCH] Bug 38847: Fix error when renewing an expired child patron > without a guarantor > >This fixes an internal server error when renewing an expired >child patron without a guarantor, when the ChildNeedsGuarantor >is set to "must have". > >Test plan: >1. Create or edit a child patron: > - Don't add a guarantor. > - Set the "Expiry date" to a date in the past. >2. Set the ChildNeedsGuarantor system preference to "must have". >3. Refresh or view the patron's check out or details page, and > select the "Renew" link under the attention heading - > this generates an internal server error message. >4. Apply patch. >5. Repeat step 3, you will now get a standard error message > "This patron could not be renewed: they need a guarantor." >6. Add a guarantor for the patron. >7. Repeat step 3, and click "Renew" - the patron is now renewed. > >Signed-off-by: David Nind <david@davidnind.com> >Signed-off-by: Nick Clemens <nick@bywatersolutions.com> >--- > circ/circulation.pl | 1 + > .../prog/en/modules/circ/circulation.tt | 4 ++++ > .../prog/en/modules/members/moremember.tt | 4 ++++ > members/setstatus.pl | 24 ++++++++++++++++--- > 4 files changed, 30 insertions(+), 3 deletions(-) > >diff --git a/circ/circulation.pl b/circ/circulation.pl >index 968470e6f17..75dc2670418 100755 >--- a/circ/circulation.pl >+++ b/circ/circulation.pl >@@ -785,6 +785,7 @@ $template->param( > patron_lists_count => $patron_lists_count, > override_high_holds => $override_high_holds, > nopermission => scalar $query->param('nopermission'), >+ noguarantor => scalar $query->param('noguarantor'), > autoswitched => $autoswitched, > logged_in_user => $logged_in_user, > ); >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 a67677b4eb6..e4a2b2cb09a 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt >@@ -105,6 +105,10 @@ > <div class="alert alert-warning">Staff members are not allowed to discharge borrowers, nor borrowers to request a discharge.</div> > [% END %] > >+ [% IF ( noguarantor ) %] >+ <div class="alert alert-warning">This patron could not be renewed: they need a guarantor.</div> >+ [% END %] >+ > [% IF is_anonymous %] > <div class="alert alert-warning">This is the anonymous patron, so circulation is disabled.</div> > [% 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 5e62f63a8b6..c465e857be4 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt >@@ -81,6 +81,10 @@ > <h3>Unable to delete patron</h3> > <p>Insufficient privileges.</p> > [% END %] >+ [% IF ( error == 'CANT_RENEW_CHILD_WITHOUT_GUARANTOR' ) %] >+ <h3>Unable to renew patron</h3> >+ <p>They must have a guarantor defined</p> >+ [% END %] > </div> > [% END %] > >diff --git a/members/setstatus.pl b/members/setstatus.pl >index 83ef1590be5..80b9707061b 100755 >--- a/members/setstatus.pl >+++ b/members/setstatus.pl >@@ -24,6 +24,7 @@ > # along with Koha; if not, see <http://www.gnu.org/licenses>. > > use Modern::Perl; >+use Try::Tiny; > > use CGI qw ( -utf8 ); > use C4::Auth qw( checkauth ); >@@ -47,13 +48,24 @@ my $dateexpiry; > my $logged_in_user = Koha::Patrons->find( { userid => $loggedinuserid } ); > my $patron = Koha::Patrons->find( $borrowernumber ); > >+my $cannot_renew = '0'; >+ > # Ideally we should display a warning on the interface if the logged in user is > # not allowed to modify this patron. > # But a librarian is not supposed to hack the system > if ( $logged_in_user->can_see_patron_infos($patron) ) { > if ( $reregistration eq 'y' ) { >+ > # re-reregistration function to automatic calcul of date expiry >- $dateexpiry = $patron->renew_account; >+ try { >+ $dateexpiry = $patron->renew_account; >+ } catch { >+ if ( ref($_) eq 'Koha::Exceptions::Patron::Relationship::NoGuarantor' ) { >+ $cannot_renew = '1'; >+ } else { >+ $_->rethrow(); >+ } >+ } > } else { > my $sth = $dbh->prepare("UPDATE borrowers SET debarred = ?, debarredcomment = '' WHERE borrowernumber = ?"); > $sth->execute( $status, $borrowernumber ); >@@ -62,13 +74,19 @@ if ( $logged_in_user->can_see_patron_infos($patron) ) { > } > > if($destination eq "circ"){ >- if($dateexpiry){ >+ if ($cannot_renew) { >+ print $input->redirect("/cgi-bin/koha/circ/circulation.pl?borrowernumber=$borrowernumber&noguarantor=1"); >+ } elsif ($dateexpiry) { > print $input->redirect("/cgi-bin/koha/circ/circulation.pl?borrowernumber=$borrowernumber&was_renewed=1"); > } else { > print $input->redirect("/cgi-bin/koha/circ/circulation.pl?borrowernumber=$borrowernumber"); > } > } else { >- if($dateexpiry){ >+ if ($cannot_renew) { >+ print $input->redirect( >+ "/cgi-bin/koha/members/moremember.pl?borrowernumber=$borrowernumber&error=CANT_RENEW_CHILD_WITHOUT_GUARANTOR" >+ ); >+ } elsif ($dateexpiry) { > print $input->redirect("/cgi-bin/koha/members/moremember.pl?borrowernumber=$borrowernumber&was_renewed=1"); > } else { > print $input->redirect("/cgi-bin/koha/members/moremember.pl?borrowernumber=$borrowernumber"); >-- >2.39.5
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 38847
:
176249
|
177135
| 177589