summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorivan <ivan>2003-09-26 13:04:26 +0000
committerivan <ivan>2003-09-26 13:04:26 +0000
commit74e6f7cb1f048778a417e0124143f6c447c9f87c (patch)
tree07e91df860b7f42ab4237744a7f55071e393ecb4
parentb0fb4547e39f3ad26bedb95d8cc8b5a10f66a4eb (diff)
re-setup option to re-charge setup fee
-rw-r--r--FS/FS/cust_main.pm16
-rwxr-xr-xFS/bin/freeside-daily11
2 files changed, 17 insertions, 10 deletions
diff --git a/FS/FS/cust_main.pm b/FS/FS/cust_main.pm
index 90cf18e8f..de22ab5c5 100644
--- a/FS/FS/cust_main.pm
+++ b/FS/FS/cust_main.pm
@@ -993,15 +993,19 @@ conjunction with the collect method.
Options are passed as name-value pairs.
-The only currently available option is `time', which bills the customer as if
-it were that time. It is specified as a UNIX timestamp; see
-L<perlfunc/"time">). Also see L<Time::Local> and L<Date::Parse> for conversion
-functions. For example:
+Currently available options are:
+
+resetup - if set true, re-charges setup fees.
+
+time - bills the customer as if it were that time. Specified as a UNIX
+timestamp; see L<perlfunc/"time">). Also see L<Time::Local> and
+L<Date::Parse> for conversion functions. For example:
use Date::Parse;
...
$cust_main->bill( 'time' => str2time('April 20th, 2001') );
+
If there is an error, returns the error, otherwise returns false.
=cut
@@ -1058,7 +1062,7 @@ sub bill {
# bill setup
my $setup = 0;
- unless ( $cust_pkg->setup ) {
+ if ( !$cust_pkg->setup || $options{'resetup'} ) {
my $setup_prog = $part_pkg->getfield('setup');
$setup_prog =~ /^(.*)$/ or do {
$dbh->rollback if $oldAutoCommit;
@@ -1078,7 +1082,7 @@ sub bill {
return "Error eval-ing part_pkg->setup pkgpart ". $part_pkg->pkgpart.
"(expression $setup_prog): $@";
}
- $cust_pkg->setfield('setup',$time);
+ $cust_pkg->setfield('setup', $time) unless $cust_pkg->setup;
$cust_pkg_mod_flag=1;
}
diff --git a/FS/bin/freeside-daily b/FS/bin/freeside-daily
index 63e621b57..80b8edf82 100755
--- a/FS/bin/freeside-daily
+++ b/FS/bin/freeside-daily
@@ -10,8 +10,8 @@ use FS::Conf;
use FS::cust_main;
&untaint_argv; #what it sounds like (eww)
-use vars qw($opt_d $opt_v $opt_p);
-getopts("p:d:v");
+use vars qw($opt_d $opt_v $opt_p $opt_s);
+getopts("p:d:vs");
my $user = shift or die &usage;
adminsuidsetup $user;
@@ -42,7 +42,8 @@ foreach $cust_main ( @cust_main ) {
if $error;
}
- my $error = $cust_main->bill( 'time' => $time );
+ my $error = $cust_main->bill( 'time' => $time,
+ 'resetup' => $opt_s, );
warn "Error billing, custnum ". $cust_main->custnum. ": $error" if $error;
$cust_main->apply_payments;
@@ -98,7 +99,7 @@ freeside-daily - Run daily billing and invoice collection events.
=head1 SYNOPSIS
- freeside-daily [ -d 'date' ] [ -p 'payby' ] [ -v ] user [ custnum custnum ... ]
+ freeside-daily [ -d 'date' ] [ -p 'payby' ] [ -s ] [ -v ] user [ custnum custnum ... ]
=head1 DESCRIPTION
@@ -115,6 +116,8 @@ the bill and collect methods of a cust_main object. See L<FS::cust_main>.
-p: Only process customers with the specified payby (I<CARD>, I<DCRD>, I<CHEK>, I<DCHK>, I<BILL>, I<COMP>, I<LECB>)
+ -s: re-charge setup fees
+
-v: enable debugging
user: From the mapsecrets file - see config.html from the base documentation