projects
/
freeside.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
61ea511
)
RT#33582: RBC return batch processing failure [handle multiple decline lines for...
author
Jonathan Prykop
<jonathan@freeside.biz>
Thu, 5 Mar 2015 05:14:02 +0000
(23:14 -0600)
committer
Jonathan Prykop
<jonathan@freeside.biz>
Thu, 5 Mar 2015 05:14:02 +0000
(23:14 -0600)
FS/FS/cust_pay_batch.pm
patch
|
blob
|
history
diff --git
a/FS/FS/cust_pay_batch.pm
b/FS/FS/cust_pay_batch.pm
index
a4b4957
..
da003d8
100644
(file)
--- 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 })
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
# 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 ) {
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,
}
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 })
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
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);
}
}
$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
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');
}
} # !$old->status
$new->status('Declined');
@@
-354,7
+360,7
@@
sub decline {
$new->failure_status($failure_status);
my $error = $new->replace($old);
if ( $error ) {
$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',
}
my $due_cust_event = $new->cust_main->due_cust_event(
'eventtable' => 'cust_pay_batch',