First draft of the bulk-prep-pay script.
This commit is contained in:
parent
052d32fc5e
commit
7ec2c7a291
1 changed files with 68 additions and 0 deletions
68
scripts/rt-bulk-prep-pay.plx
Normal file
68
scripts/rt-bulk-prep-pay.plx
Normal file
|
@ -0,0 +1,68 @@
|
|||
#!/usr/bin/perl
|
||||
# Copyright © 2018, Bradley M. Kuhn
|
||||
# License: AGPL-3.0-or-later
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use autodie qw(:all);
|
||||
|
||||
use Getopt::Long;
|
||||
use File::Spec;
|
||||
use Date::Manip qw(ParseDate UnixDate);
|
||||
|
||||
my($VERBOSE, $INTERACTIVE, $RT_CMD, $SVN_CMD);
|
||||
|
||||
###############################################################################
|
||||
sub TicketIDsReadyForPayment () {
|
||||
my @ticketSpecs;
|
||||
open(my $rtLsFH, "-|", "$RT_CMD", "ls", "-i", "Status = 'ready-for-payment'");
|
||||
while (my $lsLine = <$rtLsFH>) {
|
||||
chomp $lsLine;
|
||||
push(@ticketSpecs, $lsLine);
|
||||
}
|
||||
close $rtLsFH;
|
||||
return @ticketSpecs;
|
||||
}
|
||||
###############################################################################
|
||||
sub FindMostRecentPaymentMethodForTicket ($) {
|
||||
my($ticketSpec) = @_;
|
||||
my $paymentMethod;
|
||||
|
||||
open(my $rtShowFH, "-|", "$RT_CMD", "ls", "-i", "Status = 'ready-for-payment'");
|
||||
while (my $showLine = <$rtShowFH>) {
|
||||
$paymentMethod = $1
|
||||
if ($showLine =~ /\s+PAYMENT\s+METHOD\s*:\s*(.*?)\s*$/);
|
||||
# don't 'last' when found as we want the last one.
|
||||
}
|
||||
close $rtShowFH;
|
||||
return $paymentMethod;
|
||||
}
|
||||
###############################################################################
|
||||
|
||||
GetOptions("verbose=i" => \$VERBOSE, "interactive" => \$INTERACTIVE,
|
||||
"rtCommand=s" => \$RT_CMD, "svnCommand=s" => \$SVN_CMD);
|
||||
|
||||
$RT_CMD = '/usr/bin/rt' unless defined $RT_CMD;
|
||||
$SVN_CMD = '/usr/bin/svn' unless defined $SVN_CMD;
|
||||
|
||||
$INTERACTIVE = 0 if not defined $INTERACTIVE;
|
||||
|
||||
my @ticketSpecs = TicketIDsReadyForPayment();
|
||||
|
||||
my %payments;
|
||||
foreach my $ticketSpec (@ticketSpec) {
|
||||
my $paymentMethod = FindMostRecentPaymentMethodForTicket($ticketSpec);
|
||||
die "Cannot find payment method for ticket, $ticketSpec" unless defined $paymentMethod;
|
||||
push(@{$payments{$paymentMethod}}, $ticketSpec);
|
||||
}
|
||||
foreach my $paymentMethod (sort { $a cmp $b } keys %payments) {
|
||||
print "$paymentMethod: Count: ", scalar(@{$payments{$paymentMethod}}), "\n";
|
||||
print " Tickets: ", join(", ", map { s%^\s*ticket\s*/\s*%%; } @{$payments{$paymentMethod}});
|
||||
}
|
||||
###############################################################################
|
||||
#
|
||||
# Local variables:
|
||||
# compile-command: "perl -c rt-bulk-prep-pay.plx"
|
||||
# perl-indent-level: 2
|
||||
# End:
|
Loading…
Reference in a new issue