fix otaker method on history tables, probably from #13971
authorMark Wells <mark@freeside.biz>
Fri, 31 Jul 2015 20:46:44 +0000 (13:46 -0700)
committerMark Wells <mark@freeside.biz>
Tue, 4 Aug 2015 18:19:27 +0000 (11:19 -0700)
FS/FS/otaker_Mixin.pm

index 6e465f0..186c7d1 100644 (file)
@@ -24,7 +24,15 @@ sub otaker {
     $otaker; #not sure return is used anywhere, but just in case
   } else { #get
     if ( $self->usernum ) {
-      $self->access_user->username;
+      # avoid a common failure mode: this should work even when the table 
+      # isn't foreign-keyed to access_user
+      my $access_user = FS::access_user->by_key($self->usernum);
+      if (!$access_user) {
+        croak "otaker called on ".$self->table."#".
+              $self->get($self->primary_key).
+              " but user does not exist";
+      }
+      return $access_user->username;
     } elsif ( length($self->get('otaker')) ) {
       $self->get('otaker');
     } else {