@@ -, +, @@ --- Koha/Patron.pm | 11 ++++++++--- t/db_dependent/Koha/Patrons.t | 7 ++++++- 2 files changed, 14 insertions(+), 4 deletions(-) --- a/Koha/Patron.pm +++ a/Koha/Patron.pm @@ -885,7 +885,7 @@ sub generate_userid { my ($self) = @_; my $userid; my $offset = 0; - my $patron = Koha::Patron->new; + my $existing_userid = $self->userid; my $firstname = $self->firstname // q{}; my $surname = $self->surname // q{}; #The script will "do" the following code and increment the $offset until the generated userid is unique @@ -895,9 +895,14 @@ sub generate_userid { $userid = lc(($firstname)? "$firstname.$surname" : $surname); $userid = unac_string('utf-8',$userid); $userid .= $offset unless $offset == 0; - $patron->userid( $userid ); + $self->userid( $userid ); $offset++; - } while (! $patron->has_valid_userid ); + } while (! $self->has_valid_userid ); + + # Resetting to the previous value as the callers do not expect + # this method to modify the userid attribute + # This will be done later (move of AddMember and ModMember) + $self->userid( $existing_userid ); return $userid; --- a/t/db_dependent/Koha/Patrons.t +++ a/t/db_dependent/Koha/Patrons.t @@ -1186,7 +1186,7 @@ subtest 'userid_is_valid' => sub { }; subtest 'generate_userid' => sub { - plan tests => 6; + plan tests => 7; my $library = $builder->build_object( { class => 'Koha::Libraries' } ); my $patron_category = $builder->build_object( @@ -1224,6 +1224,11 @@ subtest 'generate_userid' => sub { $userid = $new_patron->generate_userid; is( $userid, $expected_userid_patron_1 . '2', 'generate_userid should generate the userid we expect' ); + $patron_1 = Koha::Patrons->find($borrowernumber); + $patron_1->userid(undef); + $userid = $patron_1->generate_userid; + is( $userid, $expected_userid_patron_1, 'generate_userid should generate the userid we expect' ); + # Cleanup $patron_1->delete; $patron_2->delete; --