re-setup option to re-charge setup fee
authorivan <ivan>
Fri, 26 Sep 2003 13:04:26 +0000 (13:04 +0000)
committerivan <ivan>
Fri, 26 Sep 2003 13:04:26 +0000 (13:04 +0000)
FS/FS/cust_main.pm
FS/bin/freeside-daily

index 90cf18e..de22ab5 100644 (file)
@@ -993,15 +993,19 @@ conjunction with the collect method.
 
 Options are passed as name-value pairs.
 
 
 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') );
 
 
  use Date::Parse;
  ...
  $cust_main->bill( 'time' => str2time('April 20th, 2001') );
 
+
 If there is an error, returns the error, otherwise returns false.
 
 =cut
 If there is an error, returns the error, otherwise returns false.
 
 =cut
@@ -1058,7 +1062,7 @@ sub bill {
 
     # bill setup
     my $setup = 0;
 
     # 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;
       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): $@";
       }
         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; 
     }
 
       $cust_pkg_mod_flag=1; 
     }
 
index 63e621b..80b8edf 100755 (executable)
@@ -10,8 +10,8 @@ use FS::Conf;
 use FS::cust_main;
 
 &untaint_argv; #what it sounds like  (eww)
 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;
 my $user = shift or die &usage;
 
 adminsuidsetup $user;
@@ -42,7 +42,8 @@ foreach $cust_main ( @cust_main ) {
       if $error;
   }
 
       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;
   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
 
 
 =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
 
 
 =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>)
 
 
   -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
   -v: enable debugging
 
 user: From the mapsecrets file - see config.html from the base documentation