use FS::svc_phone;
use FS::svc_hardware;
use FS::part_referral;
+use Business::CreditCard 0.35;
$DEBUG = 0;
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'},
my $agentnum = $param->{agentnum};
my $refnum = $param->{refnum};
my $pkgpart = $param->{pkgpart};
+ my $validate_cc = $param->{validate_cc};
my $format = $param->{'format'};
if ( $cust_main{'payinfo'} =~ /^\s*(\d+\@[\d\.]+)\s*$/ ) {
+ delete $cust_main{'payinfo'};
+
$cust_payby = new FS::cust_payby {
'payby' => 'CHEK',
'payinfo' => $1,
} 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'},
};
}
}
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 );