X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fsvc_acct.pm;h=b201f23531ef0a1f9df6afbf91a1e609d62fad82;hb=97316d268e5751a1d08a0a37e5a0456f2ce4815c;hp=c4dbb00c989bbad13746052e5f800c3c3d0bbf9a;hpb=936038efe0b75ad037619167f62db7fe16c25255;p=freeside.git diff --git a/FS/FS/svc_acct.pm b/FS/FS/svc_acct.pm index c4dbb00c9..b201f2353 100644 --- a/FS/FS/svc_acct.pm +++ b/FS/FS/svc_acct.pm @@ -189,17 +189,19 @@ Creates a new account. To add the account to the database, see L<"insert">. sub table { 'svc_acct'; } sub _fieldhandlers { - #false laziness with edit/svc_acct.cgi - 'usergroup' => sub { - my $usergroup = shift; - if ( ref($usergroup) eq 'ARRAY' ) { - $usergroup; - } elsif ( length($usergroup) ) { - [ split(/\s*,\s*/, $usergroup) ]; - } else { - []; - } - }, + { + #false laziness with edit/svc_acct.cgi + 'usergroup' => sub { + my( $self, $groups ) = @_; + if ( ref($groups) eq 'ARRAY' ) { + $groups; + } elsif ( length($groups) ) { + [ split(/\s*,\s*/, $groups) ]; + } else { + []; + } + }, + }; } =item insert [ , OPTION => VALUE ... ] @@ -482,6 +484,11 @@ sub replace { my $error; warn "$me replacing $old with $new\n" if $DEBUG; + # We absolutely have to have an old vs. new record to make this work. + if (!defined($old)) { + $old = qsearchs( 'svc_acct', { 'svcnum' => $new->svcnum } ); + } + return "can't modify system account" if $old->_check_system; { @@ -701,7 +708,7 @@ sub check { my($recref) = $self->hashref; - my $x = $self->setfixed; + my $x = $self->setfixed( $self->_fieldhandlers ); return $x unless ref($x); my $part_svc = $x;