RT# 37817 - added a declaration to cust bill event actions that send out invoices
[freeside.git] / FS / FS / part_event / Action / cust_bill_print.pm
index ea6e0aa..4c1311f 100644 (file)
@@ -5,6 +5,9 @@ use base qw( FS::part_event::Action );
 
 sub description { 'Send invoice (print only)'; }
 
+## declaring that this action will send out an invoice
+sub will_send_invoice { 1; }
+
 sub eventtable_hashref {
   { 'cust_bill' => 1 };
 }
@@ -14,19 +17,32 @@ sub option_fields {
     'modenum' => {  label => 'Invoice mode',
                     type  => 'select-invoice_mode',
                  },
+    'skip_nopost' => { label => 'Skip customers without postal billing enabled',
+                       type  => 'checkbox',
+                       value => 'Y',
+                     },
   );
 }
 
 sub default_weight { 51; }
 
 sub do_action {
-  my( $self, $cust_bill ) = @_;
+  my( $self, $cust_bill, $cust_event ) = @_;
 
   #my $cust_main = $self->cust_main($cust_bill);
   my $cust_main = $cust_bill->cust_main;
 
   $cust_bill->set('mode' => $self->option('modenum'));
-  $cust_bill->print;
+  if ( $self->option('skip_nopost')
+      && ! grep { $_ eq 'POST' } $cust_main->invoicing_list
+     ) {
+    # then skip customers
+    $cust_event->set('no_action', 'Y');
+    return "customer doesn't receive postal invoices"; # as statustext
+
+  } else {
+    $cust_bill->print;
+  }
 }
 
 1;