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;
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
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
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
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
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
);
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
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
);
push @fields, map "svc_phone.$_", qw(countrycode phonenum sip_password pin);
- $payby = 'BILL';
} else {
die "unknown format $format";
}
custbatch => $custbatch,
agentnum => $agentnum,
refnum => $refnum,
- payby => $payby, #default
paydate => '12/2037', #default
);
my $billtime = time;
my %svc_x = ();
my %bill_location = ();
my %ship_location = ();
+ my $cust_payby = '';
foreach my $field ( @fields ) {
if ( $field =~ /^cust_pkg\.(pkgpart|setup|bill|susp|adjourn|expire|cancel)$/ ) {
$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;
if ( $cust_main{'payinfo'} =~ /^\s*(\d+\@[\d\.]+)\s*$/ ) {
- $cust_main{'payby'} = 'CHEK';
- $cust_main{'payinfo'} = $1;
+ delete $cust_main{'payinfo'};
- } else {
+ $cust_payby = new FS::cust_payby {
+ 'payby' => 'CHEK',
+ 'payinfo' => $1,
+ };
- $cust_main{'payby'} = 'CARD';
+ } elsif ($cust_main{'payinfo'} =~ /^\s*([AD]?)(.*)\s*$/) {
- if ($cust_main{'payinfo'} =~ /^\s*([AD]?)(.*)\s*$/) {
- $cust_main{'payby'} = 'DCRD' if $1 eq 'D';
- $cust_main{'payinfo'} = $2;
- }
+ delete $cust_main{'payinfo'};
+
+ $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'},
+ };
}
$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 = '';
$hash{$cust_pkg} = \@svc_x;
}
- my $error = $cust_main->insert( \%hash, $invoicing_list );
+ my %options = ('invoicing_list' => $invoicing_list);
+ $options{'cust_payby'} = [ $cust_payby ] if $cust_payby;
+
+ my $error = $cust_main->insert( \%hash, %options );
if ( $error ) {
$dbh->rollback if $oldAutoCommit;