diff options
author | Jonathan Prykop <jonathan@freeside.biz> | 2015-03-06 20:08:32 -0600 |
---|---|---|
committer | Jonathan Prykop <jonathan@freeside.biz> | 2015-03-06 20:08:32 -0600 |
commit | 67b05564568d10ee3833a87f09b752d0319934ba (patch) | |
tree | 329bbedbc9dfbe70194d258b2f36983f4e39dc28 /FS/FS | |
parent | 95b6042f37f00de9dca4b5654522fc4098a82d04 (diff) |
RT#29406: Per customer option to display service address of package on invoice
Diffstat (limited to 'FS/FS')
-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 |
3 files changed, 27 insertions, 1 deletions
diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm index da128d54f..e7b3b6fc6 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 ed6c8e09a..412a5b036 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 c93a95088..427112a8e 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 |