From 0ba11069f2cc969e5e873db82d2b108e64f50c6a Mon Sep 17 00:00:00 2001 From: ivan Date: Fri, 21 Jan 2011 09:26:32 +0000 Subject: [PATCH] questionable auto-domaining of username@domain usernames on package import, RT#9117 --- FS/FS/cust_pkg/Import.pm | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/FS/FS/cust_pkg/Import.pm b/FS/FS/cust_pkg/Import.pm index 43470a4c0..e113d1712 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; } -- 2.11.0