summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Burger <burgerc@freeside.biz>2018-07-16 14:40:39 -0400
committerChristopher Burger <burgerc@freeside.biz>2018-07-16 14:40:39 -0400
commite44835f640559a6eb5bc831e08732d5ab8947dd4 (patch)
treea322e0002b12246918449d391960e163a9e090ed
parentfcd077e54f251a44e1643e9824e6cd8f33a04da2 (diff)
RT# 74435 - added check, to make sure batch format can handle refunds
-rw-r--r--FS/FS/pay_batch/RBC.pm5
-rw-r--r--httemplate/misc/download-batch.cgi11
2 files changed, 15 insertions, 1 deletions
diff --git a/FS/FS/pay_batch/RBC.pm b/FS/FS/pay_batch/RBC.pm
index dea89cde1..3d1d98b17 100644
--- a/FS/FS/pay_batch/RBC.pm
+++ b/FS/FS/pay_batch/RBC.pm
@@ -228,5 +228,10 @@ $name = 'RBC';
},
);
+## this format can handle credit transactions
+sub can_handle_credits {
+ 1;
+}
+
1;
diff --git a/httemplate/misc/download-batch.cgi b/httemplate/misc/download-batch.cgi
index c4bc37e93..c6a0b68c3 100644
--- a/httemplate/misc/download-batch.cgi
+++ b/httemplate/misc/download-batch.cgi
@@ -20,9 +20,18 @@ elsif ( $cgi->param('format') =~ /^([\w\- ]+)$/ ) {
$opt{'format'} = $1;
}
-my $pay_batch = qsearchs('pay_batch', { batchnum => $batchnum } );
+my $credit_transactions = "EXISTS (SELECT 1 FROM cust_pay_batch WHERE batchnum = $batchnum AND paycode = 'C') AS arecredits";
+my $pay_batch = qsearchs({ 'select' => "*, $credit_transactions",
+ 'table' => 'pay_batch',
+ 'hashref' => { batchnum => $batchnum },
+ });
die "Batch not found: '$batchnum'" if !$pay_batch;
+if ($pay_batch->{Hash}->{arecredits}) {
+ my $export_format = "FS::pay_batch::".$opt{'format'};
+ die "This format can not handle refunds." unless $export_format->can('can_handle_credits');
+}
+
my $exporttext = $pay_batch->export_batch(%opt);
unless ($exporttext) {
http_header('Content-Type' => 'text/html' );