X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcust_main%2FImport.pm;h=49d87f231b17758c6e1855fa42a55570279e083e;hb=44a2299c10d051d152d0a000641d7740299be3d4;hp=e5a4485f92a83fab777def5bef402e877bae0290;hpb=f35dc3162276739ca95bc380490e83ede5b73393;p=freeside.git diff --git a/FS/FS/cust_main/Import.pm b/FS/FS/cust_main/Import.pm index e5a4485f9..49d87f231 100644 --- a/FS/FS/cust_main/Import.pm +++ b/FS/FS/cust_main/Import.pm @@ -11,10 +11,12 @@ 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; use FS::part_referral; +use Business::CreditCard 0.35; $DEBUG = 0; @@ -97,6 +99,7 @@ sub process_batch_import { agentnum => $param->{'agentnum'}, refnum => $param->{'refnum'}, pkgpart => $param->{'pkgpart'}, + validate_cc => $param->{'validate_cc'}, #'fields' => [qw( cust_pkg.setup dayphone first last address1 address2 # city state zip comments )], 'format' => $param->{'format'}, @@ -127,6 +130,7 @@ sub batch_import { my $agentnum = $param->{agentnum}; my $refnum = $param->{refnum}; my $pkgpart = $param->{pkgpart}; + my $validate_cc = $param->{validate_cc}; my $format = $param->{'format'}; @@ -152,7 +156,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 @@ -186,6 +190,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 @@ -343,6 +359,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; @@ -403,11 +423,32 @@ sub batch_import { } 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*$/) { + + ## validate credit card if requested + if ($validate_cc) { + validate($2) + or return "Invalid card($2) for customer ".$cust_main{'first'}." ".$cust_main{'last'}; + return "Unknown card type for customer ".$cust_main{'first'}." ".$cust_main{'last'} + if cardtype($2) eq "Unknown"; + } + + $cust_main{'payby'} = 'DCRD' if $1 eq 'D'; + $cust_main{'payinfo'} = $2; + } + } + } $cust_main{$_} = parse_datetime($cust_main{$_}) @@ -442,6 +483,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 = '';