[freeside-commits] freeside/conf invoice_latex_statement, 1.2, 1.2.2.1
Ivan,,,
ivan at wavetail.420.am
Wed Mar 16 15:25:16 PDT 2011
Update of /home/cvs/cvsroot/freeside/conf
In directory wavetail.420.am:/tmp/cvs-serv5865
Modified Files:
Tag: FREESIDE_2_1_BRANCH
invoice_latex_statement
Log Message:
update statement template
Index: invoice_latex_statement
===================================================================
RCS file: /home/cvs/cvsroot/freeside/conf/invoice_latex_statement,v
retrieving revision 1.2
retrieving revision 1.2.2.1
diff -u -w -d -r1.2 -r1.2.2.1
--- invoice_latex_statement 4 Nov 2010 00:11:14 -0000 1.2
+++ invoice_latex_statement 16 Mar 2011 22:25:14 -0000 1.2.2.1
@@ -19,25 +19,42 @@
\documentclass[letterpaper]{article}
-\usepackage{fancyhdr,lastpage,ifthen,longtable,afterpage}
+\usepackage{fancyhdr,lastpage,ifthen,array,fslongtable,afterpage,caption,multirow,bigstrut}
\usepackage{graphicx} % required for logo graphic
\addtolength{\voffset}{-0.0cm} % top margin to top of header
\addtolength{\hoffset}{-0.6cm} % left margin on page
-\addtolength{\topmargin}{-1.25cm} % top margin to top of header
+\addtolength{\topmargin}{[@-- defined($topmargin) ? $topmargin : '-1.25cm' --@]}
\setlength{\headheight}{2.0cm} % height of header
-\setlength{\headsep}{1.0cm} % between header and text
+\setlength{\headsep}{[@-- defined($headsep) ? $headsep : '1.0cm' --@]}
\setlength{\footskip}{1.0cm} % bottom of footer from bottom of text
%\addtolength{\textwidth}{2.1in} % width of text
\setlength{\textwidth}{19.5cm}
-\setlength{\textheight}{19.5cm}
+\setlength{\textheight}{[@-- defined($textheight) ? $textheight : '19.5cm' --@]}
\setlength{\oddsidemargin}{-0.9cm} % odd page left margin
\setlength{\evensidemargin}{-0.9cm} % even page left margin
+\LTchunksize=40
+
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{1pt}
+[@-- $coupon = ''; --@]
+
+\renewcommand{\footrule}{
+[@--
+ $coupon ? '\ifthenelse{\equal{\thepage}{1}}' : '';
+--@]
+ {
+ }
+ {
+ \vbox to 0pt{\rule{\headwidth}{\footrulewidth}\vss}
+ }
+}
+
+\newcommand{\extracouponspace}{[@-- defined($extracouponspace) ? $extracouponspace : '3.6cm' --@]}
+
% Adjust the inset of the mailing address
\newcommand{\addressinset}[1][]{\hspace{1.0cm}}
@@ -45,7 +62,7 @@
\newcommand{\returninset}[1][]{\hspace{-0.25cm}}
% New command for address lines i.e. skip them if blank
-\newcommand{\addressline}[1]{\ifthenelse{\equal{#1}{}}{}{#1\newline}}
+\newcommand{\addressline}[1]{\ifthenelse{\equal{#1}{}}{}{#1\\}}
% Inserts dollar symbol
\newcommand{\dollar}[1][]{\symbol{36}}
@@ -60,12 +77,20 @@
\fancyfoot[C]{
\ifthenelse{\equal{\thepage}{1}}
{ % First page
- \small{
-[@-- $footer --@]
+[@--
+ if ($coupon) {
+ $OUT .= '\vspace{-\extracouponspace}';
+ $OUT .= '\rule[0.5em]{\textwidth}{\footrulewidth}\\\\';
+ $OUT .= $coupon;
+ $OUT .= '\vspace{'. $couponfootsep. '}' if defined($couponfootsep);
}
+ '';
+--@] [@-- $smallerfooter ? '\scriptsize{' : '\small{' --@]
+[@-- $footer --@]
+ }[@-- $coupon ? '\vspace{\extracouponspace}' : '' --@]
}
{ % ... pages
- \small{
+ [@-- $smallerfooter ? '\scriptsize{' : '\small{' --@]
[@-- $smallfooter --@]
}
}
@@ -86,35 +111,35 @@
\returninset
\makebox{
\begin{tabular}{ll}
- \includegraphics{[@-- $logo_file --@]} &
+ \includegraphics{[@-- $logo_file --@]} & [@-- $verticalreturnaddress ? '\\\\' : '' --@]
\begin{minipage}[b]{5.5cm}
[@-- $returnaddress --@]
- \end{minipage}
+ \end{minipage}\\
\end{tabular}
}
}
{ % ... pages
- %\includegraphics{[@-- $conf_dir --@]/logo.eps} % Uncomment if you want the logo on all pages.
+ %\includegraphics{[@-- $logo_file --@]} % Uncomment if you want the logo on all pages.
}
}
\fancyhead[R]{
\ifthenelse{\equal{\thepage}{1}}
{ % First page
- \begin{tabular}{rcl}
- Invoice date & & Invoice number \\
+ \begin{tabular}{ccc}
+ Invoice date & Invoice \#& Customer\#\\
\vspace{0.2cm}
- \textbf{[@-- $date --@]} & & \textbf{[@-- $invnum --@]} \\\hline
- \rule{0pt}{5ex} &~~ \huge{\textsc{Statement}} & \\
+ \textbf{[@-- $date --@]} & \textbf{[@-- $invnum --@]} & \textbf{[@-- $custnum --@]} \\\hline
+ \rule{0pt}{5ex} &~~ \huge{\textsc{[@-- $notice_name || 'Statement' --@]}} & \\
\vspace{-0.2cm}
& & \\\hline
\end{tabular}
}
{ % ... pages
\small{
- \begin{tabular}{ll}
- Invoice date & Invoice number\\
- \textbf{[@-- $date --@]} & \textbf{[@-- $invnum --@]}\\
+ \begin{tabular}{lll}
+ Invoice date & Invoice \#& Customer\#\\
+ \textbf{[@-- $date --@]} & \textbf{[@-- $invnum --@]} & \textbf{[@-- $custnum --@]}\\
\end{tabular}
}
}
@@ -134,41 +159,54 @@
\renewcommand{\familydefault}{phv}
-% Commands for freeside description...
-\newcommand{\FSdesc}[3]{
+% Commands for freeside table header...
+
+\newcommand{\FSdescriptionlength} { [@-- $unitprices ? '8.2cm' : '12.8cm' --@] }
+\newcommand{\FSdescriptioncolumncount} { [@-- $unitprices ? '4' : '6' --@] }
+\newcommand{\FSunitcolumns}{ [@-- $unitprices ? '\makebox[2.5cm][l]{\textbf{~~Unit Price}}&\makebox[1.4cm]{\textbf{~Quantity}}&' : '' --@] }
+
+\newcommand{\FShead}{
+ \hline
+ \rule{0pt}{2.5ex}
+ \makebox[1.4cm]{\textbf{Ref}} &
+% \makebox[2.9cm][l]{\textbf{Description}}&
+% \makebox[1.4cm][l]{}&
+% \makebox[1.4cm][l]{}&
+% \makebox[2.5cm][l]{}&
+ \multicolumn{\FSdescriptioncolumncount}{l}{\makebox[\FSdescriptionlength][l]{\textbf{Description}}}&
+ \FSunitcolumns
+ \makebox[1.6cm][r]{\textbf{Amount}} \\
+ \hline
+}
+
+% ...description...
+\newcommand{\FSdesc}[5]{
\multicolumn{1}{c}{\rule{0pt}{2.5ex}\textbf{#1}} &
- \textbf{#2} &
- \multicolumn{1}{r}{\textbf{\dollar #3}}\\
+ \multicolumn{[@-- $unitprices ? '4' : '6' --@]}{l}{\textbf{#2}} &
+[@-- $unitprices ? ' \multicolumn{1}{l}{\textbf{#3}} &'."\n".
+ ' \multicolumn{1}{r}{\textbf{#4}} &'."\n"
+ : ''
+--@]
+ \multicolumn{1}{r}{\textbf{\dollar #5}}\\
}
% ...extended description...
\newcommand{\FSextdesc}[1]{
\multicolumn{1}{l}{\rule{0pt}{1.0ex}} &
- \multicolumn{2}{l}{\small{~-~#1}}\\
+%% \multicolumn{2}{l}{\small{~-~#1}}\\
+#1\\
}
% ...and total line items.
\newcommand{\FStotaldesc}[2]{
- & \multicolumn{1}{l}{#1} & #2\\
+ & \multicolumn{6}{l}{#1} & #2\\
}
\begin{document}
-%
-%% Headers and footers defined for the first page
-%
-%% The LH Heading comprising logo
-%% UNCOMMENT the following FOUR lines and change the path if necssary to provide a logo
-%
-%% The Heading comprising isue date, customer ref & INVOICE name
-%
-%% Header & footer changes for subsequent pages
-%
-%
-%
-\begin{tabular}{ll}
-\addressinset \rule{0cm}{0cm} &
+% Headers and footers defined for the first page
+\addressinset \rule{0.5cm}{0cm}
\makebox{
-\begin{minipage}[t]{5.0cm}
-\vspace{0.25cm}
+\begin{minipage}[t]{7.0cm}
+\vspace{[@-- defined($addresssep) ? $addresssep : '0.25cm' --@]}
\textbf{[@-- $payname --@]}\\
\addressline{[@-- $company --@]}
\addressline{[@-- $address1 --@]}
@@ -176,10 +214,22 @@
\addressline{[@-- $city --@], [@-- $state --@]~~[@-- $zip --@]}
\addressline{[@-- $country --@]}
\end{minipage}}
-\end{tabular}
\hfill
\makebox{
\begin{minipage}[t]{6.4cm}
+[@--
+ if ($ship_enable) {
+ $OUT .= '\textbf{Service Address}\\\\';
+ $OUT .= "\\addressline{$ship_company}";
+ $OUT .= "\\addressline{$ship_address1}";
+ $OUT .= "\\addressline{$ship_address2}";
+ $OUT .= "\\addressline{$ship_city, $ship_state~~$ship_zip}";
+ $OUT .= "\\addressline{$ship_country}";
+ $OUT .= '~\\\\';
+ }else{
+ $OUT .= '';
+ }
+--@]
\begin{flushright}
Terms: [@-- $terms --@]\\
[@-- $po_line --@]\\
@@ -187,58 +237,127 @@
\end{minipage}}
\vspace{1.5cm}
%
-\section*{\textsc{Charges}}
-\begin{longtable}{clr}
-\hline
-\rule{0pt}{2.5ex}
-\makebox[1.4cm]{\textbf{Ref}} &
-\makebox[12.8cm][l]{\textbf{Description}} &
-\makebox[2.5cm][r]{\textbf{Amount}} \\
-\hline
-\endfirsthead
-\multicolumn{3}{r}{\rule{0pt}{2.5ex}Continued from previous page}\\
-\hline
-\rule{0pt}{2.5ex}
-\makebox[1.4cm]{\textbf{Ref}} &
-\makebox[12.8cm][l]{\textbf{Description}} &
-\makebox[2.5cm][r]{\textbf{Amount}} \\
-\hline
-\endhead
-\multicolumn{3}{r}{\rule{0pt}{2.5ex}Continued on next page...}\\
-\endfoot
-\hline
+[@-- $summary --@]
+%
+\section*{}
[@--
+ foreach my $section ( grep { !$summary || $_->{description} ne $finance_section } @sections ) {
+ if ($section->{'pretotal'} && !$summary) {
+ $OUT .= '\begin{flushright}';
+ $OUT .= '\large\textsc{'. $section->{'pretotal'}. '}\\\\';
+ $OUT .= '\\end{flushright}';
+ }
+ $OUT .= '\pagebreak' if $section->{'post_total'};
+ unless ($section->{'summarized'} ) {
+ $OUT .= '\captionsetup{singlelinecheck=false,justification=raggedright,font={Large,sc,bf}}';
+ $OUT .= '\ifthenelse{\equal{\thepage}{1}}{\setlength{\LTextracouponspace}{\extracouponspace}}{\setlength{\LTextracouponspace}{0pt}}'
+ if $coupon;
+ $OUT .= '\begin{longtable}{cllllllr}';
+ $OUT .= '\caption*{ ';
+ $OUT .= ($section->{'description'}) ? $section->{'description'}: 'Charges';
+ $OUT .= '}\\\\';
+ if ($section->{header_generator}) {
+ $OUT .= &{$section->{header_generator}}();
+ } else {
+ $OUT .= '\FShead';
+ }
+ $OUT .= '\endfirsthead';
+ $OUT .= '\multicolumn{7}{r}{\rule{0pt}{2.5ex}Continued from previous page}\\\\';
+ if ($section->{header_generator}) {
+ $OUT .= &{$section->{header_generator}}();
+ } else {
+ $OUT .= '\FShead';
+ }
+ $OUT .= '\endhead';
+ $OUT .= '\multicolumn{7}{r}{\rule{0pt}{2.5ex}Continued on next page...}\\\\';
+ $OUT .= '\endfoot';
+ $OUT .= '\hline';
- foreach my $line (@total_items) {
+ if (scalar(@sections) > 1) {
+ if ($section->{total_generator}) {
+ $OUT .= &{$section->{total_generator}}($section);
+ } else {
+ $OUT .= '\FStotaldesc{' . $section->{'description'} . ' Total}' .
+ '{' . $section->{'subtotal'} . '}' . "\n";
+ }
+ }
+
+ #if ($section == $sections[$#sections]) {
+ foreach my $line (grep {$_->{section}->{description} eq $section->{description}} @total_items) {
+ if ($section->{total_line_generator}) {
+ $OUT .= &{$section->{total_line_generator}}($line);
+ } else {
$OUT .= '\FStotaldesc{' . $line->{'total_item'} . '}' .
'{' . $line->{'total_amount'} . '}' . "\n";
}
+ }
+ #}
---@]
-\hline
-\endlastfoot
-[@--
+ $OUT .= '\hline';
+ $OUT .= '\endlastfoot';
- foreach my $line (@detail_items) {
+ my $lastref = 0;
+ foreach my $line (
+ grep { ( scalar( @sections ) > 1
+ ? $section->{'description'} eq $_->{'section'}->{'description'}
+ : 1
+ ) }
+ @detail_items )
+ {
my $ext_description = $line->{'ext_description'};
# Don't break-up small packages.
my $rowbreak = @$ext_description < 5 ? '*' : '';
- $OUT .= "\\hline\n";
- $OUT .= '\FSdesc{' . $line->{'ref'} . '}{' . $line->{'description'} . '}' .
+ $OUT .= "\\hline\n" if ($line->{'ref'} && $line->{'ref'} ne $lastref);
+ if ($section->{description_generator}) {
+ $OUT .= &{$section->{description_generator}}($line);
+ } else {
+ $OUT .= '\FSdesc'.
+ '{' . ( $line->{'ref'} ne $lastref ? $line->{'ref'} : '' ) . '}'.
+ '{' . $line->{'description'} . '}' .
+ '{' . ( $unitprices ? $line->{'unit_amount'} : '' ) . '}'.
+ '{' . ( $unitprices ? $line->{'quantity'} : '' ) . '}' .
'{' . $line->{'amount'} . "}${rowbreak}\n";
+ }
+ $lastref = $line->{'ref'};
foreach my $ext_desc (@$ext_description) {
+ if ($section->{extended_description_generator}) {
+ $OUT .= &{$section->{extended_description_generator}}($ext_desc);
+ } else {
+ if ( $ext_desc !~ /[^\\]&/ ) {
$ext_desc = substr($ext_desc, 0, 80) . '...'
if (length($ext_desc) > 80);
+ $ext_desc = '\multicolumn{6}{l}{\small{~~~'. $ext_desc. '}}';
+ }else{
+ $ext_desc = "~~~$ext_desc";
+ }
$OUT .= '\FSextdesc{' . $ext_desc . '}' . "${rowbreak}\n";
}
+ }
+
+ }
+ $OUT .= '\end{longtable}';
+ }
+ if ($section->{'posttotal'}) {
+ $OUT .= '\begin{flushright}';
+ $OUT .= '\normalfont\large\bfseries\textsc{'. $section->{'posttotal'}. '}\\\\';
+ $OUT .= '\\end{flushright}';
+ }
}
--@]
-\end{longtable}
\vfill
-[@-- $notes --@]
+\begin{minipage}[t]{\textwidth}
+ [@-- length($summary)
+ ? ''
+ : ( $smallernotes
+ ? '\scriptsize{ '.$notes.' }'
+ : $notes
+ )
+ --@]
+ [@-- $coupon ? '\ifthenelse{\equal{\thepage}{1}}{\rule{0pt}{\extracouponspace}}{}' : '' --@]
+\end{minipage}
\end{document}
More information about the freeside-commits
mailing list