From 4125a128eaa40c751c89a69c2f9888463a78c6f3 Mon Sep 17 00:00:00 2001 From: jeff Date: Fri, 9 Apr 2010 08:09:48 +0000 Subject: [PATCH] modify total items for balance below line and current charges above line with configurable description. also bug fixes that might close 7896 --- FS/FS/Conf.pm | 16 +++++++++++++++- FS/FS/cust_bill.pm | 33 ++++++++++++++++----------------- conf/invoice_html | 13 +++++++++---- 3 files changed, 40 insertions(+), 22 deletions(-) diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm index 53c2d1387..3adf455b2 100644 --- a/FS/FS/Conf.pm +++ b/FS/FS/Conf.pm @@ -2911,11 +2911,18 @@ worry that config_items is freeside-specific and icky. { 'key' => 'disable_previous_balance', 'section' => 'invoicing', - 'description' => 'Disable inclusion of previous balancem payment, and credit lines on invoices', + 'description' => 'Disable inclusion of previous balance, payment, and credit lines on invoices', 'type' => 'checkbox', }, { + '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) ], + }, + + { 'key' => 'previous_balance-summary_only', 'section' => 'invoicing', 'description' => 'Only show a single line summarizing the total previous balance rather than one line per invoice.', @@ -2923,6 +2930,13 @@ worry that config_items is freeside-specific and icky. }, { + 'key' => 'balance_due_below_line', + 'section' => 'invoicing', + 'description' => 'Place the balance due message below a line. Only meaningful when when invoice_sections is false.', + 'type' => 'checkbox', + }, + + { 'key' => 'usps_webtools-userid', 'section' => 'UI', 'description' => 'Production UserID for USPS web tools. Enables USPS address standardization. See the USPS website, register and agree not to use the tools for batch purposes.', diff --git a/FS/FS/cust_bill.pm b/FS/FS/cust_bill.pm index b2cad50ad..8cc84e5f0 100644 --- a/FS/FS/cust_bill.pm +++ b/FS/FS/cust_bill.pm @@ -2329,6 +2329,7 @@ sub print_generic { 'unitprices' => $conf->exists('invoice-unitprice'), 'smallernotes' => $conf->exists('invoice-smallernotes'), 'smallerfooter' => $conf->exists('invoice-smallerfooter'), + 'balance_due_below_line' => $conf->exists('balance_due_below_line'), # better hang on to conf_dir for a while (for old templates) 'conf_dir' => "$FS::UID::conf_dir/conf.$FS::UID::datasrc", @@ -2513,6 +2514,7 @@ sub print_generic { my $unsquelched = $params{unsquelch_cdr} || $cust_main->squelch_cdr ne 'Y'; my $multisection = $conf->exists('invoice_sections', $cust_main->agentnum); + $invoice_data{'multisection'} = $multisection; my $late_sections = []; my $extra_sections = []; my $extra_lines = (); @@ -2721,17 +2723,19 @@ sub print_generic { { my $total = {}; - $total->{'total_item'} = &$embolden_function('Total'); + my $item = 'Total'; + $item = $conf->config('previous_balance-exclude_from_total') + || 'Total New Charges' + if $conf->exists('previous_balance-exclude_from_total'); + my $amount = $self->charged + + ( $conf->exists('disable_previous_balance') || + $conf->exists('previous_balance-exclude_from_total') + ? 0 + : $pr_total + ); + $total->{'total_item'} = &$embolden_function($item); $total->{'total_amount'} = - &$embolden_function( - $other_money_char. - sprintf( '%.2f', - $self->charged + ( $conf->exists('disable_previous_balance') - ? 0 - : $pr_total - ) - ) - ); + &$embolden_function( $other_money_char. sprintf( '%.2f', $amount ) ); if ( $multisection ) { if ( $adjust_section->{'sort_weight'} ) { $adjust_section->{'posttotal'} = 'Balance Forward '. $other_money_char. @@ -2744,14 +2748,9 @@ sub print_generic { push @total_items, $total; } push @buf,['','-----------']; - push @buf,['Total Charges', + push @buf,[$item, $money_char. - sprintf( '%10.2f', $self->charged + - ( $conf->exists('disable_previous_balance') - ? 0 - : $pr_total - ) - ) + sprintf( '%10.2f', $amount ) ]; push @buf,['','']; } diff --git a/conf/invoice_html b/conf/invoice_html index df4674b6a..fe2a9a976 100644 --- a/conf/invoice_html +++ b/conf/invoice_html @@ -86,8 +86,10 @@ <%= $summary %> <%= + my $notfirst = 0; foreach my $section ( grep { !$summary || $_->{description} ne $finance_section } @sections ) { if ($section->{'pretotal'} && !$summary) { + $OUT .= '' if $notfirst; $OUT .= '
'. '

'. @@ -95,9 +97,10 @@ ''. uc(substr($section->{'pretotal'},1)). ''. '

'. - '

'; + ''; } unless ($section->{'summarized'}) { + $OUT .= '' if ( $notfirst || $section->{'pretotal'} && !$summary ); $OUT .= ''; } - ''; + $OUT .= ''; my $lastref = 0; foreach my $line ( @@ -176,7 +179,7 @@ } - if (scalar(@sections) > 1) { + if ($section->{'description'} || $multisection) { my $style = 'border-top: 3px solid #000000;'. 'border-bottom: 3px solid #000000;'; $OUT .= @@ -203,6 +206,8 @@ $OUT .= ''; } + $notfirst++; + } my $style = 'border-top: 3px solid #000000;'; @@ -211,7 +216,7 @@ foreach my $line ( @total_items ) { $style .= 'border-bottom: 3px solid #000000;' - if ++$linenum == scalar(@total_items); + if ++$linenum == scalar(@total_items) - ( $balance_due_below_line ? 1 : 0 ); $OUT .= ''; -- 2.11.0
'; if ($section->{'description'}) { $OUT .= @@ -128,7 +131,7 @@ ). 'Amount