- 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);
- $template->param(
- SUCCESS => 1,
- borrowernumber => $borrowernumber,
- );
- output_html_with_http_headers $input, $cookie, $template->output;
+ 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();
+
+ $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 ) {
+ $template->param(
+ SUCCESS => 1,
+ borrowernumber => $borrowernumber,
+ );
+ output_html_with_http_headers $input, $cookie, $template->output;
+ }
+ else {
+ print $input->redirect(
+ "/cgi-bin/koha/members/moremember.pl?borrowernumber=$borrowernumber"
+ );
+ }