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;
}
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'}),
];
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,['','-----------'];
)
)
);
- 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.
$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)
$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);
&$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 ) ];
\r
\documentclass[letterpaper]{article}\r
\r
-\usepackage{fancyhdr,lastpage,ifthen,longtable,afterpage}\r
+\usepackage{fancyhdr,lastpage,ifthen,longtable,afterpage,caption}\r
\usepackage{graphicx} % required for logo graphic\r
\r
\addtolength{\voffset}{-0.0cm} % top margin to top of header\r
\setlength{\oddsidemargin}{-0.9cm} % odd page left margin\r
\setlength{\evensidemargin}{-0.9cm} % even page left margin\r
\r
+\LTchunksize=40\r
+\r
\renewcommand{\headrulewidth}{0pt}\r
\renewcommand{\footrulewidth}{1pt}\r
\r
\end{minipage}}\r
\vspace{1.5cm}\r
%\r
+\section*{}\r
[@--\r
foreach my $section ( @sections ) {\r
- $OUT .= '\section*{\textsc{';\r
- $OUT .= ($section->{'description'}) ? $section->{'description'} : 'Charges';\r
- $OUT .= '}}\begin{longtable}{cllllllr}';\r
+ if ($section->{'pretotal'}) {\r
+ $OUT .= '\begin{flushright}';\r
+ $OUT .= '\large\textsc{'. $section->{'pretotal'}. '}\\\\';\r
+ $OUT .= '\\end{flushright}';\r
+ }\r
+ $OUT .= '\captionsetup{singlelinecheck=false,justification=raggedright,font={Large,sc,bf}}';\r
+ $OUT .= '\begin{longtable}{cllllllr}';\r
+ $OUT .= '\caption*{ ';\r
+ $OUT .= ($section->{'description'}) ? $section->{'description'}: 'Charges';\r
+ $OUT .= '}\\\\';\r
$OUT .= '\hline';\r
$OUT .= '\rule{0pt}{2.5ex}';\r
$OUT .= '\makebox[1.4cm]{\textbf{Ref}} & ';\r
\r
$OUT .= '\end{longtable}';\r
\r
+ if ($section->{'posttotal'}) {\r
+ $OUT .= '\begin{flushright}';\r
+ $OUT .= '\normalfont\large\bfseries\textsc{'. $section->{'posttotal'}. '}\\\\';\r
+ $OUT .= '\\end{flushright}';\r
+ }\r
}\r
\r
--@]\r