From a8b09c77c93b944a9d28cf5b1a2dbc019c6d8986 Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Wed, 21 May 2025 11:42:51 +0000 Subject: [PATCH] [24.11] 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 Signed-off-by: Baptiste Wojtkowski --- circ/circulation.pl | 10 +++++++++- .../intranet-tmpl/prog/en/modules/circ/circulation.tt | 3 +++ .../prog/en/modules/members/moremember.tt | 3 +++ members/moremember.pl | 10 +++++++++- 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/circ/circulation.pl b/circ/circulation.pl index 968470e6f1..6e229f2e3d 100755 --- a/circ/circulation.pl +++ b/circ/circulation.pl @@ -712,12 +712,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 } ); 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 fc77a84b8d..342fda19b2 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt @@ -96,6 +96,9 @@ [% IF alert.RETURNED_FROM_ANOTHER %]
Item was checked out to [% INCLUDE 'patron-title.inc' patron = alert.RETURNED_FROM_ANOTHER.patron %] and was returned automatically.
[% END %] + [% IF missing_guarantor %] +
System preference 'ChildNeedsGuarantor' is enabled and this patron does not have a guarantor.
+ [% END %] [% IF alert.BOOKED %]
Item is booked by this user
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 c25adbf4b1..c4b9da4707 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt @@ -61,6 +61,9 @@ [% IF ( error ) %]
+ [% IF missing_guarantor %] +
System preference 'ChildNeedsGuarantor' is enabled and this patron does not have a guarantor.
+ [% END %] [% IF ( error == 'CANT_DELETE_STAFF' ) %]

Unable to delete staff user

Insufficient privileges.

diff --git a/members/moremember.pl b/members/moremember.pl index 773bc4190d..cfd91802be 100755 --- a/members/moremember.pl +++ b/members/moremember.pl @@ -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 }); -- 2.30.2