X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=members%2Fmemberentry.pl;h=f10002a80b289cae2d7595883fc04d86a99b5559;hb=7f79a9a5f8c8b2fe2c29d270264bdfa48a7056bd;hp=631759e6ced45b658eeb0afeaeeefd8dc3e3dba2;hpb=e2214f2b256e0a44e0936d3eb8e87ac02b40917e;p=koha.git diff --git a/members/memberentry.pl b/members/memberentry.pl index 631759e6ce..f10002a80b 100755 --- a/members/memberentry.pl +++ b/members/memberentry.pl @@ -151,13 +151,13 @@ $template->param( "quickadd" => 1 ) if ( $quickadd ); $template->param( "duplicate" => 1 ) if ( $op eq 'duplicate' ); $template->param( "checked" => 1 ) if ( defined($nodouble) && $nodouble eq 1 ); if ( $op eq 'modify' or $op eq 'save' or $op eq 'duplicate' ) { - if ( $patron and $userenv and $userenv->{number} ) { # Allow DB user to create a superlibrarian patron - my $logged_in_user = Koha::Patrons->find( $loggedinuser ) or die "Not logged in"; - output_and_exit_if_error( $input, $cookie, $template, { module => 'members', logged_in_user => $logged_in_user, current_patron => $patron } ); - } + my $logged_in_user = Koha::Patrons->find( $loggedinuser ) or die "Not logged in"; + output_and_exit_if_error( $input, $cookie, $template, { module => 'members', logged_in_user => $logged_in_user, current_patron => $patron } ); $borrower_data = $patron->unblessed; $borrower_data->{category_type} = $patron->category->category_type; +} else { + $patron = Koha::Patron->new; } my $categorycode = $input->param('categorycode') || $borrower_data->{'categorycode'}; my $category_type = $input->param('category_type') || ''; @@ -277,14 +277,19 @@ $newdata{'lang'} = $input->param('lang') if defined($input->param('lang')) # builds default userid # userid input text may be empty or missing because of syspref BorrowerUnwantedField if ( ( defined $newdata{'userid'} && $newdata{'userid'} eq '' ) || $check_BorrowerUnwantedField =~ /userid/ && !defined $data{'userid'} ) { - if ( ( defined $newdata{'firstname'} ) && ( defined $newdata{'surname'} ) ) { + if ( ( defined $newdata{'firstname'} || $category_type eq 'I' ) && ( defined $newdata{'surname'} ) ) { # Full page edit, firstname and surname input zones are present - $newdata{'userid'} = Generate_Userid( $borrowernumber, $newdata{'firstname'}, $newdata{'surname'} ); + $patron->firstname($newdata{firstname}); + $patron->surname($newdata{surname}); + $newdata{'userid'} = $patron->generate_userid; } - elsif ( ( defined $data{'firstname'} ) && ( defined $data{'surname'} ) ) { + elsif ( ( defined $data{'firstname'} || $category_type eq 'I' ) && ( defined $data{'surname'} ) ) { # Partial page edit (access through "Details"/"Library details" tab), firstname and surname input zones are not used # Still, if the userid field is erased, we can create a new userid with available firstname and surname - $newdata{'userid'} = Generate_Userid( $borrowernumber, $data{'firstname'}, $data{'surname'} ); + # FIXME clean thiscode newdata vs data is very confusing + $patron->firstname($data{firstname}); + $patron->surname($data{surname}); + $newdata{'userid'} = $patron->generate_userid; } else { $newdata{'userid'} = $data{'userid'}; @@ -348,7 +353,9 @@ if ($op eq 'save' || $op eq 'insert'){ # the edited values list when editing certain sub-forms. Get it straight # from the DB if absent. my $userid = $newdata{ userid } // $borrower_data->{ userid }; - unless (Check_Userid($userid,$borrowernumber)) { + my $p = $borrowernumber ? Koha::Patrons->find( $borrowernumber ) : Koha::Patron->new; + $p->userid( $userid ); + unless ( $p->has_valid_userid ) { push @errors, "ERROR_login_exist"; } @@ -607,7 +614,7 @@ foreach my $category_type (qw(C A S P I X)) { { 'categorycode' => $patron_category->categorycode, 'categoryname' => $patron_category->description, 'categorycodeselected' => - ( ( defined( $borrower_data->{'categorycode'} ) && $patron_category->categorycode eq $borrower_data->{'categorycode'} ) || ( defined($categorycode) && $patron_category->categorycode eq $categorycode ) ), + ( defined($categorycode) && $patron_category->categorycode eq $categorycode ), }; } my %typehash;