summaryrefslogtreecommitdiff
path: root/FS/FS/cust_pay_batch.pm
diff options
context:
space:
mode:
authorJonathan Prykop <jonathan@freeside.biz>2015-03-04 23:14:02 -0600
committerJonathan Prykop <jonathan@freeside.biz>2015-03-04 23:14:02 -0600
commitb0e67356e3a16101eb06a12e2a48cc6dc4233c29 (patch)
treeec3023b488ea89f7b2a7e8c2ca2beb99428b1fda /FS/FS/cust_pay_batch.pm
parent61ea51152f19edd37043f6c29303bfe16809f0f6 (diff)
RT#33582: RBC return batch processing failure [handle multiple decline lines for same batchnum, and better error messages]
Diffstat (limited to 'FS/FS/cust_pay_batch.pm')
-rw-r--r--FS/FS/cust_pay_batch.pm18
1 files changed, 12 insertions, 6 deletions
diff --git a/FS/FS/cust_pay_batch.pm b/FS/FS/cust_pay_batch.pm
index a4b4957..da003d8 100644
--- a/FS/FS/cust_pay_batch.pm
+++ b/FS/FS/cust_pay_batch.pm
@@ -265,15 +265,15 @@ sub approve {
my %opt = @_;
my $paybatchnum = $new->paybatchnum;
my $old = qsearchs('cust_pay_batch', { paybatchnum => $paybatchnum })
- or return "paybatchnum $paybatchnum not found";
+ or return "cannot approve, paybatchnum $paybatchnum not found";
# leave these restrictions in place until TD EFT is converted over
# to B::BP
- return "paybatchnum $paybatchnum already resolved ('".$old->status."')"
+ return "cannot approve paybatchnum $paybatchnum, already resolved ('".$old->status."')"
if $old->status;
$new->status('Approved');
my $error = $new->replace($old);
if ( $error ) {
- return "error updating status of paybatchnum $paybatchnum: $error\n";
+ return "error approving paybatchnum $paybatchnum: $error\n";
}
my $cust_pay = new FS::cust_pay ( {
'custnum' => $new->custnum,
@@ -319,7 +319,7 @@ sub decline {
my $paybatchnum = $new->paybatchnum;
my $old = qsearchs('cust_pay_batch', { paybatchnum => $paybatchnum })
- or return "paybatchnum $paybatchnum not found";
+ or return "cannot decline, paybatchnum $paybatchnum not found";
if ( $old->status ) {
# Handle the case where payments are rejected after the batch has been
# approved. FS::pay_batch::import_results won't allow results to be
@@ -344,9 +344,15 @@ sub decline {
}
$cust_pay->void($reason);
}
+ elsif ( lc($old->status) eq 'declined' ) {
+ # batch files from RBC can have multiple lines for one decline
+ # if this causes problems elsewhere, try hacking pay_batch/RBC.pm instead
+ return '';
+ }
else {
# normal case: refuse to do anything
- return "paybatchnum $paybatchnum already resolved ('".$old->status."')";
+ # should never happen...only statuses are approved or declined
+ return "cannot decline paybatchnum $paybatchnum, already resolved ('".$old->status."')";
}
} # !$old->status
$new->status('Declined');
@@ -354,7 +360,7 @@ sub decline {
$new->failure_status($failure_status);
my $error = $new->replace($old);
if ( $error ) {
- return "error updating status of paybatchnum $paybatchnum: $error\n";
+ return "error declining paybatchnum $paybatchnum: $error\n";
}
my $due_cust_event = $new->cust_main->due_cust_event(
'eventtable' => 'cust_pay_batch',