RT# 74435 - added check, to make sure batch format can handle refunds
authorChristopher Burger <burgerc@freeside.biz>
Mon, 16 Jul 2018 18:40:39 +0000 (14:40 -0400)
committerChristopher Burger <burgerc@freeside.biz>
Mon, 16 Jul 2018 19:02:49 +0000 (15:02 -0400)
Conflicts:
httemplate/misc/download-batch.cgi

FS/FS/pay_batch/RBC.pm
httemplate/edit/cust_refund.cgi
httemplate/edit/process/cust_refund.cgi
httemplate/misc/download-batch.cgi

index 05ee4e5..c4388d1 100644 (file)
@@ -230,5 +230,10 @@ $name = 'RBC';
   },
 );
 
+## this format can handle credit transactions
+sub can_handle_credits {
+  1;
+}
+
 1;
 
index 55f0664..c79c39a 100755 (executable)
@@ -85,7 +85,6 @@
 
 
 <BR>Refund
-
 <% ntable("#cccccc", 2) %>
 
   <TR>
@@ -176,9 +175,6 @@ if ( $cgi->param('paynum') =~ /^(\d+)$/ ) {
 }
 die "no custnum or paynum specified!" unless $custnum;
 
-my $cust_main = qsearchs( 'cust_main', { 'custnum'=>$custnum } );
-die "unknown custnum $custnum" unless $cust_main;
-
 my $_date = time;
 
 my $p1 = popurl(1);
index 49aedf3..44605bf 100755 (executable)
@@ -21,8 +21,6 @@ die "access denied"
   unless $FS::CurrentUser::CurrentUser->access_right('Refund payment')
       || $FS::CurrentUser::CurrentUser->access_right('Post refund');
 
-my $conf = new FS::Conf;
-
 $cgi->param('custnum') =~ /^(\d*)$/ or die "Illegal custnum!";
 my $custnum = $1;
 my $cust_main = qsearchs('cust_main', { 'custnum' => $custnum } )
@@ -62,12 +60,7 @@ if ( $error ) {
   my $refund = "$1$2";
   $cgi->param('paynum') =~ /^(\d*)$/ or die "Illegal paynum!";
   my $paynum = $1;
-  #my $paydate;
   my $paydate = $cgi->param('exp_year'). '-'. $cgi->param('exp_month'). '-01';
-  #unless ($paynum) {
-  #  if ($cust_payby->paydate) { $paydate = "$year-$month-01"; }
-  #  else { $paydate = "2037-12-01"; }
-  #}
 
   if ( $cgi->param('batch') ) {
     $paydate = "2037-12-01" unless $paydate;
index f3a31eb..7b56f2a 100644 (file)
@@ -20,7 +20,16 @@ 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');
+}
+
 </%init>