my($cust_main,%saw);
foreach $cust_main (
map {
+ unless ( exists $saw{ $_->custnum } && defined $saw{ $_->custnum} ) {
+ $saw{ $_->custnum } = 0; # to avoid 'use of uninitialized value' errors
+ }
if (
( $main::opt_a || ( ( $_->getfield('bill') || 0 ) <= $time ) )
&& $bill_only{ $_->custnum }
# and bill them
print "Billing customer #" . $cust_main->getfield('custnum') . "\n";
- next;
my($error);
sub untaint_argv {
foreach $_ ( $[ .. $#ARGV ) { #untaint @ARGV
- $ARGV[$_] =~ /^([\w\-\/]*)$/ || die "Illegal arguement \"$ARGV[$_]\"";
+ #$ARGV[$_] =~ /^([\w\-\/]*)$/ || die "Illegal arguement \"$ARGV[$_]\"";
+ # Date::Parse
+ $ARGV[$_] =~ /^(.*)$/ || die "Illegal arguement \"$ARGV[$_]\"";
$ARGV[$_]=$1;
}
}
sub usage {
- die "Usage:\n\n bill [ -c [ i ] ] [ -d 'date' ] [ -b ] user\n";
+ die "Usage:\n\n freeside-bill [ -c [ i ] ] [ -d 'date' ] [ -b ] user\n";
}
=head1 NAME
-i: real-time billing (as opposed to batch billing). only relevant
for credit cards.
- -d: Pretent it's 'date'. Date is in any format Date::Parse is happy with,
+ -d: Pretend it's 'date'. Date is in any format Date::Parse is happy with,
but be careful.
user: From the mapsecrets file - see config.html from the base documentation
=head1 VERSION
-$Id: freeside-bill,v 1.1 1999-08-11 20:41:27 ivan Exp $
+$Id: freeside-bill,v 1.6 2000-06-24 00:28:30 ivan Exp $
=head1 BUGS