X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fcust_main%2FImport.pm;h=dcedc16b1b67506f062e8779e8cc4b10c6a7bf62;hp=f9b167c829c9f9805b7375d14f82312fc98457dc;hb=289c2643882c611a068fffd06e42e258264844e8;hpb=ac8d0caed938fb4dda9340e83397cb8daed43a8a diff --git a/FS/FS/cust_main/Import.pm b/FS/FS/cust_main/Import.pm index f9b167c82..dcedc16b1 100644 --- a/FS/FS/cust_main/Import.pm +++ b/FS/FS/cust_main/Import.pm @@ -14,6 +14,7 @@ use FS::svc_external; use FS::svc_phone; use FS::svc_hardware; use FS::part_referral; +use Business::CreditCard 0.35; $DEBUG = 0; @@ -95,6 +96,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'}, @@ -125,6 +127,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'}; @@ -410,6 +413,8 @@ sub batch_import { if ( $cust_main{'payinfo'} =~ /^\s*(\d+\@[\d\.]+)\s*$/ ) { + delete $cust_main{'payinfo'}; + $cust_payby = new FS::cust_payby { 'payby' => 'CHEK', 'payinfo' => $1, @@ -417,9 +422,22 @@ sub batch_import { } elsif ($cust_main{'payinfo'} =~ /^\s*([AD]?)(.*)\s*$/) { + delete $cust_main{'payinfo'}; + + ## 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_payby = new FS::cust_payby { 'payby' => ($1 eq 'D') ? 'DCRD' : 'CARD', 'payinfo' => $2, + 'paycvv' => delete $cust_main{'paycvv'}, + 'paydate' => delete $cust_main{'paydate'}, + 'payname' => $cust_main{'first'}. ' '. $cust_main{'last'}, }; } @@ -504,7 +522,7 @@ sub batch_import { } my %options = ('invoicing_list' => $invoicing_list); - $options{'cust_payby'} = $cust_payby if $cust_payby; + $options{'cust_payby'} = [ $cust_payby ] if $cust_payby; my $error = $cust_main->insert( \%hash, %options );