diff options
-rw-r--r-- | FS/FS/Schema.pm | 1 | ||||
-rw-r--r-- | FS/FS/Template_Mixin.pm | 2 | ||||
-rw-r--r-- | FS/FS/cust_main.pm | 25 | ||||
-rw-r--r-- | httemplate/docs/schema.html | 1 | ||||
-rwxr-xr-x | httemplate/edit/cust_main.cgi | 13 | ||||
-rw-r--r-- | httemplate/view/cust_main/contacts.html | 7 |
6 files changed, 48 insertions, 1 deletions
diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm index 6ed1d9716..e512d2d4e 100644 --- a/FS/FS/Schema.pm +++ b/FS/FS/Schema.pm @@ -1197,6 +1197,7 @@ sub tables_hashref { 'message_noemail', 'char', 'NULL', 1, '', '', 'bill_locationnum', 'int', 'NULL', '', '', '', 'ship_locationnum', 'int', 'NULL', '', '', '', + '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 1a577549e..ec1902a8c 100644 --- a/FS/FS/Template_Mixin.pm +++ b/FS/FS/Template_Mixin.pm @@ -570,7 +570,7 @@ sub print_generic { )), #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 7d80746ba..b87fda4d6 100644 --- a/FS/FS/cust_main.pm +++ b/FS/FS/cust_main.pm @@ -274,6 +274,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 @@ -444,6 +448,8 @@ sub insert { } } + $self->_loc_change(); + warn " inserting $self\n" if $DEBUG > 1; @@ -1530,6 +1536,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); @@ -1784,6 +1792,7 @@ sub check { || $self->ut_flag('invoice_noemail') || $self->ut_flag('message_noemail') || $self->ut_enum('locale', [ '', FS::Locales->locales ]) + || $self->ut_flag('invoice_ship_address') ; foreach (qw(company ship_company)) { @@ -5163,6 +5172,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 cd4914a6c..bb1861292 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 d7895722a..7343a9d16 100755 --- a/httemplate/edit/cust_main.cgi +++ b/httemplate/edit/cust_main.cgi @@ -82,6 +82,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 5b61e7400..e810d6f5d 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' ) { |