[freeside-commits] branch master updated. 67b05564568d10ee3833a87f09b752d0319934ba

Jonathan Prykop jonathan at 420.am
Fri Mar 6 18:09:20 PST 2015


The branch, master has been updated
       via  67b05564568d10ee3833a87f09b752d0319934ba (commit)
      from  95b6042f37f00de9dca4b5654522fc4098a82d04 (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 67b05564568d10ee3833a87f09b752d0319934ba
Author: Jonathan Prykop <jonathan at freeside.biz>
Date:   Fri Mar 6 20:08:32 2015 -0600

    RT#29406: Per customer option to display service address of package on invoice

diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm
index da128d5..e7b3b6f 100644
--- a/FS/FS/Schema.pm
+++ b/FS/FS/Schema.pm
@@ -1633,6 +1633,7 @@ sub tables_hashref {
         'complimentary', 'char', 'NULL', 1, '', '',
         'po_number', 'varchar', 'NULL', $char_d, '', '',
         'invoice_attn', 'varchar', 'NULL', $char_d, '', '',
+        'invoice_ship_address', 'char', 'NULL', 1, '', '',
       ],
       'primary_key'  => 'custnum',
       'unique'       => [ [ 'agentnum', 'agent_custid' ] ],
diff --git a/FS/FS/Template_Mixin.pm b/FS/FS/Template_Mixin.pm
index ed6c8e0..412a5b0 100644
--- a/FS/FS/Template_Mixin.pm
+++ b/FS/FS/Template_Mixin.pm
@@ -569,7 +569,7 @@ sub print_generic {
                                              || $cust_main->contact_firstlast ),
 
     #global config
-    'ship_enable'     => $conf->exists('invoice-ship_address'),
+    'ship_enable'     => $cust_main->invoice_ship_address || $conf->exists('invoice-ship_address'),
     'unitprices'      => $conf->exists('invoice-unitprice'),
     'smallernotes'    => $conf->exists('invoice-smallernotes'),
     'smallerfooter'   => $conf->exists('invoice-smallerfooter'),
diff --git a/FS/FS/cust_main.pm b/FS/FS/cust_main.pm
index c93a950..427112a 100644
--- a/FS/FS/cust_main.pm
+++ b/FS/FS/cust_main.pm
@@ -279,6 +279,10 @@ Allow self-service editing of ticket subjects, empty or 'Y'
 
 Do not call, empty or 'Y'
 
+=item invoice_ship_address
+
+Display ship_address ("Service address") on invoices for this customer, empty or 'Y'
+
 =back
 
 =head1 METHODS
@@ -460,6 +464,8 @@ sub insert {
     }
   }
 
+  $self->_loc_change();
+
   warn "  inserting $self\n"
     if $DEBUG > 1;
 
@@ -1332,6 +1338,8 @@ sub replace {
     $self->set($l.'num', $new_loc->locationnum);
   } #for $l
 
+  $self->_loc_change($old);
+
   # replace the customer record
   my $error = $self->SUPER::replace($old);
 
@@ -1589,6 +1597,7 @@ sub check {
     || $self->ut_currencyn('currency')
     || $self->ut_alphan('po_number')
     || $self->ut_enum('complimentary', [ '', 'Y' ])
+    || $self->ut_flag('invoice_ship_address')
   ;
 
   foreach (qw(company ship_company)) {
@@ -4773,6 +4782,22 @@ sub process_bill_and_collect {
   $cust_main->bill_and_collect( %$param );
 }
 
+#hook for insert/replace
+#runs after locations have been set
+#but before custnum has been set (for insert)
+sub _loc_change {
+  my $self = shift;
+  my $old = shift;
+  #turn off invoice_ship_address if ship & bill are the same
+  if ($self->bill_locationnum eq $self->ship_locationnum) {
+    $self->invoice_ship_address('');
+  }
+  #preserve old value if global config is set (replace only)
+  elsif ($old && $conf->exists('invoice-ship_address')) {
+    $self->invoice_ship_address($old->invoice_ship_address);
+  }
+}
+
 #starting to take quite a while for big dbs
 #   (JRNL: journaled so it only happens once per database)
 # - seq scan of h_cust_main (yuck), but not going to index paycvv, so
diff --git a/httemplate/docs/schema.html b/httemplate/docs/schema.html
index cd4914a..bb18612 100644
--- a/httemplate/docs/schema.html
+++ b/httemplate/docs/schema.html
@@ -137,6 +137,7 @@
         <li>otaker - order taker
         <li>referral_custnum
         <li>comments
+        <li>invoice_ship_address - Y or null, does ship address appear on invoice
       </ul>
       (columns in <i>italics</i> are optional)
     <li><a name="cust_main_invoice" href="man/FS/cust_main_invoice.html">cust_main_invoice</a> - Invoice destinations for email invoices.  Note that a customer can have many email destinations for their invoice (either literal or via svcnum), but only one postal destination.
diff --git a/httemplate/edit/cust_main.cgi b/httemplate/edit/cust_main.cgi
index f99cce2..b6f6b0d 100755
--- a/httemplate/edit/cust_main.cgi
+++ b/httemplate/edit/cust_main.cgi
@@ -78,6 +78,19 @@
           enable_district => 1,
           enable_coords => 1,
       &>
+% unless ($conf->exists('invoice-ship_address')) { #it's always on, so hide per-cust config
+        <TR>
+          <TD> </TD>
+          <TD COLSPAN="7">
+            <% include('/elements/checkbox.html',
+                 'field'      => 'invoice_ship_address',
+                 'value'      => 'Y',
+                 'curr_value' => $cust_main->invoice_ship_address,
+                 'postfix'    => emt('included on invoices'),
+            ) %>
+          </TD>
+        </TR>
+% }
       </TABLE>
     </DIV>
   </TD>
diff --git a/httemplate/view/cust_main/contacts.html b/httemplate/view/cust_main/contacts.html
index c9f8005..a5bafea 100644
--- a/httemplate/view/cust_main/contacts.html
+++ b/httemplate/view/cust_main/contacts.html
@@ -13,6 +13,13 @@
  (<% mt('same as billing') %>)
 %   }
 </FONT>
+%   if (
+%     ($this eq 'ship')
+%     && $cust_main->invoice_ship_address 
+%     && !$conf->exists('invoice-ship_address') #it's always on, so hide per-cust config
+%    ) {
+<SPAN STYLE="padding-left: .25em;">(<% emt('included on invoices') %>)</SPAN>
+%   }
 <TABLE CLASS="fsinnerbox">
 
 % if ( $this eq 'bill' ) {

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

Summary of changes:
 FS/FS/Schema.pm                         |    1 +
 FS/FS/Template_Mixin.pm                 |    2 +-
 FS/FS/cust_main.pm                      |   25 +++++++++++++++++++++++++
 httemplate/docs/schema.html             |    1 +
 httemplate/edit/cust_main.cgi           |   13 +++++++++++++
 httemplate/view/cust_main/contacts.html |    7 +++++++
 6 files changed, 48 insertions(+), 1 deletion(-)




More information about the freeside-commits mailing list