[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