- my $member = GetMember($borrowernumber);
- $member->{'guarantorid'} = '0';
- $member->{'categorycode'} = $catcode;
- my $borcat = GetBorrowercategory($catcode);
- $member->{'category_type'} = $borcat->{'category_type'};
- $member->{'description'} = $borcat->{'description'};
- ModMember(%$member);
-
- if ( $catcode_multi ) {
+ my $patron = Koha::Patrons->find( $borrowernumber );
+ output_and_exit_if_error( $input, $cookie, $template, { module => 'members', logged_in_user => $logged_in_user, current_patron => $patron } );
+
+ my $adult_category;
+ if ( $patron_categories->count == 1 ) {
+ $adult_category = $patron_categories->next;
+ } else {
+ $adult_category = $patron_categories->search({'me.categorycode' => $catcode })->next;
+ }
+
+ # Just in case someone is trying something bad
+ # But we should not hit that with a normal use of the interface
+ die "You are doing something wrong updating this child" unless $adult_category;
+
+ $_->delete() for $patron->guarantor_relationships->as_list;
+
+ $patron->categorycode($adult_category->categorycode);
+ $patron->store;
+
+ # FIXME We should not need that
+ # We could redirect with a friendly message
+ if ( $patron_categories->count > 1 ) {