add -o flag to freeside-daily, to only bill for one month, RT#14904
authorivan <ivan>
Mon, 26 Dec 2011 21:18:25 +0000 (21:18 +0000)
committerivan <ivan>
Mon, 26 Dec 2011 21:18:25 +0000 (21:18 +0000)
FS/FS/Cron/bill.pm
FS/FS/cust_main/Billing.pm
FS/bin/freeside-daily

index 88fe69b..1569ef6 100644 (file)
@@ -93,6 +93,7 @@ sub bill {
           'check_freq'   => $check_freq,
           'resetup'      => ( $opt{'s'} ? $opt{'s'} : 0 ),
           'not_pkgpart'  => $opt{'g'}, #$not_pkgpart,
+          'one_recur'    => $opt{'o'},
       );
 
       if ( $opt{'m'} ) {
index 464ee8a..2051804 100644 (file)
@@ -420,11 +420,17 @@ sub bill {
                               'real_pkgpart'        => $real_pkgpart,
                               'options'             => \%options,
                             );
-        # Stop if anything goes wrong, or if we're not incrementing 
-        # the bill date.
+
+        # Stop if anything goes wrong
         last if $error;
+
+        # or if we're not incrementing the bill date.
         last if ($cust_pkg->getfield('bill') || 0) == $next_bill;
+
         $next_bill = $cust_pkg->getfield('bill') || 0;
+
+        #stop if -o was passed to freeside-daily
+        last if $options{'one_recur'};
       }
       if ($error) {
         $dbh->rollback if $oldAutoCommit && !$options{no_commit};
index 2beb096..ee63b9a 100755 (executable)
@@ -97,7 +97,7 @@ freeside-daily - Run daily billing and invoice collection events.
 
 =head1 SYNOPSIS
 
-  freeside-daily [ -d 'date' ] [ -y days ] [ -p 'payby' ] [ -a agentnum,agentnum,... ] [ -s ] [ -v ] [ -l level ] [ -m ] [ -r ] [ -k ] user [ custnum custnum ... ]
+  freeside-daily [ -d 'date' ] [ -y days ] [ -p 'payby' ] [ -a agentnum,agentnum,... ] [ -s ] [ -o ] [ -v ] [ -l level ] [ -m ] [ -r ] [ -k ] user [ custnum custnum ... ]
 
 =head1 DESCRIPTION
 
@@ -128,6 +128,8 @@ the bill and collect methods of a cust_main object.  See L<FS::cust_main>.
 
   -s: re-charge setup fees
 
+  -o: For packages which are more than one billing period behind, only charge for one billing period rather than catching up.
+
   -v: enable debugging
 
   -l: debugging level