option to keep an email address but not email it invoices, RT#17676
authorIvan Kohler <ivan@freeside.biz>
Mon, 14 May 2012 22:13:12 +0000 (15:13 -0700)
committerIvan Kohler <ivan@freeside.biz>
Mon, 14 May 2012 22:13:12 +0000 (15:13 -0700)
FS/FS/Schema.pm
FS/FS/cust_bill.pm
FS/FS/cust_main.pm
FS/FS/part_event/Action/cust_bill_email.pm
httemplate/edit/cust_main/billing.html
httemplate/edit/process/cust_main.cgi
httemplate/view/cust_main/billing.html
httemplate/view/cust_main/contacts.html

index e3f34a4..2968903 100644 (file)
@@ -928,6 +928,7 @@ sub tables_hashref {
         'edit_subject', 'char', 'NULL', 1, '', '',
         'locale', 'varchar', 'NULL', 16, '', '', 
         'calling_list_exempt', 'char', 'NULL', 1, '', '',
+        'invoice_noemail', 'char', 'NULL', 1, '', '',
       ],
       'primary_key' => 'custnum',
       'unique' => [ [ 'agentnum', 'agent_custid' ] ],
index a76170a..1f4943a 100644 (file)
@@ -1314,14 +1314,16 @@ sub send {
     $balance_over = shift if scalar(@_) && $_[0] !~ /^\s*$/;
   }
 
+  my $cust_main = $self->cust_main;
+
   return 'N/A' unless ! $agentnums
-                   or grep { $_ == $self->cust_main->agentnum } @$agentnums;
+                   or grep { $_ == $cust_main->agentnum } @$agentnums;
 
   return ''
-    unless $self->cust_main->total_owed_date($self->_date) > $balance_over;
+    unless $cust_main->total_owed_date($self->_date) > $balance_over;
 
   $invoice_from ||= $self->_agent_invoice_from ||    #XXX should go away
-                    $conf->config('invoice_from', $self->cust_main->agentnum );
+                    $conf->config('invoice_from', $cust_main->agentnum );
 
   my %opt = (
     'template'     => $template,
@@ -1329,11 +1331,12 @@ sub send {
     'notice_name'  => ( $notice_name || 'Invoice' ),
   );
 
-  my @invoicing_list = $self->cust_main->invoicing_list;
+  my @invoicing_list = $cust_main->invoicing_list;
 
   #$self->email_invoice(\%opt)
   $self->email(\%opt)
-    if grep { $_ !~ /^(POST|FAX)$/ } @invoicing_list or !@invoicing_list;
+    if ( grep { $_ !~ /^(POST|FAX)$/ } @invoicing_list or !@invoicing_list )
+    && ! $self->invoice_noemail;
 
   #$self->print_invoice(\%opt)
   $self->print(\%opt)
index 6f4a4d7..9766579 100644 (file)
@@ -1800,6 +1800,7 @@ sub check {
     || $self->ut_numbern('billday')
     || $self->ut_enum('edit_subject', [ '', 'Y' ] )
     || $self->ut_enum('calling_list_exempt', [ '', 'Y' ] )
+    || $self->ut_enum('invoice_noemail', [ '', 'Y' ] )
     || $self->ut_enum('locale', [ '', FS::Locales->locales ])
   ;
 
index a5cd861..1a3bca4 100644 (file)
@@ -17,7 +17,7 @@ sub do_action {
   #my $cust_main = $self->cust_main($cust_bill);
   my $cust_main = $cust_bill->cust_main;
 
-  $cust_bill->email;
+  $cust_bill->email unless $cust_main->invoice_noemail;
 }
 
 1;
index 3f87317..d7082f2 100644 (file)
           ? 'CHECKED'
           : ''
 
-        %>> <% mt('Postal mail invoice') |h %> 
+        %>> <% mt('Postal mail invoices') |h %> 
 
       </TD>
     </TR>
           ? 'CHECKED'
           : ''
 
-        %>> <% mt('Fax invoice') |h %> 
+        %>> <% mt('Fax invoices') |h %> 
 
       </TD>
     </TR>
 
 % }
 
-% unless ( $conf->exists('cust-email-high-visibility')) {
     <TR>
+      <TD WIDTH="608" COLSPAN="2"><INPUT TYPE="checkbox" NAME="invoice_email" VALUE="Y" <%
+
+        ( $cust_main->invoice_noemail eq 'Y' )
+          ? ''
+          : 'CHECKED'
+
+        %>> <% mt('Email invoices') |h %> 
+
+      </TD>
+    </TR>
+
+% unless ( $conf->exists('cust-email-high-visibility')) {
+   <TR>
       <TD ALIGN="right" WIDTH="200">
         <% $conf->exists('cust_main-require_invoicing_list_email', $agentnum) 
             ? $r : '' %>Email address(es)
index 1cf7a3e..3f5e19e 100755 (executable)
@@ -66,6 +66,8 @@ my $new = new FS::cust_main ( {
   } fields('cust_main')
 } );
 
+$new->invoice_noemail( ($cgi->param('invoice_email') eq 'Y') ? '' : 'Y' );
+
 $cgi->param('duplicate_of_custnum') =~ /^(\d+)$/;
 my $duplicate_of = $1;
 if ( $duplicate_of ) {
index ba60e13..2547ec1 100644 (file)
 </TR>
 % }
 <TR>
-  <TD ALIGN="right"><% mt('Postal invoices') |h %></TD>
+  <TD ALIGN="right"><% mt('Postal mail invoices') |h %></TD>
   <TD BGCOLOR="#ffffff">
     <% ( grep { $_ eq 'POST' } @invoicing_list ) ? $yes : $no %>
   </TD>
 </TR>
 <TR>
-  <TD ALIGN="right"><% mt('FAX invoices') |h %></TD>
+  <TD ALIGN="right"><% mt('Fax invoices') |h %></TD>
   <TD BGCOLOR="#ffffff">
     <% ( grep { $_ eq 'FAX' } @invoicing_list ) ? $yes : $no %>
   </TD>
 </TR>
-% unless ( $conf->exists('cust-email-high-visibility')) {
 <TR>
   <TD ALIGN="right"><% mt('Email invoices') |h %></TD>
   <TD BGCOLOR="#ffffff">
+    <% $cust_main->invoice_noemail ? $no : $yes %>
+  </TD>
+</TR>
+% unless ( $conf->exists('cust-email-high-visibility')) {
+<TR>
+  <TD ALIGN="right"><% mt('Email address(es)') |h %></TD>
+  <TD BGCOLOR="#ffffff">
     <% join(', ', grep { $_ !~ /^(POST|FAX)$/ } @invoicing_list ) || $no %>
   </TD>
 </TR>
index b3e52b5..12b9391 100644 (file)
@@ -20,7 +20,7 @@
 
 % if ( $conf->exists('cust-email-high-visibility') && $which eq '') {
   <TR>
-    <TD ALIGN="right"><% mt('Email invoices') |h %></TD>
+    <TD ALIGN="right"><% mt('Email address(es)') |h %></TD>
     <TD BGCOLOR="#ffff00">
       <% join(', ', grep { $_ !~ /^(POST|FAX)$/ } @invoicing_list ) || $no %>
     </TD>