summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorivan <ivan>1998-11-15 02:51:21 +0000
committerivan <ivan>1998-11-15 02:51:21 +0000
commit99296e2d2de4162acdd6d607fdbb2e8f6688930e (patch)
treeb3e18a9087587e96029df95efac02f657d73e358
parent0ec706c23e1ea66d4ca5ca8791bcf41710422049 (diff)
adminsuidsetup needs user, pod, cleanup
-rwxr-xr-xbin/bill237
1 files changed, 107 insertions, 130 deletions
diff --git a/bin/bill b/bin/bill
index 3bc995d35..b74f26abd 100755
--- a/bin/bill
+++ b/bin/bill
@@ -1,88 +1,4 @@
-#!/usr/local/bin/perl -Tw
-#
-# bill: Bill customer(s)
-#
-# Usage: bill [ -c [ i ] ] [ -d 'date' ] [ -b ]
-#
-# Bills all customers.
-#
-# Adds record to /dbin/cust_bill and /dbin/cust_pay (if payment made -
-# CARD & COMP), prints invoice / charges card etc.
-#
-# -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.
-#
-# ## n/a ## -b: send batch when done billing
-#
-# 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.4 1998-11-07 08:21:26 ivan
-# missing use
-#
-
-# setup
+#!/usr/bin/perl -Tw
use strict;
use Fcntl qw(:flock);
@@ -92,14 +8,12 @@ use FS::UID qw(adminsuidsetup swapuid);
use FS::Record qw(qsearch qsearchs);
use FS::cust_main;
-my($batchfile)="/var/spool/freeside/batch";
-my($batchlock)="/var/spool/freeside/batch.lock";
-
-adminsuidsetup;
-
&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;
@@ -123,8 +37,6 @@ foreach $cust_main (
print "Billing customer #" . $cust_main->getfield('custnum') . "\n";
- bless($cust_main,"FS::cust_main");
-
my($error);
$error=$cust_main->bill('time'=>$time);
@@ -144,44 +56,6 @@ foreach $cust_main (
}
-#if ($main::opt_b) {
-#
-# die "Batch still waiting for reply? ($batchlock exists)\n" if -e $batchlock;
-# open(BATCHLOCK,"+>>$batchlock") or die "Can't open $batchlock: $!";
-# select(BATCHLOCK); $|=1; select(STDOUT);
-# unless ( flock(BATCHLOCK,,LOCK_EX|LOCK_NB) ) {
-# seek(BATCHLOCK,0,0);
-# my($pid)=<BATCHLOCK>;
-# chop($pid);
-# die "Is a batch running? (pid $pid)\n";
-# }
-# seek(BATCHLOCK,0,0);
-# print BATCHLOCK $$,"\n";
-#
-# ( open(BATCH,">$batchfile")
-# and flock(BATCH,LOCK_EX|LOCK_NB)
-# ) or die "Can't open $batchfile: $!";
-#
-# my($cust_pay_batch);
-# foreach $cust_pay_batch (qsearch('cust_pay_batch',{})) {
-# print BATCH join(':',
-# $_->getfield('cardnum'),
-# $_->getfield('exp'),
-# $_->getfield('amount'),
-# $_->getfield('payname')
-# || $_->getfield('first'). ' '. $_->getfield('last'),
-# "Description",
-# $_->getfield('zip'),
-# ),"\n";
-# }
-#
-# flock(BATCH,LOCK_UN);
-# close BATCH;
-#
-# flock(BATCHLOCK,LOCK_UN);
-# close BATCHLOCK;
-#}
-
# subroutines
sub untaint_argv {
@@ -191,3 +65,106 @@ sub untaint_argv {
}
}
+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 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.5 1998-11-15 02:51:21 ivan
+adminsuidsetup needs user, pod, cleanup
+
+Revision 1.4 1998/11/07 08:21:26 ivan
+missing use
+
+=cut
+
+