projects
/
freeside.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Allow passing of 'allow_pkgpart' and 'import' flags up the chain to FS::cust_pkg...
[freeside.git]
/
FS
/
FS
/
cust_pay_batch.pm
diff --git
a/FS/FS/cust_pay_batch.pm
b/FS/FS/cust_pay_batch.pm
index
4138436
..
b93d816
100644
(file)
--- a/
FS/FS/cust_pay_batch.pm
+++ b/
FS/FS/cust_pay_batch.pm
@@
-84,6
+84,9
@@
following fields are currently supported:
=item error_message - the error returned by the gateway if any
=item error_message - the error returned by the gateway if any
+=item failure_status - the normalized L<Business::BatchPayment> failure
+status, if any
+
=back
=head1 METHODS
=back
=head1 METHODS
@@
-340,20
+343,24
@@
sub approve {
return;
}
return;
}
-=item decline [ REASON ]
+=item decline [ REASON
[ STATUS ]
]
Decline this payment. This will replace the existing record with the
same paybatchnum, set its status to 'Declined', and run collection events
as appropriate. This should only be called from the batch import process.
REASON is a string description of the decline reason, defaulting to
Decline this payment. This will replace the existing record with the
same paybatchnum, set its status to 'Declined', and run collection events
as appropriate. This should only be called from the batch import process.
REASON is a string description of the decline reason, defaulting to
-'Returned payment'.
+'Returned payment', and will go into the "error_message" field.
+
+STATUS is a normalized failure status defined by L<Business::BatchPayment>,
+and will go into the "failure_status" field.
=cut
sub decline {
my $new = shift;
my $reason = shift || 'Returned payment';
=cut
sub decline {
my $new = shift;
my $reason = shift || 'Returned payment';
+ my $failure_status = shift || '';
#my $conf = new FS::Conf;
my $paybatchnum = $new->paybatchnum;
#my $conf = new FS::Conf;
my $paybatchnum = $new->paybatchnum;
@@
-368,6
+375,12
@@
sub decline {
if ( lc($old->status) eq 'approved' ) {
# Void the payment
my $cust_pay = qsearchs('cust_pay', {
if ( lc($old->status) eq 'approved' ) {
# Void the payment
my $cust_pay = qsearchs('cust_pay', {
+ custnum => $new->custnum,
+ batchnum => $new->batchnum
+ });
+ # these should all be migrated over, but if it's not found, look for
+ # batchnum in the 'paybatch' field also
+ $cust_pay ||= qsearchs('cust_pay', {
custnum => $new->custnum,
paybatch => $new->batchnum
});
custnum => $new->custnum,
paybatch => $new->batchnum
});
@@
-384,6
+397,7
@@
sub decline {
} # !$old->status
$new->status('Declined');
$new->error_message($reason);
} # !$old->status
$new->status('Declined');
$new->error_message($reason);
+ $new->failure_status($failure_status);
my $error = $new->replace($old);
if ( $error ) {
return "error updating status of paybatchnum $paybatchnum: $error\n";
my $error = $new->replace($old);
if ( $error ) {
return "error updating status of paybatchnum $paybatchnum: $error\n";