5 use FS::UID qw(adminsuidsetup);
7 &untaint_argv; #what it sounds like (eww)
8 #use vars qw($opt_d $opt_v $opt_p $opt_a $opt_s $opt_y);
10 getopts("p:a:d:vsy:m", \%opt);
12 my $user = shift or die &usage;
15 die "The -p option has been removed in version 4 -- customers no longer have ".
16 "a single, specific payment type"
19 use FS::Cron::bill qw(bill);
20 bill(%opt, 'check_freq'=>'1m' );
22 use FS::Cron::upload qw(upload);
30 foreach $_ ( $[ .. $#ARGV ) { #untaint @ARGV
31 #$ARGV[$_] =~ /^([\w\-\/]*)$/ || die "Illegal arguement \"$ARGV[$_]\"";
33 $ARGV[$_] =~ /^(.*)$/ || die "Illegal arguement \"$ARGV[$_]\"";
39 die "Usage:\n\n freeside-monthly [ -d 'date' ] user [ custnum custnum ... ]\n";
48 freeside-monthly - Run monthly billing and invoice collection events.
52 freeside-monthly [ -d 'date' ] [ -y days ] [ -a agentnum ] [ -s ] [ -v ] user [ custnum custnum ... ]
56 Bills customers and runs invoice collection events, for the alternate monthly
57 event chain. If you have defined monthly event checks, should be run from
60 Bills customers. Searches for customers who are due for billing and calls
61 the bill and collect methods of a cust_main object. See L<FS::cust_main>.
63 -d: Pretend it's 'date'. Date is in any format Date::Parse is happy with,
66 -y: In addition to -d, which specifies an absolute date, the -y switch
67 specifies an offset, in days. For example, "-y 15" would increment the
68 "pretend date" 15 days from whatever was specified by the -d switch
69 (or now, if no -d switch was given).
71 -p: Deprecated, will produce a fatal error (formerly was: Only process customers with the specified payby (CARD, DCRD, CHEK, DCHK, BILL, COMP, LECB))
73 -a: Only process customers with the specified agentnum
75 -s: re-charge setup fees
79 -m: Experimental multi-process mode (delay upload jobs until billing jobs complete)
81 user: Typically "fs_daily"
83 custnum: if one or more customer numbers are specified, only bills those
84 customers. Otherwise, bills all customers.
88 In most cases, you would use freeside-daily only and not freeside-monthly.
89 freeside-monthly would only be used in cases where you have events that can
90 only be run once each month, for example, batching invoices to a third-party
97 L<freeside-daily>, L<FS::cust_main>, config.html from the base documentation