work around missing id, RT#83146
[freeside.git] / FS / bin / freeside-paymentech-upload
index 770239d..283781d 100755 (executable)
@@ -41,7 +41,17 @@ my @batches;
 if($opt_a) {
   my %criteria = (status => 'O');
   $criteria{'payby'} = uc($opt_p) if $opt_p;
-  @batches = qsearch('pay_batch', \%criteria);
+
+  my $extra_sql;
+  $extra_sql = " AND ((payby = 'CHEK' AND type != 'CREDIT') OR (payby != 'CHEK'))" unless FS::pay_batch->can_handle_electronic_refunds('paymentech');
+
+  my %hash = (
+    table => 'pay_batch',
+    hashref   => \%criteria,
+    extra_sql => $extra_sql,
+  );
+
+  @batches = qsearch(\%hash);
   log_and_die("No open batches found".($opt_p ? " of type '$opt_p'" : '').".\n")
     if !@batches;
 }
@@ -50,6 +60,12 @@ else {
   log_and_die("batchnum not passed\n".&usage) if !$batchnum;
   @batches = qsearchs('pay_batch', { batchnum => $batchnum } );
   log_and_die("Can't find payment batch '$batchnum'\n") if !@batches;
+
+  if ($batches[0]->type eq "CREDIT") {
+    warn "running credit\n";
+    log_and_die( "Batch number $batchnum is a credit (batch refund) batch, and this format can not handle batch refunds.\n" )
+      unless FS::pay_batch->can_handle_electronic_refunds('paymentech');
+  }
 }
 
 my $conf = new FS::Conf;
@@ -126,7 +142,7 @@ freeside-paymentech-upload - Transmit a payment batch to Chase Paymentech via SF
 
 Command line tool to upload a payment batch to the Chase Paymentech gateway.
 The batch will be exported to the Paymentech XML format, packaged in a ZIP 
-file, and transmitted via SFTP.  Use L<paymentech-download> to retrieve the 
+file, and transmitted via SFTP.  Use L<freeside-paymentech-download> to retrieve the
 response file.
 
 -a: Send all open batches, instead of specifying a batchnum.