X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fotaker_Mixin.pm;h=186c7d1bac4e517ed6675553c35e3894617e07f0;hp=0da9aeedbf28d0f714e2644dfff1482c1d674d14;hb=3adb46fccf9f631e188ea5383bd147b340477639;hpb=24e81f4d632ebb4af2d8a68e64352c37052781b5 diff --git a/FS/FS/otaker_Mixin.pm b/FS/FS/otaker_Mixin.pm index 0da9aeedb..186c7d1ba 100644 --- a/FS/FS/otaker_Mixin.pm +++ b/FS/FS/otaker_Mixin.pm @@ -4,6 +4,7 @@ use strict; use Carp qw( croak ); #confess ); use FS::Record qw( qsearch qsearchs ); use FS::access_user; +use FS::UID qw( dbh ); sub otaker { my $self = shift; @@ -13,6 +14,7 @@ sub otaker { if ( !$access_user && $otaker =~ /^(.+), (.+)$/ ) { #same as below.. my($lastname, $firstname) = ($1, $2); $otaker = lc($firstname.$lastname); + $otaker =~ s/ //g; $access_user = qsearchs('access_user', { 'first' => $firstname, 'last' => $lastname } ) || qsearchs('access_user', { 'username' => $otaker } ); @@ -22,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 { @@ -31,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; @@ -58,6 +63,7 @@ sub _upgrade_otaker { if ( $username =~ /^(.+), (.+)$/ ) { ($lastname, $firstname) = ($1, $2); $username = lc($firstname.$lastname); + $username =~ s/ //g; } my $access_user = new FS::access_user { 'username' => $username, @@ -74,6 +80,11 @@ sub _upgrade_otaker { my $error = $record->replace; die $error if $error; } + + if ( $table eq 'cust_attachment' ) { + warn " committing (cust_attachment) \n"; + dbh->commit or die dbh->errstr; + } }