diff options
Diffstat (limited to 'bin/bill')
-rwxr-xr-x | bin/bill | 176 |
1 files changed, 0 insertions, 176 deletions
diff --git a/bin/bill b/bin/bill deleted file mode 100755 index 9553af966..000000000 --- a/bin/bill +++ /dev/null @@ -1,176 +0,0 @@ -#!/usr/bin/perl -Tw - -use strict; -use Fcntl qw(:flock); -use Date::Parse; -use Getopt::Std; -use FS::UID qw(adminsuidsetup swapuid); -use FS::Record qw(qsearch qsearchs); -use FS::cust_main; - -&untaint_argv; #what it sounds like (eww) -use vars qw($opt_b $opt_c $opt_i $opt_d); -getopts("bcid:"); #switches -my $user = shift or die &usage; - -adminsuidsetup $user; - -#we're at now now (and later). -my($time)= $main::opt_d ? str2time($main::opt_d) : $^T; - -# find packages w/ bill < time && cancel != '', and create corresponding -# customer objects - -my($cust_main,%saw); -foreach $cust_main ( - map { - if ( ( $_->getfield('bill') || 0 ) <= $time && - !$saw{ $_->getfield('custnum') }++ ) { - qsearchs('cust_main',{'custnum'=> $_->getfield('custnum') } ); - } else { - (); - } - } ( qsearch('cust_pkg', { 'cancel' => '' }), - qsearch('cust_pkg', { 'cancel' => 0 }), - ) -) { - - # and bill them - - print "Billing customer #" . $cust_main->getfield('custnum') . "\n"; - - my($error); - - $error=$cust_main->bill('time'=>$time); - warn "Error billing, customer #" . $cust_main->getfield('custnum') . - ":" . $error if $error; - - if ($main::opt_c) { - $error=$cust_main->collect('invoice_time'=>$time, - 'batch_card' => $main::opt_i ? 'no' : 'yes', - ); - warn "Error collecting customer #" . $cust_main->getfield('custnum') . - ":" . $error if $error; - - #sleep 1; - - } - -} - -# subroutines - -sub untaint_argv { - foreach $_ ( $[ .. $#ARGV ) { #untaint @ARGV - $ARGV[$_] =~ /^([\w\-\/]*)$/ || die "Illegal arguement \"$ARGV[$_]\""; - $ARGV[$_]=$1; - } -} - -sub usage { - die "Usage:\n\n bill [ -c [ i ] ] [ -d 'date' ] [ -b ] user\n"; -} - -=head1 NAME - -bill - Command line (crontab, script) interface to customer billing. - -=head1 SYNOPSIS - - bill [ -c [ i ] ] [ -d 'date' ] user - -=head1 DESCRIPTION - -Bills all customers. Searches for customers who are due for billing and calls -the bill and collect methods of a cust_main object. See L<FS::cust_main>. - --c: Turn on collecting (you probably want this). - --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, - but be careful. - -user: From the mapsecrets file - see config.html from the base documentation - -=head1 VERSION - -$Id: bill,v 1.6 1998-11-15 02:53:00 ivan Exp $ - -=head1 BUGS - -=head1 SEE ALSO - -L<FS::cust_main>, config.html from the base documentation - -=head1 HISTORY - -ivan@voicenet.com sep/oct 96 - -separated billing and collections, cleaned up code. -ivan@voicenet.com 96-nov-11 - -added -d option -ivan@voicenet.com 96-nov-13 - -added -v option and started to implement it, added 'd:' to getopts call - (oops!) -ivan@voicenet.com 97-jan-2 - -added more debug messages, moved some searches to fssearch.pl library (for -speed) -rewrote "all customer" finder to know about bill dates, for speed. -ivan@voicenet.com 97-jan-8 - -thought about it a while, and removed passing of the -d option to collect...? -ivan@voicenet.com 97-jan-14 - -make all -v stuff STDERR -ivan@voicenet.com 97-feb-4 - -added pkgnum as argument to program from /db/part_pkg, with kludge for the -"/bin/echo XX" 's already there. -ivan@voicenet.com 97-feb-23 - -- general cleanup -- customers who are suspended can still be billed for the setup fee -- cust_pkg record is re-read after the package setup fee program is run. - this way, - that program can modify the record (for example, to start accounts off - suspended) - (best to think four or five times before modifying anything else!) -ivan@voicenet.com 97-feb-26 - -don't bill recurring fee if its not time! (was removed) -ivan@voicenet.com 97-mar-6 - -added -b option, send batch when done billing. -ivan@voicenet.com 97-apr-4 - -insecure dependency on line 179ish below needs to be fixed before bill is -used setuid -ivan@voicenet.com 97-jun-2 - -removed running of setup program (depriciated) -ivan@voicenet.com 97-jul-21 - -rewrote for new API, removed option to specify custnums (use FS::Bill -instead), removed -v option (?) -ivan@voicenet.com 97-jul-22 - 23 - 25 -28 -(need to add back in email stuff, look in /home/ivan/old/dbin/collect) - -s/suidsetup/adminsuidsetup/, s/FS::Search/FS::Record/, added some batch -exporting stuff (which still needs to be generalized) and removed &idiot -ivan@sisd.com 98-may-27 - -$Log: bill,v $ -Revision 1.6 1998-11-15 02:53:00 ivan -afterthought - -Revision 1.4 1998/11/07 08:21:26 ivan -missing use - -=cut - - |