From f39624dd22a91495798f253aa5f122e05a77bc41 Mon Sep 17 00:00:00 2001 From: Mark Wells Date: Wed, 29 Apr 2015 17:59:42 -0700 Subject: [PATCH] customize "previous balance" subtotal line, #34736 --- FS/FS/Conf.pm | 18 ++++++++++++++++-- FS/FS/Upgrade.pm | 7 +++++++ FS/FS/cust_bill.pm | 14 ++++++++++---- 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm index c5c03ff08..f9aa0e66f 100644 --- a/FS/FS/Conf.pm +++ b/FS/FS/Conf.pm @@ -4410,8 +4410,22 @@ and customer address. Include units.', { 'key' => 'previous_balance-exclude_from_total', 'section' => 'invoicing', - 'description' => 'Do not include previous balance in the \'Total\' line. Only meaningful when invoice_sections is false. Optionally provide text to override the Total New Charges description', - 'type' => [ qw(checkbox text) ], + 'description' => 'Show separate totals for previous invoice balance and new charges. Only meaningful when invoice_sections is false.', + 'type' => 'checkbox', + }, + + { + 'key' => 'previous_balance-text', + 'section' => 'invoicing', + 'description' => 'Text for the label of the total previous balance, when it is shown separately. Defaults to "Previous Balance".', + 'type' => 'text', + }, + + { + 'key' => 'previous_balance-text-total_new_charges', + 'section' => 'invoicing', + 'description' => 'Text for the label of the total of new charges, when it is shown separately. If invoice_show_prior_due_date is enabled, the due date of current charges will be appended. Defaults to "Total New Charges".', + 'type' => 'text', }, { diff --git a/FS/FS/Upgrade.pm b/FS/FS/Upgrade.pm index d4ba7b828..b4340d075 100644 --- a/FS/FS/Upgrade.pm +++ b/FS/FS/Upgrade.pm @@ -147,6 +147,13 @@ If you need to continue using the old Form 477 report, turn on the $conf->delete('tax-cust_exempt-groups-require_individual_nums'); } + # boolean+text previous_balance-exclude_from_total is now two separate options + my $total_new_charges = $conf->config('previous_balance-exclude_from_total'); + if (length($total_new_charges) > 0) { + $conf->set('previous_balance-text-total_new_charges', $total_new_charges); + $conf->set('previous_balance-exclude_from_total', ''); + } + enable_banned_pay_pad() unless length($conf->config('banned_pay-pad')); } diff --git a/FS/FS/cust_bill.pm b/FS/FS/cust_bill.pm index 95e705802..db909309f 100644 --- a/FS/FS/cust_bill.pm +++ b/FS/FS/cust_bill.pm @@ -2822,20 +2822,26 @@ sub _items_total { my @items; my ($pr_total) = $self->previous; - my ($new_charges_desc, $new_charges_amount); + my ($previous_charges_desc, $new_charges_desc, $new_charges_amount); if ( $conf->exists('previous_balance-exclude_from_total') ) { + # can we do some caching on this stuff? it's going to change infrequently + # in production + $previous_charges_desc = $self->mt( + $conf->config('previous_balance-text') || 'Previous Balance' + ); + # then return separate lines for previous balance and total new charges if ( $pr_total ) { push @items, - { total_item => $self->mt('Previous Balance'), + { total_item => $previous_charges_desc, total_amount => sprintf('%.2f',$pr_total) }; } $new_charges_desc = $self->mt( - $conf->config('previous_balance-exclude_from_total') + $conf->config('previous_balance-text-total_new_charges') || 'Total New Charges' - ); # localize 'Total New Charges' or whatever's in the config + ); $new_charges_amount = $self->charged; -- 2.11.0