[freeside-commits] branch master updated. 2db2afe957a655c5048031c86441b900c53f4dd2

Ivan Kohler ivan at freeside.biz
Thu Nov 8 10:51:05 PST 2018


The branch, master has been updated
       via  2db2afe957a655c5048031c86441b900c53f4dd2 (commit)
      from  6755630dd7c6455050d7444fd109e83615f7de9f (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 2db2afe957a655c5048031c86441b900c53f4dd2
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Thu Nov 8 10:51:02 2018 -0800

    add option for multi-process billing to queue additional jobs for the same customer instead of skipping them, RT#81698

diff --git a/FS/FS/Cron/bill.pm b/FS/FS/Cron/bill.pm
index 30eb1ab28..68d547633 100644
--- a/FS/FS/Cron/bill.pm
+++ b/FS/FS/Cron/bill.pm
@@ -22,7 +22,8 @@ use FS::Log;
 #  -s: re-charge setup fees
 #  -v: enable debugging
 #  -l: debugging level
-#  -m: Experimental multi-process mode uses the job queue for multi-process and/or multi-machine billing.
+#  -m: Multi-process mode uses the job queue for multi-process and/or multi-machine billing.
+#  -q: Multi-process mode: queue additional job instead of skipping
 #  -r: Multi-process mode dry run option
 #  -g: Don't bill these pkgparts
 
@@ -109,12 +110,14 @@ sub bill {
           warn "DRY RUN: would add custnum $custnum for queued_bill\n";
         } else {
 
-          #avoid queuing another job if there's one still waiting to run
-          next if qsearch( 'queue', { 'job'     => 'FS::cust_main::queued_bill',
-                                      'custnum' => $custnum,
-                                      'status'  => 'new',
-                                    }
-                         );
+          my @waiting = qsearch( 'queue', {
+			           'job'     => 'FS::cust_main::queued_bill',
+                                   'custnum' => $custnum,
+                                   'status'  => 'new',
+                                 }
+			       );
+
+          next if @waiting && ! $opt{'q'};
 
           #add job to queue that calls bill_and_collect with options
           my $queue = new FS::queue {
@@ -124,6 +127,11 @@ sub bill {
           };
           my $error = $queue->insert( 'custnum'=>$custnum, %args );
           die $error if $error;
+
+          foreach $waiting_queue (@waiting) {
+            $queue->depend_insert($waiting_queue->jobnum);
+          }
+
         }
 
       } else {
diff --git a/FS/bin/freeside-daily b/FS/bin/freeside-daily
index f1b7e58ec..6d4182b79 100755
--- a/FS/bin/freeside-daily
+++ b/FS/bin/freeside-daily
@@ -8,7 +8,7 @@ use FS::Log;
 
 &untaint_argv;	#what it sounds like  (eww)
 use vars qw(%opt);
-getopts("p:a:d:vl:sy:nmrkg:ox", \%opt);
+getopts("p:a:d:vl:sy:nmqrkg:ox", \%opt);
 
 my $user = shift or die &usage;
 adminsuidsetup $user;
@@ -128,7 +128,7 @@ freeside-daily - Run daily billing and invoice collection events.
 
 =head1 SYNOPSIS
 
-  freeside-daily [ -d 'date' ] [ -y days ] [ -a agentnum,agentnum,... ] [ -s ] [ -o ] [ -v ] [ -l level ] [ -m ] [ -r ] [ -k ] user [ custnum custnum ... ]
+  freeside-daily [ -d 'date' ] [ -y days ] [ -a agentnum,agentnum,... ] [ -s ] [ -o ] [ -v ] [ -l level ] [ -m [ -q ] [ -r ] ] [ -k ] user [ custnum custnum ... ]
 
 =head1 DESCRIPTION
 
@@ -167,6 +167,8 @@ the bill and collect methods of a cust_main object.  See L<FS::cust_main>.
 
   -m: Multi-process mode uses the job queue for multi-process and/or multi-machine billing.
 
+  -q: When using multi-process mode, queue a additional billing job even if ones for the customer are already in the queue
+
   -r: Multi-process mode dry run option
 
   -k: skip notify_flat_delay

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/Cron/bill.pm    | 22 +++++++++++++++-------
 FS/bin/freeside-daily |  6 ++++--
 2 files changed, 19 insertions(+), 9 deletions(-)




More information about the freeside-commits mailing list