X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fotaker_Mixin.pm;h=186c7d1bac4e517ed6675553c35e3894617e07f0;hp=af61a85ac12156ea5238e68ceb229ab154b33fbb;hb=3adb46fccf9f631e188ea5383bd147b340477639;hpb=b5c4237a34aef94976bc343c8d9e138664fc3984 diff --git a/FS/FS/otaker_Mixin.pm b/FS/FS/otaker_Mixin.pm index af61a85ac..186c7d1ba 100644 --- a/FS/FS/otaker_Mixin.pm +++ b/FS/FS/otaker_Mixin.pm @@ -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 { @@ -33,11 +41,6 @@ sub otaker { } } -sub access_user { - my $self = shift; - qsearchs('access_user', { 'usernum' => $self->usernum } ); -} - sub _upgrade_otaker { my $class = shift; my $table = $class->table;