Bug 39180: Add a warning on patron missing guaranor

To test:
1 - Create a patron in a category that can be a guarantee and do not assign any guarantor
2 - Create a patron in a 'Child' account type and do not assign a guarantor
3 - Enable system preference 'ChildNeedsGuarantor'
4 - View 'Check out' and 'Details' tabs for both patrons, note there is no warning
5 - Apply patch
6 - Repeat 4, note warning on all pages
7 - Add a patron gaurantor on the child - repeat 4 - warning is gone
8 - Add non-patron guarantor information to other patron - repeat 4 - warning is gone

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Baptiste Wojtkowski <baptiste.wojtkowski@biblibre.com>
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
This commit is contained in:
Nick Clemens 2025-05-21 11:42:51 +00:00 committed by Fridolin Somers
parent a1f10a1900
commit 85ecabe2da
No known key found for this signature in database
GPG Key ID: 9A8E73E2A8B96537
4 changed files with 24 additions and 2 deletions

View File

@ -713,12 +713,20 @@ my $view =
my @relatives;
if ($patron) {
if ( my @guarantors = $patron->guarantor_relationships()->guarantors->as_list ) {
my @guarantors = $patron->guarantor_relationships()->guarantors->as_list;
if ( scalar @guarantors ) {
push( @relatives, $_->id ) for @guarantors;
push( @relatives, $_->id ) for $patron->siblings->as_list;
} else {
push( @relatives, $_->id ) for $patron->guarantee_relationships()->guarantees->as_list;
}
if ( C4::Context->preference('ChildNeedsGuarantor')
and ( $patron->is_child or $patron->category->can_be_guarantee )
and $patron->contactname eq ""
and !@guarantors )
{
$template->param( missing_guarantor => 1 );
}
}
my $relatives_issues_count =
Koha::Database->new()->schema()->resultset('Issue')->count( { borrowernumber => \@relatives } );

View File

@ -96,6 +96,9 @@
[% IF alert.RETURNED_FROM_ANOTHER %]
<div class="alert alert-warning">Item was checked out to [% INCLUDE 'patron-title.inc' patron = alert.RETURNED_FROM_ANOTHER.patron %] and was returned automatically.</div>
[% END %]
[% IF missing_guarantor %]
<div class="alert alert-warning">System preference 'ChildNeedsGuarantor' is enabled and this patron does not have a guarantor.</div>
[% END %]
[% IF alert.BOOKED %]
<div class="alert alert-warning">Item is booked by this user</div>

View File

@ -61,6 +61,9 @@
[% IF ( error ) %]
<div class="alert alert-warning">
[% IF missing_guarantor %]
<div class="alert alert-warning">System preference 'ChildNeedsGuarantor' is enabled and this patron does not have a guarantor.</div>
[% END %]
[% IF ( error == 'CANT_DELETE_STAFF' ) %]
<h3>Unable to delete staff user</h3>
<p>Insufficient privileges.</p>

View File

@ -74,7 +74,8 @@ my $patron = Koha::Patrons->find( $borrowernumber );
my $logged_in_user = Koha::Patrons->find( $loggedinuser );
output_and_exit_if_error( $input, $cookie, $template, { module => 'members', logged_in_user => $logged_in_user, current_patron => $patron } );
my $category_type = $patron->category->category_type;
my $category = $patron->category;
my $category_type = $category->category_type;
if ( $patron->borrowernumber eq C4::Context->preference("AnonymousPatron") ) {
$template->param( is_anonymous => 1 );
@ -117,6 +118,13 @@ $template->param(
guarantor_relationships => $guarantor_relationships,
guarantees => \@guarantees,
);
if ( C4::Context->preference('ChildNeedsGuarantor')
and ( $patron->is_child or $category->can_be_guarantee )
and $patron->contactname eq ""
and !@guarantors )
{
$template->param( missing_guarantor => 1 );
}
my $relatives_issues_count =
Koha::Checkouts->count({ borrowernumber => \@relatives });