From a3d5b4bc45df31d44f5ae2fee7c0f4c6c9a1afc5 Mon Sep 17 00:00:00 2001 From: Emmi Takkinen Date: Wed, 14 Dec 2022 08:36:01 +0200 Subject: [PATCH] Bug 26558: Make guarantor information persist despite an error When one tries to create an account with patron guarantor and error occurs (already used username, wrong age etc.), guarantor information is lost. This patch always saves added patron guarantor information to the template param new_guarantors. To test: 1. Create a new account but cause an error that will keep the account from saving (enter the wrong age for a category or give the patron a username that's already being used). 2. Search for and select a guarantor. 3. Try to save the account and wait for the "The following fields are wrong. Please fix them." message. => Note that the guarantor information is gone and you need to search for and select the guarantor again. 4. Apply this patch. 5. Repeat steps 1.-3. => Note that guarantor information hasn't been lost. This patch also removes code block from duplicate patron check because we now save param new_guarantors even if error doesn't occur. To test: 1. Create a new account but cause a duplicate patron error. 2. Search for and select a guarantor. 3. Try to save the account. => Guarantor information should persist. Sponsored-by: Koha-Suomi Oy --- members/memberentry.pl | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/members/memberentry.pl b/members/memberentry.pl index 2ebf3b4335..e345af807b 100755 --- a/members/memberentry.pl +++ b/members/memberentry.pl @@ -110,6 +110,18 @@ my $guarantor = undef; $guarantor = Koha::Patrons->find( $guarantor_id ) if $guarantor_id; $template->param( guarantor => $guarantor ); +my @new_guarantors; +my @new_guarantor_id = $input->multi_param('new_guarantor_id'); +my @new_guarantor_relationship = $input->multi_param('new_guarantor_relationship'); +foreach my $gid ( @new_guarantor_id ) { + my $patron = Koha::Patrons->find( $gid ); + my $relationship = shift( @new_guarantor_relationship ); + next unless $patron; + my $g = { patron => $patron, relationship => $relationship }; + push( @new_guarantors, $g ); +} +$template->param( new_guarantors => \@new_guarantors ); + my @delete_guarantor = $input->multi_param('delete_guarantor'); foreach my $id ( @delete_guarantor ) { my $r = Koha::Patron::Relationships->find( $id ); @@ -250,19 +262,6 @@ if ( ( $op eq 'insert' ) and !$nodouble ) { if ( $patrons->count > 0) { $nodouble = 0; $check_member = $patrons->next->borrowernumber; - - - my @new_guarantors; - my @new_guarantor_id = $input->multi_param('new_guarantor_id'); - my @new_guarantor_relationship = $input->multi_param('new_guarantor_relationship'); - foreach my $gid ( @new_guarantor_id ) { - my $patron = Koha::Patrons->find( $gid ); - my $relationship = shift( @new_guarantor_relationship ); - next unless $patron; - my $g = { patron => $patron, relationship => $relationship }; - push( @new_guarantors, $g ); - } - $template->param( new_guarantors => \@new_guarantors ); } } -- 2.34.1