also supress sending invoices w/selfservice-hide_invoices-taxclass, RT#15327
authorivan <ivan>
Tue, 29 Nov 2011 01:23:16 +0000 (01:23 +0000)
committerivan <ivan>
Tue, 29 Nov 2011 01:23:16 +0000 (01:23 +0000)
FS/FS/ClientAPI/MyAccount.pm
FS/FS/Conf.pm
FS/FS/cust_bill.pm

index 71e47b5..2530725 100644 (file)
@@ -1248,16 +1248,7 @@ sub list_invoices {
 
   my @legacy_cust_bill = $cust_main->legacy_cust_bill;
 
-  my @cust_bill = $cust_main->cust_bill;
-
-  my $hide_taxclass = $conf->config('selfservice-hide_invoices-taxclass');
-  if ( $hide_taxclass ) {
-    @cust_bill = grep { my @cust_bill_pkg = $_->cust_bill_pkg;
-                        my @part_pkg= grep $_, map $_->part_pkg, @cust_bill_pkg;
-                        grep { $_->taxclass ne $hide_taxclass } @part_pkg;
-                      }
-                   @cust_bill;
-  }
+  my @cust_bill = grep ! $_->hide, $cust_main->cust_bill;
 
   my $balance = 0;
 
index d4983ae..a3fabc7 100644 (file)
@@ -2494,7 +2494,7 @@ and customer address. Include units.',
   {
     'key'         => 'selfservice-hide_invoices-taxclass',
     'section'     => 'self-service',
-    'description' => 'Hide invoices with only this package tax class from self-service.  Typically set to something like "Previous balance" and used when importing legacy invoices into legacy_cust_bill.',
+    'description' => 'Hide invoices with only this package tax class from self-service and supress sending (emailing, printing, faxing) them.  Typically set to something like "Previous balance" and used when importing legacy invoices into legacy_cust_bill.',
     'type'        => 'text',
   },
 
index d9a5e42..79c78d8 100644 (file)
@@ -796,6 +796,23 @@ sub owed_pkgnum {
   $balance;
 }
 
+=item hide
+
+Returns true if this invoice should be hidden.  See the
+selfservice-hide_invoices-taxclass configuraiton setting.
+
+=cut
+
+sub hide {
+  my $self = shift;
+  my $conf = $self->conf;
+  my $hide_taxclass = $conf->config('selfservice-hide_invoices-taxclass')
+    or return '';
+  my @cust_bill_pkg = $self->cust_bill_pkg;
+  my @part_pkg = grep $_, map $_->part_pkg, @cust_bill_pkg;
+  ! grep { $_->taxclass ne $hide_taxclass } @part_pkg;
+}
+
 =item apply_payments_and_credits [ OPTION => VALUE ... ]
 
 Applies unapplied payments and credits to this invoice.
@@ -1335,6 +1352,7 @@ sub queueable_email {
 #sub email_invoice {
 sub email {
   my $self = shift;
+  return if $self->hide;
   my $conf = $self->conf;
 
   my( $template, $invoice_from, $notice_name, $no_coupon );
@@ -1453,7 +1471,9 @@ I<notice_name>, if specified, overrides "Invoice" as the name of the sent docume
 #sub print_invoice {
 sub print {
   my $self = shift;
+  return if $self->hide;
   my $conf = $self->conf;
+
   my( $template, $notice_name );
   if ( ref($_[0]) ) {
     my $opt = shift;
@@ -1493,7 +1513,9 @@ I<notice_name>, if specified, overrides "Invoice" as the name of the sent docume
 
 sub fax_invoice {
   my $self = shift;
+  return if $self->hide;
   my $conf = $self->conf;
+
   my( $template, $notice_name );
   if ( ref($_[0]) ) {
     my $opt = shift;