diff options
author | Christopher Burger <burgerc@freeside.biz> | 2018-11-05 17:44:50 -0500 |
---|---|---|
committer | Christopher Burger <burgerc@freeside.biz> | 2018-11-05 20:33:47 -0500 |
commit | 1fcb4ef3e4e3ad7eae7067d37e7675efa37680fb (patch) | |
tree | 6336a8d354b649d6406e6e54c611771fe2857101 /FS/FS/cust_main/Billing_Batch.pm | |
parent | 8b610864ee3d14b7874fc21685651004bf94cb1d (diff) |
RT# 76093 - Added ability to charge a processing fee when taking a payment on the back end
Diffstat (limited to 'FS/FS/cust_main/Billing_Batch.pm')
-rw-r--r-- | FS/FS/cust_main/Billing_Batch.pm | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/FS/FS/cust_main/Billing_Batch.pm b/FS/FS/cust_main/Billing_Batch.pm index 0774781..f771329 100644 --- a/FS/FS/cust_main/Billing_Batch.pm +++ b/FS/FS/cust_main/Billing_Batch.pm @@ -162,6 +162,41 @@ sub batch_card { return $error; # e.g. "Illegal zip" ala RT#75998 } + if ($options{'processing-fee'} > 0) { + my $pf_cust_pkg; + my $processing_fee_text = 'Payment Processing Fee'; + my $pf_change_error = $self->charge({ + 'amount' => $options{'processing-fee'}, + 'pkg' => $processing_fee_text, + 'setuptax' => 'Y', + 'cust_pkg_ref' => \$pf_cust_pkg, + }); + + if($pf_change_error) { + warn 'Unable to add payment processing fee'; + return ''; + } + + $pf_cust_pkg->setup(time); + my $pf_error = $pf_cust_pkg->replace; + if($pf_error) { + warn 'Unable to set setup time on cust_pkg for processing fee'; + # but keep going... + } + + my $cust_bill = qsearchs('cust_bill', { 'invnum' => $invnum }); + unless ( $cust_bill ) { + warn "race condition + invoice deletion just happened"; + return ''; + } + + my $grand_pf_error = + $cust_bill->add_cc_surcharge($pf_cust_pkg->pkgnum,$options{'processing-fee'}); + + warn "cannot add Processing fee to invoice #$invnum: $grand_pf_error" + if $grand_pf_error; + } + my $unapplied = $self->total_unapplied_credits + $self->total_unapplied_payments + $self->in_transit_payments; |