X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcust_main%2FImport.pm;h=d7a66db1be886a164d3230be357223593fbcf315;hb=f78628bc9d1bdca7b55508b99596502336ce5d6f;hp=eadcc1a5589d61b5866ec9cbe073fc64935e2939;hpb=9f2220031123f06ab275840a3129c9807b9a782a;p=freeside.git diff --git a/FS/FS/cust_main/Import.pm b/FS/FS/cust_main/Import.pm index eadcc1a55..d7a66db1b 100644 --- a/FS/FS/cust_main/Import.pm +++ b/FS/FS/cust_main/Import.pm @@ -11,6 +11,7 @@ use FS::UID qw( dbh ); use FS::Record qw( qsearchs ); use FS::cust_main; use FS::svc_acct; +use FS::svc_broadband; use FS::svc_external; use FS::svc_phone; use FS::svc_hardware; @@ -22,6 +23,8 @@ install_callback FS::UID sub { $conf = new FS::Conf; }; +my %is_location = map { $_ => 1 } FS::cust_main::Location->location_fields; + =head1 NAME FS::cust_main::Import - Batch customer importing @@ -150,7 +153,7 @@ sub batch_import { @fields = qw( agent_custid refnum last first address1 address2 city state zip country daytime night - ship_last ship_first ship_company ship_address1 ship_address2 + ship_last ship_first ship_address1 ship_address2 ship_city ship_state ship_zip ship_country payinfo paycvv paydate invoicing_list @@ -184,6 +187,18 @@ sub batch_import { customer_options ); $payby = 'BILL'; + } elsif ( $format =~ /^svc_broadband/ ) { + @fields = qw( agent_custid refnum + last first company address1 address2 city state zip country + daytime night + ship_last ship_first ship_company ship_address1 ship_address2 + ship_city ship_state ship_zip ship_country + payinfo paycvv paydate + invoicing_list + cust_pkg.pkgpart cust_pkg.bill + ); + push @fields, map "svc_broadband.$_", qw( ip_addr mac_addr sectornum ); + $payby = 'BILL'; } elsif ( $format =~ /^svc_external/ ) { @fields = qw( agent_custid refnum last first company address1 address2 city state zip country @@ -316,13 +331,14 @@ sub batch_import { custbatch => $custbatch, agentnum => $agentnum, refnum => $refnum, - country => $conf->config('countrydefault') || 'US', payby => $payby, #default paydate => '12/2037', #default ); my $billtime = time; my %cust_pkg = ( pkgpart => $pkgpart ); my %svc_x = (); + my %bill_location = (); + my %ship_location = (); foreach my $field ( @fields ) { if ( $field =~ /^cust_pkg\.(pkgpart|setup|bill|susp|adjourn|expire|cancel)$/ ) { @@ -340,6 +356,10 @@ sub batch_import { $svc_x{$1} = shift @columns; + } elsif ( $field =~ /^svc_broadband\.(ip_addr|mac_addr|sectornum)$/ ) { + + $svc_x{$1} = shift @columns; + } elsif ( $field =~ /^svc_external\.(id|title)$/ ) { $svc_x{$1} = shift @columns; @@ -351,6 +371,14 @@ sub batch_import { $svc_x{$1} = shift @columns; + } elsif ( $is_location{$field} ) { + + $bill_location{$field} = shift @columns; + + } elsif ( $field =~ /^ship_(.*)$/ and $is_location{$1} ) { + + $ship_location{$1} = shift @columns; + } else { #refnum interception @@ -379,14 +407,36 @@ sub batch_import { my $value = shift @columns; $cust_main{$field} = $value if length($value); } + } # foreach my $field + # finished importing columns + + $bill_location{'country'} ||= $conf->config('countrydefault') || 'US'; + $cust_main{'bill_location'} = FS::cust_location->new(\%bill_location); + if ( grep $_, values(%ship_location) ) { + $ship_location{'country'} ||= $conf->config('countrydefault') || 'US'; + $cust_main{'ship_location'} = FS::cust_location->new(\%ship_location); + } else { + $cust_main{'ship_location'} = $cust_main{'bill_location'}; } if ( defined $cust_main{'payinfo'} && length $cust_main{'payinfo'} ) { - $cust_main{'payby'} = 'CARD'; - if ($cust_main{'payinfo'} =~ /\s*([AD]?)(.*)\s*$/) { - $cust_main{'payby'} = 'DCRD' if $1 eq 'D'; - $cust_main{'payinfo'} = $2; + + if ( $cust_main{'payinfo'} =~ /^\s*(\d+\@[\d\.]+)\s*$/ ) { + + $cust_main{'payby'} = 'CHEK'; + $cust_main{'payinfo'} = $1; + + } else { + + $cust_main{'payby'} = 'CARD'; + + if ($cust_main{'payinfo'} =~ /^\s*([AD]?)(.*)\s*$/) { + $cust_main{'payby'} = 'DCRD' if $1 eq 'D'; + $cust_main{'payinfo'} = $2; + } + } + } $cust_main{$_} = parse_datetime($cust_main{$_}) @@ -421,6 +471,8 @@ sub batch_import { $svcdb = 'svc_acct'; } elsif ( $svc_x{'id'} || $svc_x{'title'} ) { $svcdb = 'svc_external'; + } elsif ( $svc_x{ip_addr} || $svc_x{mac_addr} ) { + $svcdb = 'svc_broadband'; } my $svc_phone = '';