summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjeff <jeff>2008-05-31 14:49:03 +0000
committerjeff <jeff>2008-05-31 14:49:03 +0000
commitfe16cec1c82f4e1f1c2586c8259cd607fcb14d79 (patch)
treee75f9253e3957656ab18fd942af4a7e8b22ec831
parent0a676589161fc7e6e44ed3cb70c475ab5bcbfdb8 (diff)
invoice cosmetic improvements
-rw-r--r--FS/FS/cust_bill.pm93
-rw-r--r--conf/invoice_html20
-rw-r--r--conf/invoice_latex23
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}';
+ }
}
--@]