From 0bd0f44905aa864eb4726f51ef899c1c3a775bf7 Mon Sep 17 00:00:00 2001 From: Alex Buckley Date: Wed, 26 Jun 2019 23:32:35 +0000 Subject: [PATCH] Bug 23224: Fix inconsistent behaviour of memberentry.pl When editing a child patron (in memberentry.pl) and changing their patron category to a non-child patron category Koha does not set the guarantorid to 0. This means we end up with non-child/non-professional patrons with guarantors, which is currently not allowed by Koha. Whereas the behaviour in child-update.pl (which can be accessed from a patrons summary page by clicking 'More'->Update child to adult patron') sets the borrowers guarantorid value to 0. This is the correct behaiviour and is what memberentry.pl should be doing. This patch fixes that. Test plan: See how memberentry.pl currently behaves 1. Create a adult patron and select 'Add child' and create the child record. 2. Enter the Koha MySQL terminal and select the guarantorid value for the child record you just created: SELECT guarantorid FROM borrowers WHERE userid=; 3. Notice the guarantorid is set to the adult patrons borrowernumber 4. On the child record select 'Edit' and in the memberentry.pl page change the category to any non-child/non-professional patron category (for example 'Patron') and save 5. Repeat step 2 and notice the guarantorid value has not changed ---- See how child-update.pl currently behaves 6. Repeat steps 1-3 and on the child record select More > Update child to adult patron 7. In the child-update.pl window that loads select any patron category and save 8. Repeat step 2 and notice the guarantorid is now 0 ---- See how the patch fixes the behaviour of memberentry.pl 9. Apply patch 10. Repeat steps 1-5 and notice the guarantorid is now empty ---- Confirm the guarantorid is not removed when editing a patrons category to a patron category with the category type of 'professional' as in Koha professional patron categories can have guarantors 11. Repeat steps 1-3 and select 'Edit' on the childs record and change the patron category to a 'professional' patron category and then save 12. Check the database and confirm that the guarantorid is unchanged Sponsored-By: Brimbank Library, Australia Signed-off-by: Liz Rea --- members/memberentry.pl | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/members/memberentry.pl b/members/memberentry.pl index bd86e36b67..81c4d7c7a9 100755 --- a/members/memberentry.pl +++ b/members/memberentry.pl @@ -531,6 +531,13 @@ if ((!$nok) and $nodouble and ($op eq 'insert' or $op eq 'save')){ $newdata{debarredcomment} = $newdata{debarred_comment}; delete $newdata{debarred_comment}; delete $newdata{password2}; + + #If changing to a patron category whose category type is not child then remove guarantor id + my $borrowercategory = Koha::Patron::Categories->find($newdata{categorycode}); + if (( $borrowercategory->category_type ne 'C' ) && ( $borrowercategory->category_type ne 'P' )) { + $newdata{guarantorid} = ''; + } + $patron->set(\%newdata)->store if scalar(keys %newdata) > 1; # bug 4508 - avoid crash if we're not # updating any columns in the borrowers table, # which can happen if we're only editing the -- 2.11.0