add -t flag to bulk void for payment type, RT#73413
authorIvan Kohler <ivan@freeside.biz>
Tue, 15 Nov 2016 22:52:17 +0000 (14:52 -0800)
committerIvan Kohler <ivan@freeside.biz>
Tue, 15 Nov 2016 22:52:17 +0000 (14:52 -0800)
bin/bulk_void

index a142818..c75da5d 100755 (executable)
@@ -1,9 +1,13 @@
 #!/usr/bin/perl
 
+use strict;
+use warnings;
+use vars qw( %opt );
 use FS::Misc::Getopt;
 use FS::Record qw(qsearch qsearchs dbh);
 
-getopts('cpifXr:');
+getopts('s:e:cpiXr:t:');
+
 my $dbh = dbh;
 $FS::UID::AutoCommit = 0;
 
@@ -11,22 +15,27 @@ sub usage() {
   "Usage: bulk_void  -s start -e end
                   -r void_reason
                   { -c | -p | -i }
+                  [ -t payby ]
                   [ -X ]
                   <user>
 -s, -e: date range (required)
 -r: void reason text (required)
--c, -p, -i, -f: void credits, payments, invoices
+-c, -p, -i: void credits, payments, invoices
+-t: only void payments with this payby
 -X: commit changes
 ";
 }
 
-if (!$opt{start} or !$opt{end} or !$opt{r}) {
+if (!$opt{s} or !$opt{e} or !$opt{r}) {
   die usage;
 }
 
 print "DRY RUN--changes will not be committed.\n" unless $opt{X};
 
-my $date = " WHERE _date >= $opt{start} AND _date <= $opt{end}";
+my $date = " WHERE _date >= $opt{s} AND _date <= $opt{e}";
+
+my %search = ();
+$search{payby} = $opt{t} if $opt{t} && $opt{p};
 
 my %tables = (
   c => 'cust_credit',
@@ -45,6 +54,7 @@ foreach my $k (keys %tables) {
 
   my $cursor = FS::Cursor->new({
     table     => $table,
+    hashref   => \%search,
     extra_sql => $date,
   });
   my $error;