should really really fix the cust_main_note upgrade bullshit, argh, RT#8580
[freeside.git] / FS / FS / otaker_Mixin.pm
index 071958c..4aa47c3 100644 (file)
@@ -9,8 +9,15 @@ sub otaker {
   my $self = shift;
   if ( scalar(@_) ) { #set
     my $otaker = shift;
-    my $access_user = qsearchs('access_user', { 'username' => $otaker } )
-      or croak "can't set otaker: $otaker not found!"; #confess?
+    my $access_user = qsearchs('access_user', { 'username' => $otaker } );
+    if ( !$access_user && $otaker =~ /^(.+), (.+)$/ ) { #same as below..
+      my($lastname, $firstname) = ($1, $2);
+      $otaker = lc($firstname.$lastname);
+      $access_user =  qsearchs('access_user', { 'first' => $firstname, 
+                                                'last'  => $lastname  } )
+                   || qsearchs('access_user', { 'username' => $otaker } );
+    }
+    croak "can't set otaker: $otaker not found!" unless $access_user; #confess?
     $self->usernum( $access_user->usernum );
     $otaker; #not sure return is used anywhere, but just in case
   } else { #get
@@ -44,11 +51,17 @@ sub _upgrade_otaker {
     foreach my $record (@records) {
       eval { $record->otaker($record->otaker) };
       if ( $@ ) {
+        my $username = $record->otaker;
+        my($lastname, $firstname) = ( 'User', 'Legacy' );
+        if ( $username =~ /^(.+), (.+)$/ ) {
+          ($lastname, $firstname) = ($1, $2);
+          $username = lc($firstname.$lastname);
+        }
         my $access_user = new FS::access_user {
-          'username'  => $record->otaker,
+          'username'  => $username,
           '_password' => 'CHANGEME',
-          'first'     => 'Legacy',
-          'last'      => 'User',
+          'first'     => $firstname,
+          'last'      => $lastname,
           'disabled'  => 'Y',
         };
         my $error = $access_user->insert;