From 16d1c0fdc6ec168d2f42bd815c4209a09d2ca261 Mon Sep 17 00:00:00 2001 From: Baptiste Date: Tue, 7 Jan 2025 16:50:13 +0100 Subject: [PATCH] Bug 38841: Check non-patron guarantor while deleting patron guarantor When editing a child while Childneedsquarantor active, trying to delete a guarantor while saving a non-patron guarantor will prevent the user from saving. However, if an adult has expired, some librarian would like to remove the account and let some information in non-patron guarantor. TEST PLAN Before applying patch 1 - Open Lisa Charles'page, add Henry Acevedo as Guarantor, also fill Guarantor surname and firstname 2 - Edit the page and try and remove Henry Acevedo, it won't work however there is still one guarantor 3 - Apply patch 4 - Try and remove Henry Acevedo -> it will work 5 - add HA as a guarantor again 6 - try and remove him AND let guarantor firstname and surname empty -> you can't 7 - Add HA and Edna Acosta as guarantor 8 - Remove HA and ler guarantor firstname and surname empty -> you can --- members/memberentry.pl | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/members/memberentry.pl b/members/memberentry.pl index f1fd9bfe5bd..8e456f6db61 100755 --- a/members/memberentry.pl +++ b/members/memberentry.pl @@ -262,9 +262,11 @@ if ( ( $op eq 'cud-insert' ) and !$nodouble ) { #Attempt to delete guarantors my @delete_guarantor = $input->multi_param('delete_guarantor'); if (@delete_guarantor) { - if ( C4::Context->preference('ChildNeedsGuarantor') - && scalar @guarantors - scalar @delete_guarantor == 0 ) - { + my $will_remove_last = + ( scalar @guarantors - scalar @delete_guarantor == 0 ) + && $newdata{'contactname'} eq q{} + && $newdata{'contactfirstname'} eq q{}; + if ( C4::Context->preference('ChildNeedsGuarantor') && $will_remove_last ) { push @errors, 'ERROR_cannot_delete_guarantor'; } else { foreach my $id (@delete_guarantor) { -- 2.30.2