summaryrefslogtreecommitdiff
path: root/FS/FS/cust_pay_batch.pm
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2016-01-25 15:03:02 -0800
committerMark Wells <mark@freeside.biz>2016-01-26 13:34:17 -0800
commit26298f43a28dd924069f832c217cafbe0272d6e7 (patch)
treee32d0f771c38e09cd98813ab7bf420cbe54e5ed1 /FS/FS/cust_pay_batch.pm
parent121ae7fbe668c076e11d54ae6f96dc81738c9fdf (diff)
update batch payment for multiple payment methods, etc., #17878 and #23741
Diffstat (limited to 'FS/FS/cust_pay_batch.pm')
-rw-r--r--FS/FS/cust_pay_batch.pm28
1 files changed, 27 insertions, 1 deletions
diff --git a/FS/FS/cust_pay_batch.pm b/FS/FS/cust_pay_batch.pm
index 8dd6446..8127c6a 100644
--- a/FS/FS/cust_pay_batch.pm
+++ b/FS/FS/cust_pay_batch.pm
@@ -63,6 +63,8 @@ following fields are currently supported:
=item payname - name on card
+=item paytype - account type ((personal|business) (checking|savings))
+
=item first - name
=item last - name
@@ -156,6 +158,18 @@ sub check {
$error = $self->payinfo_check();
return $error if $error;
+ if ( $self->payby eq 'CHEK' ) {
+ # because '' is on the list of paytypes:
+ my $paytype = $self->paytype or return "Bank account type required";
+ if (grep { $_ eq $paytype} FS::cust_payby->paytypes) {
+ #ok
+ } else {
+ return "Bank account type '$paytype' is not allowed"
+ }
+ } else {
+ $self->set('paytype', '');
+ }
+
if ( $self->exp eq '' ) {
return "Expiration date required"
unless $self->payby =~ /^(CHEK|DCHK|WEST)$/;
@@ -408,12 +422,23 @@ sub request_item {
$self->payinfo =~ /(\d+)@(\d+)/; # or else what?
$payment{account_number} = $1;
$payment{routing_code} = $2;
- $payment{account_type} = $cust_main->paytype;
+ $payment{account_type} = $self->paytype;
# XXX what if this isn't their regular payment method?
} else {
die "unsupported BatchPayment method: ".$pay_batch->payby;
}
+ my $recurring;
+ if ( $cust_main->status =~ /^active|suspended|ordered$/ ) {
+ if ( $self->payinfo_used ) {
+ $recurring = 'S'; # subsequent
+ } else {
+ $recurring = 'F'; # first use
+ }
+ } else {
+ $recurring = 'N'; # non-recurring
+ }
+
Business::BatchPayment->create(Item =>
# required
action => 'payment',
@@ -429,6 +454,7 @@ sub request_item {
( map { $_ => $location->$_ } qw(address2 city state country zip) ),
invoice_number => $self->invnum,
+ recurring_billing => $recurring,
%payment,
);
}