diff options
author | ivan <ivan> | 2011-01-21 09:26:32 +0000 |
---|---|---|
committer | ivan <ivan> | 2011-01-21 09:26:32 +0000 |
commit | 0ba11069f2cc969e5e873db82d2b108e64f50c6a (patch) | |
tree | 85cad1ab7948bec326e262ac35d3e4ee0a388113 /FS/FS/cust_pkg | |
parent | fc689f94a38b978533e041a95bf7af29caaacace (diff) |
questionable auto-domaining of username@domain usernames on package import, RT#9117
Diffstat (limited to 'FS/FS/cust_pkg')
-rw-r--r-- | FS/FS/cust_pkg/Import.pm | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/FS/FS/cust_pkg/Import.pm b/FS/FS/cust_pkg/Import.pm index 43470a4..e113d17 100644 --- a/FS/FS/cust_pkg/Import.pm +++ b/FS/FS/cust_pkg/Import.pm @@ -12,6 +12,7 @@ use FS::cust_main; use FS::svc_acct; use FS::svc_external; use FS::svc_phone; +use FS::svc_domain; $DEBUG = 0; @@ -123,12 +124,27 @@ my %import_options = ( my $ff = $formatfields->{$svc_x}; if ( grep $param->{"$svc_x.$_"}, @$ff ) { - my $svc_x = "FS::$svc_x"->new( { + my $svc = "FS::$svc_x"->new( { 'pkgnum' => $record->pkgnum, 'svcpart' => $record->part_pkg->svcpart($svc_x), map { $_ => $param->{"$svc_x.$_"} } @$ff } ); - my $error = $svc_x->insert; + + #this whole thing should be turned into a callback or config to turn on + if ( $svc_x eq 'svc_acct' && $svc->username =~ /\@/ ) { + my($username, $domain) = split(/\@/, $svc->username); + my $svc_domain = qsearchs('svc_domain', { 'domain' => $domain } ) + || new FS::svc_domain { 'svcpart' => 1, + 'domain' => $domain, }; + unless ( $svc_domain->svcnum ) { + my $error = $svc_domain->insert; + return $error if $error; + } + $svc->username($username); + $svc->domsvc($svc_domain->svcnum); + } + + my $error = $svc->insert; return $error if $error; } |