diff options
author | jeff <jeff> | 2008-05-31 14:49:03 +0000 |
---|---|---|
committer | jeff <jeff> | 2008-05-31 14:49:03 +0000 |
commit | fe16cec1c82f4e1f1c2586c8259cd607fcb14d79 (patch) | |
tree | e75f9253e3957656ab18fd942af4a7e8b22ec831 | |
parent | 0a676589161fc7e6e44ed3cb70c475ab5bcbfdb8 (diff) |
invoice cosmetic improvements
-rw-r--r-- | FS/FS/cust_bill.pm | 93 | ||||
-rw-r--r-- | conf/invoice_html | 20 | ||||
-rw-r--r-- | conf/invoice_latex | 23 |
3 files changed, 120 insertions, 16 deletions
diff --git a/FS/FS/cust_bill.pm b/FS/FS/cust_bill.pm index b96b09710..0906c5dfe 100644 --- a/FS/FS/cust_bill.pm +++ b/FS/FS/cust_bill.pm @@ -1951,6 +1951,14 @@ sub print_generic { sprintf('%.2f', $pr_total), }; + my $taxtotal = 0; + my $tax_section = { 'description' => 'Taxes, Surcharges, and Fees', + 'subtotal' => $taxtotal }; # adjusted below + + my $adjusttotal = 0; + my $adjust_section = { 'description' => 'Credits, Payments, and Adjustments', + 'subtotal' => 0 }; # adjusted below + my $multisection = $conf->exists('invoice_sections', $cust_main->agentnum); if ( $multisection ) { push @sections, $self->_items_sections; @@ -2048,16 +2056,28 @@ sub print_generic { } if ( $multisection && !$conf->exists('disable_previous_balance') ) { - unshift @sections, $previous_section; + unshift @sections, $previous_section if $pr_total; } - my $taxtotal = 0; foreach my $tax ( $self->_items_tax ) { my $total = {}; $total->{'total_item'} = &$escape_function($tax->{'description'}); $taxtotal += $tax->{'amount'}; $total->{'total_amount'} = $other_money_char. $tax->{'amount'}; - push @total_items, $total; + if ( $multisection ) { + my $money = $old_latex ? '' : $money_char; + push @detail_items, { + ext_description => [], + ref => '', + quantity => '', + description => &$escape_function($tax->{'description'}), + amount => $money. $tax->{'amount'}, + product_code => '', + section => $tax_section, + }; + }else{ + push @total_items, $total; + } push @buf,[ $total->{'total_item'}, $money_char. sprintf("%10.2f", $total->{'total_amount'}), ]; @@ -2066,14 +2086,19 @@ sub print_generic { if ( $taxtotal ) { my $total = {}; + $total->{'total_item'} = 'Sub-total'; + $total->{'total_amount'} = + $other_money_char. sprintf('%.2f', $self->charged - $taxtotal ); + if ( $multisection ) { - $total->{'total_item'} = 'New charges sub-total'; + $tax_section->{'subtotal'} = $other_money_char. + sprintf('%.2f', $taxtotal); + $tax_section->{'pretotal'} = 'New charges sub-total '. + $total->{'total_amount'}; + push @sections, $tax_section if $taxtotal; }else{ - $total->{'total_item'} = 'Sub-total'; + unshift @total_items, $total; } - $total->{'total_amount'} = - $other_money_char. sprintf('%.2f', $self->charged - $taxtotal ); - unshift @total_items, $total; } push @buf,['','-----------']; @@ -2097,7 +2122,12 @@ sub print_generic { ) ) ); - push @total_items, $total; + if ( $multisection ) { + $adjust_section->{'pretotal'} = 'New charges total '. + $total->{'total_amount'}; + }else{ + push @total_items, $total; + } push @buf,['','-----------']; push @buf,['Total Charges', $money_char. @@ -2120,7 +2150,21 @@ sub print_generic { $total->{'total_item'} = &$escape_function($credit->{'description'}); #$credittotal $total->{'total_amount'} = '-'. $other_money_char. $credit->{'amount'}; - push @total_items, $total; + $adjusttotal += $credit->{'amount'}; + if ( $multisection ) { + my $money = $old_latex ? '' : $money_char; + push @detail_items, { + ext_description => [], + ref => '', + quantity => '', + description => &$escape_function($credit->{'description'}), + amount => $money. $credit->{'amount'}, + product_code => '', + section => $adjust_section, + }; + }else{ + push @total_items, $total; + } } # credits (again) @@ -2143,12 +2187,32 @@ sub print_generic { $total->{'total_item'} = &$escape_function($payment->{'description'}); #$paymenttotal $total->{'total_amount'} = '-'. $other_money_char. $payment->{'amount'}; - push @total_items, $total; + $adjusttotal += $payment->{'amount'}; + if ( $multisection ) { + my $money = $old_latex ? '' : $money_char; + push @detail_items, { + ext_description => [], + ref => '', + quantity => '', + description => &$escape_function($payment->{'description'}), + amount => $money. $payment->{'amount'}, + product_code => '', + section => $adjust_section, + }; + }else{ + push @total_items, $total; + } push @buf, [ $payment->{'description'}, $money_char. sprintf("%10.2f", $payment->{'amount'}), ]; } + if ( $multisection ) { + $adjust_section->{'subtotal'} = $other_money_char. + sprintf('%.2f', $adjusttotal); + push @sections, $adjust_section; + } + { my $total; $total->{'total_item'} = &$embolden_function($self->balance_due_msg); @@ -2156,7 +2220,12 @@ sub print_generic { &$embolden_function( $other_money_char. sprintf('%.2f', $self->owed + $pr_total ) ); - push @total_items, $total; + if ( $multisection ) { + $adjust_section->{'posttotal'} = $total->{'total_item'}. ' '. + $total->{'total_amount'}; + }else{ + push @total_items, $total; + } push @buf,['','-----------']; push @buf,[$self->balance_due_msg, $money_char. sprintf("%10.2f", $balance_due ) ]; diff --git a/conf/invoice_html b/conf/invoice_html index 14b25c671..ae6910dba 100644 --- a/conf/invoice_html +++ b/conf/invoice_html @@ -70,6 +70,16 @@ <%= foreach my $section ( @sections ) { + if ($section->{'pretotal'}) { + $OUT .= + '<table width="100%"><tr><td>'. + '<p align="right"><b><font size="+1">'. + uc(substr($section->{'pretotal'},0,1)). + '</font><font size="+0">'. uc(substr($section->{'pretotal'},1)). + '</font></b>'. + '<p>'. + '</td></tr></table>'; + } $OUT .= '<table><tr><td>'; if ($section->{'description'}) { $OUT .= @@ -132,6 +142,16 @@ '</tr>' ; } + + if ($section->{'posttotal'}) { + $OUT .= '<tr><td align="right" colspan=3>'; + $OUT .= + '<p><font size="+1">'. $section->{'posttotal'}. + '</font>'. + '<p>'; + $OUT .= '</td></tr>'; + } + } my $style = 'border-top: 3px solid #000000;'; diff --git a/conf/invoice_latex b/conf/invoice_latex index ece0897da..aadd326c5 100644 --- a/conf/invoice_latex +++ b/conf/invoice_latex @@ -19,7 +19,7 @@ \documentclass[letterpaper]{article}
-\usepackage{fancyhdr,lastpage,ifthen,longtable,afterpage}
+\usepackage{fancyhdr,lastpage,ifthen,longtable,afterpage,caption}
\usepackage{graphicx} % required for logo graphic
\addtolength{\voffset}{-0.0cm} % top margin to top of header
@@ -35,6 +35,8 @@ \setlength{\oddsidemargin}{-0.9cm} % odd page left margin
\setlength{\evensidemargin}{-0.9cm} % even page left margin
+\LTchunksize=40
+
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{1pt}
@@ -188,11 +190,19 @@ Terms: [@-- $terms --@]\\ \end{minipage}}
\vspace{1.5cm}
%
+\section*{}
[@--
foreach my $section ( @sections ) {
- $OUT .= '\section*{\textsc{';
- $OUT .= ($section->{'description'}) ? $section->{'description'} : 'Charges';
- $OUT .= '}}\begin{longtable}{cllllllr}';
+ if ($section->{'pretotal'}) {
+ $OUT .= '\begin{flushright}';
+ $OUT .= '\large\textsc{'. $section->{'pretotal'}. '}\\\\';
+ $OUT .= '\\end{flushright}';
+ }
+ $OUT .= '\captionsetup{singlelinecheck=false,justification=raggedright,font={Large,sc,bf}}';
+ $OUT .= '\begin{longtable}{cllllllr}';
+ $OUT .= '\caption*{ ';
+ $OUT .= ($section->{'description'}) ? $section->{'description'}: 'Charges';
+ $OUT .= '}\\\\';
$OUT .= '\hline';
$OUT .= '\rule{0pt}{2.5ex}';
$OUT .= '\makebox[1.4cm]{\textbf{Ref}} & ';
@@ -256,6 +266,11 @@ Terms: [@-- $terms --@]\\ $OUT .= '\end{longtable}';
+ if ($section->{'posttotal'}) {
+ $OUT .= '\begin{flushright}';
+ $OUT .= '\normalfont\large\bfseries\textsc{'. $section->{'posttotal'}. '}\\\\';
+ $OUT .= '\\end{flushright}';
+ }
}
--@]
|