Support --subTotals option for each payment method.
--subTotals implies --showAmounts, and when you use it, the ticket amounts are grouped by payment type, and the subtotal for each payment type is printed. Note that I left some code duplication in the $subTotalOk / $overallTotalOk support stuff. It was just laziness. There should be a sub that tests the values for validity.
This commit is contained in:
		
							parent
							
								
									df7362f6b9
								
							
						
					
					
						commit
						b5bb608067
					
				
					 1 changed files with 26 additions and 6 deletions
				
			
		|  | @ -11,7 +11,7 @@ use Getopt::Long; | |||
| use File::Spec; | ||||
| use Date::Manip qw(ParseDate UnixDate); | ||||
| 
 | ||||
| my($VERBOSE, $INTERACTIVE, $RT_CMD, $SVN_CMD, %AMOUNTS, $SHOW_AMOUNTS, $QUERY_STRING); | ||||
| my($VERBOSE, $INTERACTIVE, $RT_CMD, $SVN_CMD, %AMOUNTS, $SHOW_AMOUNTS, $QUERY_STRING, $SUB_TOTALS); | ||||
| 
 | ||||
| ############################################################################### | ||||
| sub TicketIDsReadyForPayment () { | ||||
|  | @ -72,7 +72,9 @@ sub FindMostRecentPaymentMethodForTicket ($) { | |||
| ############################################################################### | ||||
| 
 | ||||
| GetOptions("verbose=i" => \$VERBOSE, "interactive" => \$INTERACTIVE, 'showAmounts' => \$SHOW_AMOUNTS, | ||||
|            'subTotals' => \$SUB_TOTALS, | ||||
|            "rtCommand=s" => \$RT_CMD, "svnCommand=s" => \$SVN_CMD, 'queryString=s' => \$QUERY_STRING); | ||||
| $SHOW_AMOUNTS = 1 if $SUB_TOTALS; | ||||
| 
 | ||||
| $RT_CMD = '/usr/bin/rt' unless defined $RT_CMD; | ||||
| $SVN_CMD = '/usr/bin/svn' unless defined $SVN_CMD; | ||||
|  | @ -99,21 +101,39 @@ foreach my $ticketSpec (@ticketSpecs) { | |||
|   push(@{$payments{$paymentMethod}}, $ticketSpec); | ||||
| } | ||||
| print "#" x 70, "\n"; | ||||
| my ($overallTotal, $overallTotalOk) = (0.00, 1); | ||||
| 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}}), "\n"; | ||||
|   my($subTotal, $subTotalOk) = (0.00, 1); | ||||
|   if ($SUB_TOTALS) { | ||||
|     foreach my $tix (@{$payments{$paymentMethod}}) { | ||||
|       $tix =~ s%^\s*ticket\s*/\s*%%; | ||||
|       my $val = $AMOUNTS{$tix}; | ||||
|       print "$tix: $AMOUNTS{$tix}\n"; | ||||
|       $val =~ s/\$//g;     $val =~ s/,//g; $val =~ s/\s//g; | ||||
|       if ($val =~ /^[\d\.]+$/) { $subTotal += $val;  } else { $subTotalOk = 0; } | ||||
|        | ||||
|     } | ||||
|     if ($subTotalOk) { | ||||
|       print "SUBTOTAL for $paymentMethod: $subTotal\n"; | ||||
|       $overallTotal += $subTotal; | ||||
|     } else { | ||||
|       $overallTotalOk = 0; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| if ($SHOW_AMOUNTS) { | ||||
| if ($SHOW_AMOUNTS and not $SUB_TOTALS) { | ||||
|   print "Unable to find amounts for all tickets\n"  if (scalar(@ticketSpecs) != scalar(keys %AMOUNTS)); | ||||
|   my $total = 0.00; | ||||
|   my $totalOk = 1; | ||||
|   foreach my $tix (sort { $a <=> $b} (keys %AMOUNTS)) { | ||||
|     my $val = $AMOUNTS{$tix}; | ||||
|     print "$tix: $AMOUNTS{$tix}\n"; | ||||
|     $val =~ s/\$//g;     $val =~ s/,//g; $val =~ s/\s//g; | ||||
|     if ($val =~ /^[\d\.]+$/) { $total += $val;  } else { $totalOk = 0; } | ||||
|     if ($val =~ /^[\d\.]+$/) { $overallTotal += $val;  } else { $overallTotalOk = 0; } | ||||
|   } | ||||
|   print "\nTOTAL AMOUNT: $total\n" if $totalOk; | ||||
|   print "\nTOTAL AMOUNT: $overallTotal\n" if $overallTotalOk; | ||||
| } elsif ($SUB_TOTALS) { | ||||
|   print "\nTOTAL AMOUNT: $overallTotal\n" if $overallTotalOk; | ||||
| } | ||||
| ############################################################################### | ||||
| # | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Bradley M. Kuhn
						Bradley M. Kuhn