View | Details | Raw Unified | Return to bug 19936
Collapse All | Expand All

(-)a/C4/Members.pm (-5 / +7 lines)
Lines 399-407 sub AddMember { Link Here
399
        }
399
        }
400
    }
400
    }
401
401
402
    my $p = Koha::Patron->new( { userid => $data{userid} } );
402
    # generate a proper login if none provided
403
    # generate a proper login if none provided
403
    $data{'userid'} = Generate_Userid( $data{'borrowernumber'}, $data{'firstname'}, $data{'surname'} )
404
    $data{'userid'} = Generate_Userid( $data{'borrowernumber'}, $data{'firstname'}, $data{'surname'} )
404
      if ( $data{'userid'} eq '' || !Check_Userid( $data{'userid'} ) );
405
      if ( $data{'userid'} eq '' || ! $p->has_valid_userid );
405
406
406
    # add expiration date if it isn't already there
407
    # add expiration date if it isn't already there
407
    $data{dateexpiry} ||= $category->get_expiry_date;
408
    $data{dateexpiry} ||= $category->get_expiry_date;
Lines 507-513 sub Check_Userid { Link Here
507
    $borrowernumber is optional (i.e. it can contain a blank value). A value is passed when generating a new userid for an existing borrower. When a new userid is created for a new borrower, a blank value is passed to this sub.
508
    $borrowernumber is optional (i.e. it can contain a blank value). A value is passed when generating a new userid for an existing borrower. When a new userid is created for a new borrower, a blank value is passed to this sub.
508
509
509
    return :
510
    return :
510
        new userid ($firstname.$surname if there is a $firstname, or $surname if there is no value in $firstname) plus offset (0 if the $newuid is unique, or a higher numeric value if Check_Userid finds an existing match for the $newuid in the database).
511
        new userid ($firstname.$surname if there is a $firstname, or $surname if there is no value in $firstname) plus offset (0 if the $newuid is unique, or a higher numeric value if not unique).
511
512
512
=cut
513
=cut
513
514
Lines 515-530 sub Generate_Userid { Link Here
515
  my ($borrowernumber, $firstname, $surname) = @_;
516
  my ($borrowernumber, $firstname, $surname) = @_;
516
  my $newuid;
517
  my $newuid;
517
  my $offset = 0;
518
  my $offset = 0;
518
  #The script will "do" the following code and increment the $offset until Check_Userid = 1 (i.e. until $newuid comes back as unique)
519
  my $patron = Koha::Patron->new;
520
  #The script will "do" the following code and increment the $offset until the generated userid is unique
519
  do {
521
  do {
520
    $firstname =~ s/[[:digit:][:space:][:blank:][:punct:][:cntrl:]]//g;
522
    $firstname =~ s/[[:digit:][:space:][:blank:][:punct:][:cntrl:]]//g;
521
    $surname =~ s/[[:digit:][:space:][:blank:][:punct:][:cntrl:]]//g;
523
    $surname =~ s/[[:digit:][:space:][:blank:][:punct:][:cntrl:]]//g;
522
    $newuid = lc(($firstname)? "$firstname.$surname" : $surname);
524
    $newuid = lc(($firstname)? "$firstname.$surname" : $surname);
523
    $newuid = unac_string('utf-8',$newuid);
525
    $newuid = unac_string('utf-8',$newuid);
524
    $newuid .= $offset unless $offset == 0;
526
    $newuid .= $offset unless $offset == 0;
527
    $patron->userid( $newuid );
525
    $offset++;
528
    $offset++;
526
529
   } while (! $patron->has_valid_userid );
527
   } while (!Check_Userid($newuid,$borrowernumber));
528
530
529
   return $newuid;
531
   return $newuid;
530
}
532
}
(-)a/members/memberentry.pl (-1 / +3 lines)
Lines 351-357 if ($op eq 'save' || $op eq 'insert'){ Link Here
351
  # the edited values list when editing certain sub-forms. Get it straight
351
  # the edited values list when editing certain sub-forms. Get it straight
352
  # from the DB if absent.
352
  # from the DB if absent.
353
  my $userid = $newdata{ userid } // $borrower_data->{ userid };
353
  my $userid = $newdata{ userid } // $borrower_data->{ userid };
354
  unless (Check_Userid($userid,$borrowernumber)) {
354
  my $p = $borrowernumber ? Koha::Patrons->find( $borrowernumber ) : Koha::Patron->new;
355
  $p->userid( $userid );
356
  unless ( $p->has_valid_userid ) {
355
    push @errors, "ERROR_login_exist";
357
    push @errors, "ERROR_login_exist";
356
  }
358
  }
357
359
(-)a/tools/import_borrowers.pl (-7 / +6 lines)
Lines 234-244 if ( $uploadborrowers && length($uploadborrowers) > 0 ) { Link Here
234
        $borrower{dateenrolled} ||= $today;
234
        $borrower{dateenrolled} ||= $today;
235
        $borrower{dateexpiry}   ||= Koha::Patron::Categories->find( $borrower{categorycode} )->get_expiry_date( $borrower{dateenrolled} );
235
        $borrower{dateexpiry}   ||= Koha::Patron::Categories->find( $borrower{categorycode} )->get_expiry_date( $borrower{dateenrolled} );
236
        my $borrowernumber;
236
        my $borrowernumber;
237
        my $member;
237
        my ( $member, $patron );
238
        if ( ($matchpoint eq 'cardnumber') && ($borrower{'cardnumber'}) ) {
238
        if ( ($matchpoint eq 'cardnumber') && ($borrower{'cardnumber'}) ) {
239
            $member = Koha::Patrons->find( { cardnumber => $borrower{'cardnumber'} } );
239
            $patron = Koha::Patrons->find( { cardnumber => $borrower{'cardnumber'} } );
240
        } elsif ( ($matchpoint eq 'userid') && ($borrower{'userid'}) ) {
240
        } elsif ( ($matchpoint eq 'userid') && ($borrower{'userid'}) ) {
241
            $member = Koha::Patrons->find( { userid => $borrower{'userid'} } );
241
            $patron = Koha::Patrons->find( { userid => $borrower{'userid'} } );
242
        } elsif ($extended) {
242
        } elsif ($extended) {
243
            if (defined($matchpoint_attr_type)) {
243
            if (defined($matchpoint_attr_type)) {
244
                foreach my $attr (@$patron_attributes) {
244
                foreach my $attr (@$patron_attributes) {
Lines 251-258 if ( $uploadborrowers && length($uploadborrowers) > 0 ) { Link Here
251
            }
251
            }
252
        }
252
        }
253
253
254
        if ($member) {
254
        if ($patron) {
255
            $member = $member->unblessed;
255
            $member = $patron->unblessed;
256
            $borrowernumber = $member->{'borrowernumber'};
256
            $borrowernumber = $member->{'borrowernumber'};
257
        } else {
257
        } else {
258
            $member = {};
258
            $member = {};
Lines 291-297 if ( $uploadborrowers && length($uploadborrowers) > 0 ) { Link Here
291
            # Check if the userid provided does not exist yet
291
            # Check if the userid provided does not exist yet
292
            if (  exists $borrower{userid}
292
            if (  exists $borrower{userid}
293
                     and $borrower{userid}
293
                     and $borrower{userid}
294
                 and not Check_Userid( $borrower{userid}, $borrower{borrowernumber} ) ) {
294
                 and not $patron->userid($borrower{userid})->has_valid_userid ) {
295
                push @errors, { duplicate_userid => 1, userid => $borrower{userid} };
295
                push @errors, { duplicate_userid => 1, userid => $borrower{userid} };
296
                $invalid++;
296
                $invalid++;
297
                next LINE;
297
                next LINE;
298
- 

Return to bug 19936