freeside-daily -g and -m cooperation (and no HASH() queue noise with -m)
[freeside.git] / FS / FS / Cron / bill.pm
index 61b4735..dbb6c66 100644 (file)
@@ -21,6 +21,7 @@ use FS::part_event_condition;
 #  -l: debugging level
 #  -m: Experimental multi-process mode uses the job queue for multi-process and/or multi-machine billing.
 #  -r: Multi-process mode dry run option
+#  -g: Don't bill these pkgparts
 
 sub bill {
   my %opt = @_;
@@ -39,6 +40,10 @@ sub bill {
 
   $opt{'invoice_time'} = $opt{'n'} ? $^T : $opt{'time'};
 
+  #hashref here doesn't work with -m
+  #my $not_pkgpart = $opt{g} ? { map { $_=>1 } split(/,\s*/, $opt{g}) }
+  #                          : {};
+
   ###
   # get a list of custnums
   ###
@@ -74,6 +79,7 @@ sub bill {
                                  #(not, when using -m, freeside-queued)
           'check_freq'   => $check_freq,
           'resetup'      => ( $opt{'s'} ? $opt{'s'} : 0 ),
+          'not_pkgpart'  => $opt{'g'}, #$not_pkgpart,
       );
 
       if ( $opt{'m'} ) {
@@ -152,6 +158,8 @@ sub bill_where {
   push @search, "cust_main.agentnum =  ". $opt{'a'}
     if $opt{'a'};
 
+  #it would be useful if i recognized $opt{g} / $not_pkgpart...
+
   if ( @ARGV ) {
     push @search, "( ".
       join(' OR ', map "cust_main.custnum = $_", @ARGV ).
@@ -187,13 +195,14 @@ END
     my $where = FS::part_event_condition->where_conditions_sql( $eventtable,
                                                                 'time'=>$time,
                                                               );
+    $where = $where ? "AND $where" : '';
 
     my $are_part_event = 
       "EXISTS ( SELECT 1 FROM part_event $join
                   WHERE check_freq = '$check_freq'
                     AND eventtable = '$eventtable'
                     AND ( disabled = '' OR disabled IS NULL )
-                    AND $where
+                    $where
               )
       ";