fix card signup in v4
[freeside.git] / FS / FS / cust_main / Import.pm
index e5a4485..6464761 100644 (file)
@@ -2,15 +2,14 @@ package FS::cust_main::Import;
 
 use strict;
 use vars qw( $DEBUG $conf );
-use Storable qw(thaw);
 use Data::Dumper;
-use MIME::Base64;
 use File::Slurp qw( slurp );
 use FS::Misc::DateTime qw( parse_datetime );
 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;
@@ -67,8 +66,7 @@ Load a batch import as a queued JSRPC job
 
 sub process_batch_import {
   my $job = shift;
-
-  my $param = thaw(decode_base64(shift));
+  my $param = shift;
   warn Dumper($param) if $DEBUG;
   
   my $files = $param->{'uploaded_files'}
@@ -131,11 +129,9 @@ sub batch_import {
   my $format    = $param->{'format'};
 
   my @fields;
-  my $payby;
   if ( $format eq 'simple' ) {
     @fields = qw( cust_pkg.setup dayphone first last
                   address1 address2 city state zip comments );
-    $payby = 'BILL';
   } elsif ( $format eq 'extended' ) {
     @fields = qw( agent_custid refnum
                   last first address1 address2 city state zip country
@@ -147,12 +143,11 @@ sub batch_import {
                   cust_pkg.pkgpart
                   svc_acct.username svc_acct._password 
                 );
-    $payby = 'BILL';
  } elsif ( $format eq 'extended-plus_options' ) {
     @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
@@ -160,7 +155,6 @@ sub batch_import {
                   svc_acct.username svc_acct._password 
                   customer_options
                 );
-    $payby = 'BILL';
  } elsif ( $format eq 'extended-plus_company' ) {
     @fields = qw( agent_custid refnum
                   last first company address1 address2 city state zip country
@@ -172,7 +166,6 @@ sub batch_import {
                   cust_pkg.pkgpart
                   svc_acct.username svc_acct._password 
                 );
-    $payby = 'BILL';
  } elsif ( $format eq 'extended-plus_company_and_options' ) {
     @fields = qw( agent_custid refnum
                   last first company address1 address2 city state zip country
@@ -185,7 +178,17 @@ sub batch_import {
                   svc_acct.username svc_acct._password 
                   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 );
  } elsif ( $format =~ /^svc_external/ ) {
     @fields = qw( agent_custid refnum
                   last first company address1 address2 city state zip country
@@ -199,7 +202,6 @@ sub batch_import {
                 );
     push @fields, map "svc_phone.$_", qw( countrycode phonenum sip_password pin)
       if $format eq 'svc_external_svc_phone';
-    $payby = 'BILL';
   } elsif ( $format eq 'birthdates-acct_phone_hardware') {
     @fields = qw( agent_custid refnum
                   last first company address1 address2 city state zip country
@@ -215,7 +217,6 @@ sub batch_import {
     push @fields, map "svc_phone.$_", qw(countrycode phonenum sip_password pin);
     push @fields, map "svc_hardware.$_", qw(typenum ip_addr hw_addr serial);
 
-    $payby = 'BILL';
   } elsif ( $format eq 'national_id-acct_phone') {
     @fields = qw( agent_custid refnum
                   last first company address1 address2 city state zip country
@@ -230,7 +231,6 @@ sub batch_import {
                 );
     push @fields, map "svc_phone.$_", qw(countrycode phonenum sip_password pin);
 
-    $payby = 'BILL';
   } else {
     die "unknown format $format";
   }
@@ -318,7 +318,6 @@ sub batch_import {
       custbatch => $custbatch,
       agentnum  => $agentnum,
       refnum    => $refnum,
-      payby     => $payby, #default
       paydate   => '12/2037', #default
     );
     my $billtime = time;
@@ -343,6 +342,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 +406,23 @@ 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*$/) {
+          $cust_main{'payby'} = 'DCRD' if $1 eq 'D';
+          $cust_main{'payinfo'} = $2;
+        }
+
       }
+
     }
 
     $cust_main{$_} = parse_datetime($cust_main{$_})
@@ -442,6 +457,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 = '';