[freeside-commits] branch FREESIDE_4_BRANCH updated. 059b11d530d86f5fe60c069bb2b7460989b5909a

Christopher Burger burgerc at freeside.biz
Tue Dec 4 13:52:22 PST 2018


The branch, FREESIDE_4_BRANCH has been updated
       via  059b11d530d86f5fe60c069bb2b7460989b5909a (commit)
       via  eb3541f27fdb17dc1582af335c641b0185869c41 (commit)
      from  7a24befdb65751f552247abf42df94276bcfa12f (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 059b11d530d86f5fe60c069bb2b7460989b5909a
Author: Christopher Burger <burgerc at freeside.biz>
Date:   Tue Dec 4 16:33:14 2018 -0500

    RT# 81822 - cleanup footer display when coupon on top

diff --git a/conf/invoice_latex b/conf/invoice_latex
index 885be3d08..cd36450f3 100644
--- a/conf/invoice_latex
+++ b/conf/invoice_latex
@@ -73,23 +73,16 @@
 \renewcommand{\headrulewidth}{0pt}
 \renewcommand{\footrulewidth}{1pt}
 
+\renewcommand{\footrule}{
 [@--
-  if ($couponlocation eq "top") {
-   if ($coupon) {
-    '\makeatletter
-     \newcommand\ifpageone{
-      \ifnum\value{page}=1
-       \expandafter\@firstoftwo
-      \else
-       \expandafter\@secondoftwo
-      \fi}
-     \makeatother';
-   }
+  $coupon ? '\ifthenelse{\equal{\thepage}{1}}' : '';
+--@]
+  {
   }
-  else {
-   '\renewcommand{\footrule}{\ifthenelse{\equal{\thepage}{1}}{}{ \vbox to 0pt{\rule{\headwidth}{\footrulewidth}\vss} } }';
+  {
+    \vbox to 0pt{\rule{\headwidth}{\footrulewidth}\vss}
   }
---@]
+}
 
 % Adjust the inset of the mailing address
 \newcommand{\addressinset}[1][]{\hspace{1.0cm}}
@@ -123,6 +116,9 @@
       (defined($couponfootsep) ? $couponfootsep : '0.2in') .
       '}';
   }
+  elsif ($coupon && $couponlocation eq "top") {
+    $OUT .= '\vspace{-\extracouponspace}';
+  }
   '';
 --@] [@-- $smallerfooter ? '\scriptsize{' : '\small{' --@]
 [@-- $footer --@]

commit eb3541f27fdb17dc1582af335c641b0185869c41
Author: Christopher Burger <burgerc at freeside.biz>
Date:   Tue Dec 4 14:30:07 2018 -0500

    RT# 81822 - Added new config for remittance coupon location, updated invoice_latex and invoice_latexcoupon to use new config
    
    Conflicts:
            conf/invoice_latex

diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm
index 87e5838c0..e76ff4b77 100644
--- a/FS/FS/Conf.pm
+++ b/FS/FS/Conf.pm
@@ -1503,6 +1503,18 @@ and customer address. Include units.',
   },
 
   {
+    'key'         => 'invoice_latexcouponlocation',
+    'section'     => 'invoicing',
+    'description' => 'Location of the remittance coupon.Either top or bottom of page, defaults to bottom.',
+    'type'        => 'select',
+    'select_hash' => [
+                       'bottom' => 'Bottom of page (default)',
+                       'top'    => 'Top of page',
+                     ],
+    'per_agent'   => 1,
+  },
+
+  {
     'key'         => 'invoice_latexsmallfooter',
     'section'     => 'invoice_templates',
     'description' => 'Optional small footer for multi-page LaTeX typeset PostScript invoices.',
diff --git a/FS/FS/Template_Mixin.pm b/FS/FS/Template_Mixin.pm
index 2b518d9d7..657b583af 100644
--- a/FS/FS/Template_Mixin.pm
+++ b/FS/FS/Template_Mixin.pm
@@ -597,6 +597,7 @@ sub print_generic {
     'amountenclosedsep'     => scalar($conf->config('invoice_latexcouponamountenclosedsep', $agentnum)),
     'coupontoaddresssep'    => scalar($conf->config('invoice_latexcoupontoaddresssep', $agentnum)),
     'addcompanytoaddress'   => $conf->exists('invoice_latexcouponaddcompanytoaddress', $agentnum),
+    'couponlocation'        => (scalar($conf->config('invoice_latexcouponlocation', $agentnum)) eq "top") ? 'top' : 'bottom',
 
     # better hang on to conf_dir for a while (for old templates)
     'conf_dir'        => "$FS::UID::conf_dir/conf.$FS::UID::datasrc",
diff --git a/conf/invoice_latex b/conf/invoice_latex
index 6d4c536d5..885be3d08 100644
--- a/conf/invoice_latex
+++ b/conf/invoice_latex
@@ -1,518 +1,537 @@
-%% file: Standard Multipage.tex
-%% Purpose: Multipage bill template for e-Bills
-%% 
-%% Created by Mark Asplen-Taylor
-%% Asplen Management Ltd
-%% www.asplen.co.uk
-%%
-%% Modified for Freeside by Kristian Hoffman
-%%
-%% Changes
-%% 	0.1	4/12/00	Created
-%%	0.2	18/10/01	More fields added
-%%	1.0	16/11/01	RELEASED
-%%	1.2	16/10/02	Invoice number added
-%%	1.3	2/12/02	Logo graphic added
-%%	1.4	7/2/03	Multipage headers/footers added
-%%      n/a     forked for Freeside; checked into CVS
-%%
-
-\documentclass[letterpaper]{article}
-
-\usepackage{fancyhdr,lastpage,ifthen,array,longtable,afterpage,caption,multirow,bigstrut}
-\usepackage[breakwords]{truncate} % to avoid overflowing boxes
-\usepackage{graphicx}			% required for logo graphic
-\usepackage[utf8]{inputenc}             % multilanguage support
-\usepackage[T1]{fontenc}
-[@-- if ( length($watermark) ) {
-  $OUT .= '
-\usepackage{background}
-\backgroundsetup{
-  placement=center,
-  opacity=0.25,
-  color=black,
-  angle=0,
-  contents=' . $watermark . '
-}';
-}
-'';
---@]
-
-\catcode`\{=1
-\catcode`\}=2
-\special{ps:%
-  SDict begin [
-    /Title (Invoice \#[@-- $invnum --@])
-    /DOCINFO pdfmark
-  end
-}
-\end
-
-\addtolength{\voffset}{-0.0cm}		% top margin to top of header
-\addtolength{\hoffset}{-0.6cm}		% left margin on page
-\addtolength{\topmargin}{[@-- defined($topmargin) ? $topmargin : '-1.00cm' --@]}
-\setlength{\headheight}{2.0cm} 		% height of header
-\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}{[@-- defined($textheight) ? $textheight : '19.5cm' --@]}
-\setlength{\oddsidemargin}{-0.9cm} 	% odd page left margin
-\setlength{\evensidemargin}{-0.9cm} 	% even page left margin
-
-\LTchunksize=40
-
-
-\begin{document}
-
-
-\renewcommand{\headrulewidth}{0pt}
-\renewcommand{\footrulewidth}{1pt}
-
-\renewcommand{\footrule}{
-[@--
-  $coupon ? '\ifthenelse{\equal{\thepage}{1}}' : '';
---@]
-  {
-  }
-  {
-    \vbox to 0pt{\rule{\headwidth}{\footrulewidth}\vss}
-  }
-}
-
-\newcommand{\extracouponspace}{[@-- defined($extracouponspace) ? $extracouponspace : '2.7in' --@]}
-
-% Adjust the inset of the mailing address
-\newcommand{\addressinset}[1][]{\hspace{1.0cm}}
-
-% Adjust the inset of the return address and logo
-\newcommand{\returninset}[1][]{\hspace{-0.25cm}}
-
-% New command for address lines i.e. skip them if blank
-\newcommand{\addressline}[1]{\ifthenelse{\equal{#1}{}}{}{#1\\}}
-
-% Inserts dollar symbol
-\newcommand{\dollar}[1][]{\symbol{36}}
-
-% Remove plain style header/footer
-\fancypagestyle{plain}{
-  \fancyhead{}
-}
-\fancyhf{}
-
-% Define fancy header/footer for first and subsequent pages
-\fancyfoot[C]{
-  \ifthenelse{\equal{\thepage}{1}}
-  { % First page
-[@--
-  if ($coupon) {
-    $OUT .= '\vspace{-\extracouponspace}';
-    $OUT .= '\rule[0.5em]{\textwidth}{\footrulewidth}\\\\';
-    $OUT .= $coupon;
-    $OUT .= '\vspace{'.
-      (defined($couponfootsep) ? $couponfootsep : '0.2in') .
-      '}';
-  }
-  '';
---@] [@-- $smallerfooter ? '\scriptsize{' : '\small{' --@]
-[@-- $footer --@]
-    }[@-- $coupon ? '\vspace{\extracouponspace}' : '' --@]
-  }
-  { % ... pages
-    [@-- $smallerfooter ? '\scriptsize{' : '\small{' --@]
-[@-- $smallfooter --@]
-    }
-  }
-}
-
-\fancyfoot[R]{
-  \ifthenelse{\equal{\thepage}{1}}
-  { % First page
-  }
-  { % ... pages
-    \small{\thepage~[@-- emt('of') --@]~\pageref{LastPage}}
-  }
-}
-
-\fancyhead[L]{
-  \ifthenelse{\equal{\thepage}{1}}
-  { % First page
-    \returninset
-    \makebox{
-      \begin{tabular}{ll}
-        \begin{minipage}[b]{5.5cm}
-[@-- $returnaddress --@]
-        \end{minipage} &
-        \includegraphics{[@-- $logo_file --@]}\\
-      \end{tabular}
-    }
-  }
-  { % ... pages
-    %\includegraphics{[@-- $logo_file --@]}	% Uncomment if you want the logo on all pages.
-  }
-}
-
-\fancyhead[R]{
-  \ifthenelse{\equal{\thepage}{1}}
-  { % First page
-    \begin{tabular}{ccc}
-    [@-- join(' & ', ( $no_date   ? '' : emt('Invoice date') ),
-                     ( $no_number ? '' : emt('Invoice #')    ),
-                     emt('Customer #')
-             )
-    --@]\\
-    \vspace{0.2cm}
-    \textbf{[@-- $date --@]} & \textbf{[@-- $invnum --@]} & \textbf{[@-- $custnum --@]} \\\hline
-    \rule{0pt}{5ex} &~~ \huge{\textsc{[@-- emt($notice_name) --@]}} & \\
-    \vspace{-0.2cm}
-     & & \\\hline
-    \end{tabular}
-  }
-  { % ... pages
-    \small{
-      \begin{tabular}{lll}
-      [@-- join(' & ', emt('Invoice date'), emt('Invoice #'), emt('Customer #') ) --@]\\
-      \textbf{[@-- $date --@]} & \textbf{[@-- $invnum --@]} & \textbf{[@-- $custnum --@]}\\
-      \end{tabular}
-    }
-  }
-}
-
-\pagestyle{fancy}
-
-
-%% Font options are:
-%%	bch	Bitsream Charter
-%% 	put	Utopia
-%%	phv	Adobe Helvetica
-%%	pnc	New Century Schoolbook
-%%	ptm	Times
-%%	pcr	Courier
-
-\renewcommand{\familydefault}{phv}
-
-
-% Commands for freeside table header...
-
-\newcommand{\FSdescriptionlength} { [@-- $unitprices ? '8.2cm' : '12.8cm' --@] }
-\newcommand{\FSdescriptioncolumncount} { [@-- $unitprices ? '4' : '6' --@] }
-\newcommand{\FSunitcolumns}{ [@-- 
-  $unitprices
-  ? '\makebox[2.5cm][r]{\textbf{~~' . emt('Unit Price') . '}} &' .
-    '\makebox[1.4cm]{\textbf{~' . emt('Quantity') . '}} & ' 
-  : '' --@] }
-
-\newcommand{\FShead}{
-  \hline
-  \rule{0pt}{2.5ex}
-  \makebox[1.4cm]{} &
-  \multicolumn{\FSdescriptioncolumncount}{l}{
-    \truncate{\FSdescriptionlength}{\textbf{[@-- emt('Description') --@]}}
-  } &
-  \FSunitcolumns
-  \makebox[1.6cm][r]{\textbf{[@-- emt('Amount') --@]}} \\
-  \hline
-}
-
-\newcommand{\FSusagehead}{
-  \hline
-  \rule{0pt}{2.5ex}
-  \makebox[1.4cm]{} &
-  \multicolumn{4}{l}{
-    \truncate{\FSdescriptionlength}{\textbf{[@-- emt('Description') --@]}}
-  } &
-  \textbf{~~[@-- emt('Calls') --@]} &
-  \textbf{~~[@-- emt('Duration') --@]} &
-  \textbf{~~[@-- emt('Amount') --@]} \\
-  \hline
-}
-
-% ...description...
-\newcommand{\FSdesc}[5]{
-  \multicolumn{1}{c}{\rule{0pt}{2.5ex}\textbf{#1}} &
-  \multicolumn{[@-- $unitprices ? '4' : '6' --@]}{l}{
-    \truncate{\FSdescriptionlength}{\textbf{#2}}
-  } &
-[@-- $unitprices ? '  \multicolumn{1}{r}{\textbf{#3}} &'."\n".
-                   '  \multicolumn{1}{r}{\textbf{#4}} &'."\n"
-                 : ''
---@]
-  \multicolumn{1}{r}{\textbf{#5}}\\
-}
-% ...extended description...
-\newcommand{\FSextdesc}[1]{
-  \multicolumn{1}{l}{\rule{0pt}{1.0ex}} &
-  \multicolumn{6}{l}{
-    \truncate{12.8cm}{\small{~~~#1}}
-  } \\
-}
-% ...call detail (multiple columns already)...
-\newcommand{\FScalldetail}[1]{
-  \multicolumn{1}{l}{\rule{0pt}{1.0ex}} &
-  ~~~#1
-  \\
-}
-}
-% ...and total line items (which use the full 12.8cm length, ignoring
-% unitprice/quantity
-\newcommand{\FStotaldesc}[2]{
-  & \multicolumn{6}{l}{
-    \truncate{12.8cm}{#1}
-  } & #2\\
-}
-
-% ...usage class summary
-\newcommand{\FSusagedesc}[4]{
-  \multicolumn{1}{c}{\rule{0pt}{2.5ex}} &
-  \multicolumn{4}{l}{\textbf{#1}} &
-  \multicolumn{1}{r}{\textbf{#2}} &
-  \multicolumn{1}{r}{\textbf{#3}} &
-  \multicolumn{1}{r}{\textbf{#4}}
-  \\
-}
-
-%	Headers and footers defined for the first page
-\addressinset \rule{0.5cm}{0cm} 
-\makebox{
-\begin{minipage}[t]{7.0cm}
-\vspace{[@-- defined($addresssep) ? $addresssep : '0.25cm' --@]}
-\textbf{[@-- $payname --@]}\\
-\addressline{[@-- $company --@]}
-\addressline{[@-- $address1 --@]}
-\addressline{[@-- $address2 --@]}
-\addressline{[@-- $city --@], [@-- $state --@]~~[@-- $zip --@]}
-\addressline{[@-- $country --@]}
-\end{minipage}}
-\hfill
-\makebox{
-\begin{minipage}[t]{6.4cm}
-[@--
-  if ($ship_enable) {
-    $OUT .= '\textbf{' . emt('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 ? emt('Terms') . ': ' . emt($terms) : '' --@]\\
-[@-- $po_line --@]\\
-\end{flushright}
-\end{minipage}}
-\vspace{1.5cm}
-%
-[@-- $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*{ ';
-      if ($section->{'location'}) {
-        $OUT .= $section->{'location'}{'label_prefix'}. ': '
-          if length($section->{'location'}{'label_prefix'});
-        $OUT .= $section->{'location'}{'address1'};
-        $OUT .= ', ' . $section->{'location'}{'address2'}
-          if length($section->{'location'}{'address2'});
-        $OUT .= ', ' .
-                $section->{'location'}{'city'} . ', ' .
-                $section->{'location'}{'state'} . '~' .
-                $section->{'location'}{'zip'};
-      } elsif ( $section->{'description'} ) {
-        $OUT .= ($section->{'description'});
-      } else {
-        $OUT .= emt('Charges');
-      }
-      $OUT .= '}\\\\';
-      if ($section->{header_generator}) {
-        $OUT .= &{$section->{header_generator}}();
-      } elsif ( $section->{usage_section} ) {
-        $OUT .= '\FSusagehead';
-      } else {
-        $OUT .= '\FShead';
-      }
-      $OUT .= '\endfirsthead';
-      $OUT .= '\multicolumn{7}{r}{\rule{0pt}{2.5ex}'.emt('Continued from previous page').'}\\\\';
-      if ($section->{header_generator}) {
-        $OUT .= &{$section->{header_generator}}();
-      } elsif ( $section->{usage_section} ) {
-        $OUT .= '\FSusagehead';
-      } else {
-        $OUT .= '\FShead';
-      }
-      $OUT .= '\endhead';
-      $OUT .= '\multicolumn{7}{r}{\rule{0pt}{2.5ex}'.emt('Continued on next page...').'}\\\\';
-      $OUT .= '\endfoot';
-      $OUT .= '\hline';
-
-      if (scalar(@sections) > 1 and !$section->{no_subtotal}) {
-        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";
-          }
-        }
-      #}
-
-      $OUT .= '\hline';
-      $OUT .= '\endlastfoot';
-
-      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" if (($line->{'ref'} || 0) ne $lastref);
-        if ($section->{description_generator}) {
-          $OUT .= &{$section->{description_generator}}($line);
-        } elsif ($section->{usage_section}) {
-          my $minutes = sprintf('%d', $line->{'duration'} / 60);
-          my $seconds = $line->{'duration'} % 60;
-          $OUT .= '\FSusagedesc
-            {' . $line->{'description'} . '}
-            {' . $line->{'quantity'} . '}
-            {' . $minutes . 'm ' . $seconds . 's' . '}
-            {' . $line->{'amount'} . '}';
-        } else {
-          $OUT .= '\FSdesc'.
-                  '{}'.
-                  '{' . $line->{'description'} . '}' ;
-          if ( $unitprices and length($line->{'unit_amount'}) ) {
-            # then show the unit amount and quantity
-            $OUT .= 
-                '{\\dollar' . $line->{'unit_amount'} . '}'.
-                '{'         . $line->{'quantity'}    . '}';
-          } else {
-            # leave those columns blank
-            $OUT .= '{}{}';
-          }
-          $OUT .= '{\\dollar' . $line->{'amount'} . "}${rowbreak}\n";
-        }
-        $lastref = $line->{'ref'} || 0;
-
-        foreach my $ext_desc (@$ext_description) {
-          if ($section->{extended_description_generator}) {
-            $OUT .= &{$section->{extended_description_generator}}($ext_desc);
-          } elsif ( $ext_desc !~ /[^\\]&/ ) {
-            $OUT .= '\FSextdesc{' . $ext_desc . "}$rowbreak\n";
-          } else { # call detail
-            $OUT .= '\FScalldetail{' . $ext_desc . "}$rowbreak\n";
-          }
-        }
-
-      }
-
-      $OUT .= '\end{longtable}';
-    }
-    if ($section->{'posttotal'}) {
-      $OUT .= '\begin{flushright}';
-      $OUT .= '\normalfont\large\bfseries\textsc{'. $section->{'posttotal'}. '}\\\\';
-      $OUT .= '\\end{flushright}';
-    }
-  }
-
---@]
-[@--
-
-  my @location_summary_sections =
-    grep {
-      ref $_->{location}
-      && $_->{locationnum}
-      && $_->{description}
-      && $_->{description} ne $finance_section
-    } @sections;
-  if ( $multisection eq 'location' && scalar(@location_summary_sections) > 1 ) {
-
-$OUT .= '
-      \hline
-      \section*{}
-      \captionsetup{singlelinecheck=false,justification=raggedright,font={Large,sc,bf}}
-      \ifthenelse{\equal{\thepage}{1}}{\setlength{\LTextracouponspace}{\extracouponspace}}{\setlength{\LTextracouponspace}{0pt}}
-
-      \begin{longtable}{cllllllr}
-      \caption*{ '. emt('Summary of New Charges by Location') .' }
-      \\\\
-
-      \hline
-      \rule{0pt}{2.5ex}
-      \makebox[1.4cm]{} &
-      \multicolumn{6}{l}{
-        \truncate{13.0cm}{\textbf{'. emt('Location') .'}}
-      } &
-      \makebox[1.6cm][r]{\textbf{'. emt('Amount') .'}} \\\\
-      \hline
-
-      \endfirsthead
-      \multicolumn{7}{r}{\rule{0pt}{2.5ex}'. emt('Continued from previous page') .'}
-      \\
-      \FShead
-      \endhead
-      \multicolumn{7}{r}{\rule{0pt}{2.5ex}'. emt('Continued on next page...') .'}
-      \\
-      \endfoot
-      \hline
-      \endlastfoot
-      \hline
-    ';
-
-    for my $section (@location_summary_sections) {
-      $OUT.= '
-        \rule{0pt}{2.5ex}
-        \makebox[1.4cm]{} &
-        \multicolumn{6}{l}{
-          \truncate{12.0cm}{\textbf{'. $section->{description} .'}}
-        } &
-        \makebox[1.6cm][r]{\textbf{'. $section->{subtotal} .'}} \\\\
-      ';
-    }
-
-    $OUT .= '\end{longtable}';
-  }
---@]
-\vfill
-\begin{minipage}[t]{\textwidth}
-  [@-- length($summary)
-         ? ''
-        : ( $smallernotes
-              ? '\scriptsize{ '.$notes.' }'
-              : $notes
-          )
-  --@]
-  [@-- $coupon ? '\ifthenelse{\equal{\thepage}{1}}{\rule{0pt}{\extracouponspace}}{}' : '' --@]
-\end{minipage}
-\end{document}
+%% file: Standard Multipage.tex
+%% Purpose: Multipage bill template for e-Bills
+%%
+%% Created by Mark Asplen-Taylor
+%% Asplen Management Ltd
+%% www.asplen.co.uk
+%%
+%% Modified for Freeside by Kristian Hoffman
+%%
+%% Changes
+%% 	0.1	4/12/00	Created
+%%	0.2	18/10/01	More fields added
+%%	1.0	16/11/01	RELEASED
+%%	1.2	16/10/02	Invoice number added
+%%	1.3	2/12/02	Logo graphic added
+%%	1.4	7/2/03	Multipage headers/footers added
+%%      n/a     forked for Freeside; checked into CVS
+%%      12/04/18  added support for coupon placement, top or bottom of page
+
+\documentclass[letterpaper]{article}
+
+\usepackage{fancyhdr,lastpage,ifthen,array,longtable,afterpage,caption,multirow,bigstrut}
+\usepackage[breakwords]{truncate} % to avoid overflowing boxes
+\usepackage{graphicx}			% required for logo graphic
+\usepackage[utf8]{inputenc}             % multilanguage support
+\usepackage[T1]{fontenc}
+[@-- if ( length($watermark) ) {
+  $OUT .= '
+\usepackage{background}
+\backgroundsetup{
+  placement=center,
+  opacity=0.25,
+  color=black,
+  angle=0,
+  contents=' . $watermark . '
+}';
+}
+'';
+--@]
+
+\catcode`\{=1
+\catcode`\}=2
+\special{ps:%
+  SDict begin [
+    /Title (Invoice \#[@-- $invnum --@])
+    /DOCINFO pdfmark
+  end
+}
+\end
+
+\newcommand{\extracouponspace}{[@-- defined($extracouponspace) ? $extracouponspace : '2.7in' --@]}
+
+\addtolength{\voffset}{-0.0cm}		% top margin to top of header
+\addtolength{\hoffset}{-0.6cm}		% left margin on page
+\addtolength{\topmargin}{[@-- defined($topmargin) ? $topmargin : '-1.00cm' --@]}
+\setlength{\headheight}{2.0cm} 		% height of header
+[@-- if ($coupon && $couponlocation eq "top") { '\addtolength{\headheight}{\extracouponspace}'; } --@] % add coupon space to header
+\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}{[@-- defined($textheight) ? $textheight : '19.5cm' --@]}
+\setlength{\oddsidemargin}{-0.9cm} 	% odd page left margin
+\setlength{\evensidemargin}{-0.9cm} 	% even page left margin
+
+\LTchunksize=40
+
+
+\begin{document}
+
+
+\renewcommand{\headrulewidth}{0pt}
+\renewcommand{\footrulewidth}{1pt}
+
+[@--
+  if ($couponlocation eq "top") {
+   if ($coupon) {
+    '\makeatletter
+     \newcommand\ifpageone{
+      \ifnum\value{page}=1
+       \expandafter\@firstoftwo
+      \else
+       \expandafter\@secondoftwo
+      \fi}
+     \makeatother';
+   }
+  }
+  else {
+   '\renewcommand{\footrule}{\ifthenelse{\equal{\thepage}{1}}{}{ \vbox to 0pt{\rule{\headwidth}{\footrulewidth}\vss} } }';
+  }
+--@]
+
+% Adjust the inset of the mailing address
+\newcommand{\addressinset}[1][]{\hspace{1.0cm}}
+
+% Adjust the inset of the return address and logo
+\newcommand{\returninset}[1][]{\hspace{-0.25cm}}
+
+% New command for address lines i.e. skip them if blank
+\newcommand{\addressline}[1]{\ifthenelse{\equal{#1}{}}{}{#1\\}}
+
+% Inserts dollar symbol
+\newcommand{\dollar}[1][]{\symbol{36}}
+
+% Remove plain style header/footer
+\fancypagestyle{plain}{
+  \fancyhead{}
+}
+\fancyhf{}
+
+% Define fancy header/footer for first and subsequent pages
+\fancyfoot[C]{
+\ifpageone{\global\setlength\headheight{2cm}}
+  \ifthenelse{\equal{\thepage}{1}}
+  { % First page
+[@--
+  if ($coupon && $couponlocation eq "bottom") {
+    $OUT .= '\vspace{-\extracouponspace}';
+    $OUT .= '\rule[0.5em]{\textwidth}{\footrulewidth}\\\\';
+    $OUT .= $coupon;
+    $OUT .= '\vspace{'.
+      (defined($couponfootsep) ? $couponfootsep : '0.2in') .
+      '}';
+  }
+  '';
+--@] [@-- $smallerfooter ? '\scriptsize{' : '\small{' --@]
+[@-- $footer --@]
+    }[@-- ($coupon && $couponlocation eq "bottom") ? '\vspace{\extracouponspace}' : '' --@]
+  }
+  { % ... pages
+    [@-- $smallerfooter ? '\scriptsize{' : '\small{' --@]
+[@-- $smallfooter --@]
+    }
+  }
+}
+
+\fancyfoot[R]{
+  \ifthenelse{\equal{\thepage}{1}}
+  { % First page
+  }
+  { % ... pages
+    \small{\thepage~[@-- emt('of') --@]~\pageref{LastPage}}
+  }
+}
+
+\fancyhead[L]{
+  \ifthenelse{\equal{\thepage}{1}}
+  { % First page
+[@--
+  if ($coupon && $couponlocation eq "top") {
+    $OUT .= '\vspace{-\extracouponspace}';
+    $OUT .= $coupon;
+    $OUT .= '\rule[0.5em]{\textwidth}{\footrulewidth}\\\\';
+    $OUT .= '\vspace{'.
+      (defined($couponfootsep) ? $couponfootsep : '0.2in') .
+      '}';
+  }
+--@]\returninset
+    \makebox{
+      \begin{tabular}{ll}
+        \begin{minipage}[b]{5.5cm}
+[@-- $returnaddress --@]
+        \end{minipage} &
+        \includegraphics{[@-- $logo_file --@]}\\
+      \end{tabular}
+    }
+  }
+  { % ... pages
+    %\includegraphics{[@-- $logo_file --@]}	% Uncomment if you want the logo on all pages.
+  }
+}
+
+\fancyhead[R]{
+  \ifthenelse{\equal{\thepage}{1}}
+  { % First page
+    \begin{tabular}{ccc}
+    [@-- join(' & ', ( $no_date   ? '' : emt('Invoice date') ),
+                     ( $no_number ? '' : emt('Invoice #')    ),
+                     emt('Customer #')
+             )
+    --@]\\
+    \vspace{0.2cm}
+    \textbf{[@-- $date --@]} & \textbf{[@-- $invnum --@]} & \textbf{[@-- $custnum --@]} \\\hline
+    \rule{0pt}{5ex} &~~ \huge{\textsc{[@-- emt($notice_name) --@]}} & \\
+    \vspace{-0.2cm}
+     & & \\\hline
+    \end{tabular}
+  }
+  { % ... pages
+    \small{
+      \begin{tabular}{lll}
+      [@-- join(' & ', emt('Invoice date'), emt('Invoice #'), emt('Customer #') ) --@]\\
+      \textbf{[@-- $date --@]} & \textbf{[@-- $invnum --@]} & \textbf{[@-- $custnum --@]}\\
+      \end{tabular}
+    }
+  }
+}
+
+\pagestyle{fancy}
+
+
+%% Font options are:
+%%	bch	Bitsream Charter
+%% 	put	Utopia
+%%	phv	Adobe Helvetica
+%%	pnc	New Century Schoolbook
+%%	ptm	Times
+%%	pcr	Courier
+
+\renewcommand{\familydefault}{phv}
+
+
+% Commands for freeside table header...
+
+\newcommand{\FSdescriptionlength} { [@-- $unitprices ? '8.2cm' : '12.8cm' --@] }
+\newcommand{\FSdescriptioncolumncount} { [@-- $unitprices ? '4' : '6' --@] }
+\newcommand{\FSunitcolumns}{ [@--
+  $unitprices
+  ? '\makebox[2.5cm][r]{\textbf{~~' . emt('Unit Price') . '}} &' .
+    '\makebox[1.4cm]{\textbf{~' . emt('Quantity') . '}} & '
+  : '' --@] }
+
+\newcommand{\FShead}{
+  \hline
+  \rule{0pt}{2.5ex}
+  \makebox[1.4cm]{} &
+  \multicolumn{\FSdescriptioncolumncount}{l}{
+    \truncate{\FSdescriptionlength}{\textbf{[@-- emt('Description') --@]}}
+  } &
+  \FSunitcolumns
+  \makebox[1.6cm][r]{\textbf{[@-- emt('Amount') --@]}} \\
+  \hline
+}
+
+\newcommand{\FSusagehead}{
+  \hline
+  \rule{0pt}{2.5ex}
+  \makebox[1.4cm]{} &
+  \multicolumn{4}{l}{
+    \truncate{\FSdescriptionlength}{\textbf{[@-- emt('Description') --@]}}
+  } &
+  \textbf{~~[@-- emt('Calls') --@]} &
+  \textbf{~~[@-- emt('Duration') --@]} &
+  \textbf{~~[@-- emt('Amount') --@]} \\
+  \hline
+}
+
+% ...description...
+\newcommand{\FSdesc}[5]{
+  \multicolumn{1}{c}{\rule{0pt}{2.5ex}\textbf{#1}} &
+  \multicolumn{[@-- $unitprices ? '4' : '6' --@]}{l}{
+    \truncate{\FSdescriptionlength}{\textbf{#2}}
+  } &
+[@-- $unitprices ? '  \multicolumn{1}{r}{\textbf{#3}} &'."\n".
+                   '  \multicolumn{1}{r}{\textbf{#4}} &'."\n"
+                 : ''
+--@]
+  \multicolumn{1}{r}{\textbf{#5}}\\
+}
+% ...extended description...
+\newcommand{\FSextdesc}[1]{
+  \multicolumn{1}{l}{\rule{0pt}{1.0ex}} &
+  \multicolumn{6}{l}{
+    \truncate{12.8cm}{\small{~~~#1}}
+  } \\
+}
+% ...call detail (multiple columns already)...
+\newcommand{\FScalldetail}[1]{
+  \multicolumn{1}{l}{\rule{0pt}{1.0ex}} &
+  ~~~#1
+  \\
+}
+}
+% ...and total line items (which use the full 12.8cm length, ignoring
+% unitprice/quantity
+\newcommand{\FStotaldesc}[2]{
+  & \multicolumn{6}{l}{
+    \truncate{12.8cm}{#1}
+  } & #2\\
+}
+
+% ...usage class summary
+\newcommand{\FSusagedesc}[4]{
+  \multicolumn{1}{c}{\rule{0pt}{2.5ex}} &
+  \multicolumn{4}{l}{\textbf{#1}} &
+  \multicolumn{1}{r}{\textbf{#2}} &
+  \multicolumn{1}{r}{\textbf{#3}} &
+  \multicolumn{1}{r}{\textbf{#4}}
+  \\
+}
+
+%	Headers and footers defined for the first page
+\addressinset \rule{0.5cm}{0cm}
+\makebox{
+\begin{minipage}[t]{7.0cm}
+\vspace{[@-- defined($addresssep) ? $addresssep : '0.25cm' --@]}
+\textbf{[@-- $payname --@]}\\
+\addressline{[@-- $company --@]}
+\addressline{[@-- $address1 --@]}
+\addressline{[@-- $address2 --@]}
+\addressline{[@-- $city --@], [@-- $state --@]~~[@-- $zip --@]}
+\addressline{[@-- $country --@]}
+\end{minipage}}
+\hfill
+\makebox{
+\begin{minipage}[t]{6.4cm}
+[@--
+  if ($ship_enable) {
+    $OUT .= '\textbf{' . emt('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 ? emt('Terms') . ': ' . emt($terms) : '' --@]\\
+[@-- $po_line --@]\\
+\end{flushright}
+\end{minipage}}
+\vspace{1.5cm}
+%
+[@-- $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*{ ';
+      if ($section->{'location'}) {
+        $OUT .= $section->{'location'}{'label_prefix'}. ': '
+          if length($section->{'location'}{'label_prefix'});
+        $OUT .= $section->{'location'}{'address1'};
+        $OUT .= ', ' . $section->{'location'}{'address2'}
+          if length($section->{'location'}{'address2'});
+        $OUT .= ', ' .
+                $section->{'location'}{'city'} . ', ' .
+                $section->{'location'}{'state'} . '~' .
+                $section->{'location'}{'zip'};
+      } elsif ( $section->{'description'} ) {
+        $OUT .= ($section->{'description'});
+      } else {
+        $OUT .= emt('Charges');
+      }
+      $OUT .= '}\\\\';
+      if ($section->{header_generator}) {
+        $OUT .= &{$section->{header_generator}}();
+      } elsif ( $section->{usage_section} ) {
+        $OUT .= '\FSusagehead';
+      } else {
+        $OUT .= '\FShead';
+      }
+      $OUT .= '\endfirsthead';
+      $OUT .= '\multicolumn{7}{r}{\rule{0pt}{2.5ex}'.emt('Continued from previous page').'}\\\\';
+      if ($section->{header_generator}) {
+        $OUT .= &{$section->{header_generator}}();
+      } elsif ( $section->{usage_section} ) {
+        $OUT .= '\FSusagehead';
+      } else {
+        $OUT .= '\FShead';
+      }
+      $OUT .= '\endhead';
+      $OUT .= '\multicolumn{7}{r}{\rule{0pt}{2.5ex}'.emt('Continued on next page...').'}\\\\';
+      $OUT .= '\endfoot';
+      $OUT .= '\hline';
+
+      if (scalar(@sections) > 1 and !$section->{no_subtotal}) {
+        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";
+          }
+        }
+      #}
+
+      $OUT .= '\hline';
+      $OUT .= '\endlastfoot';
+
+      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" if (($line->{'ref'} || 0) ne $lastref);
+        if ($section->{description_generator}) {
+          $OUT .= &{$section->{description_generator}}($line);
+        } elsif ($section->{usage_section}) {
+          my $minutes = sprintf('%d', $line->{'duration'} / 60);
+          my $seconds = $line->{'duration'} % 60;
+          $OUT .= '\FSusagedesc
+            {' . $line->{'description'} . '}
+            {' . $line->{'quantity'} . '}
+            {' . $minutes . 'm ' . $seconds . 's' . '}
+            {' . $line->{'amount'} . '}';
+        } else {
+          $OUT .= '\FSdesc'.
+                  '{}'.
+                  '{' . $line->{'description'} . '}' ;
+          if ( $unitprices and length($line->{'unit_amount'}) ) {
+            # then show the unit amount and quantity
+            $OUT .=
+                '{\\dollar' . $line->{'unit_amount'} . '}'.
+                '{'         . $line->{'quantity'}    . '}';
+          } else {
+            # leave those columns blank
+            $OUT .= '{}{}';
+          }
+          $OUT .= '{\\dollar' . $line->{'amount'} . "}${rowbreak}\n";
+        }
+        $lastref = $line->{'ref'} || 0;
+
+        foreach my $ext_desc (@$ext_description) {
+          if ($section->{extended_description_generator}) {
+            $OUT .= &{$section->{extended_description_generator}}($ext_desc);
+          } elsif ( $ext_desc !~ /[^\\]&/ ) {
+            $OUT .= '\FSextdesc{' . $ext_desc . "}$rowbreak\n";
+          } else { # call detail
+            $OUT .= '\FScalldetail{' . $ext_desc . "}$rowbreak\n";
+          }
+        }
+
+      }
+
+      $OUT .= '\end{longtable}';
+    }
+    if ($section->{'posttotal'}) {
+      $OUT .= '\begin{flushright}';
+      $OUT .= '\normalfont\large\bfseries\textsc{'. $section->{'posttotal'}. '}\\\\';
+      $OUT .= '\\end{flushright}';
+    }
+  }
+
+--@]
+[@--
+
+  my @location_summary_sections =
+    grep {
+      ref $_->{location}
+      && $_->{locationnum}
+      && $_->{description}
+      && $_->{description} ne $finance_section
+    } @sections;
+  if ( $multisection eq 'location' && scalar(@location_summary_sections) > 1 ) {
+
+$OUT .= '
+      \hline
+      \section*{}
+      \captionsetup{singlelinecheck=false,justification=raggedright,font={Large,sc,bf}}
+      \ifthenelse{\equal{\thepage}{1}}{\setlength{\LTextracouponspace}{\extracouponspace}}{\setlength{\LTextracouponspace}{0pt}}
+
+      \begin{longtable}{cllllllr}
+      \caption*{ '. emt('Summary of New Charges by Location') .' }
+      \\\\
+
+      \hline
+      \rule{0pt}{2.5ex}
+      \makebox[1.4cm]{} &
+      \multicolumn{6}{l}{
+        \truncate{13.0cm}{\textbf{'. emt('Location') .'}}
+      } &
+      \makebox[1.6cm][r]{\textbf{'. emt('Amount') .'}} \\\\
+      \hline
+
+      \endfirsthead
+      \multicolumn{7}{r}{\rule{0pt}{2.5ex}'. emt('Continued from previous page') .'}
+      \\
+      \FShead
+      \endhead
+      \multicolumn{7}{r}{\rule{0pt}{2.5ex}'. emt('Continued on next page...') .'}
+      \\
+      \endfoot
+      \hline
+      \endlastfoot
+      \hline
+    ';
+
+    for my $section (@location_summary_sections) {
+      $OUT.= '
+        \rule{0pt}{2.5ex}
+        \makebox[1.4cm]{} &
+        \multicolumn{6}{l}{
+          \truncate{12.0cm}{\textbf{'. $section->{description} .'}}
+        } &
+        \makebox[1.6cm][r]{\textbf{'. $section->{subtotal} .'}} \\\\
+      ';
+    }
+
+    $OUT .= '\end{longtable}';
+  }
+--@]
+
+\vfill
+\begin{minipage}[t]{\textwidth}
+  [@-- length($summary)
+         ? ''
+        : ( $smallernotes
+              ? '\scriptsize{ '.$notes.' }'
+              : $notes
+          )
+  --@]
+  [@-- $coupon ? '\ifthenelse{\equal{\thepage}{1}}{\rule{0pt}{\extracouponspace}}{}' : '' --@]
+\end{minipage}
+\end{document}
diff --git a/conf/invoice_latexcoupon b/conf/invoice_latexcoupon
index 238022680..861648129 100644
--- a/conf/invoice_latexcoupon
+++ b/conf/invoice_latexcoupon
@@ -1,37 +1,38 @@
-Detach and return this remittance form with your payment.\\
-\begin{tabular}{ll}
-\begin{tabular}{ll}
-\returninset
-\begin{tabular}{ll}
-  \makebox{ \includegraphics{[@-- $logo_file --@]}} & [@-- $verticalreturnaddress ? '\\\\' : '' --@]
-  \begin{minipage}[b]{5.5cm}
-[@-- $returnaddress --@]
-    \end{minipage}\\
-\end{tabular}&
-\begin{tabular}{r@{: }lr}
-Invoice date & \textbf{[@-- $date --@]} & \multirow{4}*{[@-- $verticalreturnaddress ? '\\rule{1.5cm}{0cm}' : '' --@]
-\makebox{
-\begin{minipage}[t]{7.0cm}
-\textbf{[@-- $payname --@]}\\
-\addressline{[@-- $company --@]}
-\addressline{[@-- $address1 --@]}
-\addressline{[@-- $address2 --@]}
-\addressline{[@-- $city --@], [@-- $state --@]~~[@-- $zip --@]}
-\addressline{[@-- $country --@]}
-[@-- $barcode_file ? '\\\\ \includegraphics{'.$barcode_file.'}' : "\\" --@]
-\end{minipage}}}\\
-Customer\#& \textbf{[@-- $custnum --@]} & \\
-Total Due & \textbf{[@-- $balance --@]} & \\
-\rule{0pt}{[@-- defined($amountenclosedsep) ? $amountenclosedsep : '2.25em' --@]}Amount Enclosed & \rule{2cm}{1pt}& \\
-\end{tabular}\\
-\rule{0pt}{[@-- defined($coupontoaddresssep) ? $coupontoaddresssep : '1in' --@]} &\\
-\end{tabular}\\
-\begin{tabular}{ll}
-\addressinset \rule{0.5cm}{0cm} &
-\makebox{
-\begin{minipage}[t]{7.0cm}
-[@-- $addcompanytoaddress ? $company_name. '\\\\' : '' --@][@-- $returnaddress --@]
-\end{minipage}}
-\hfill
-\end{tabular}\\
-\end{tabular}\\
+[@-- ($couponlocation eq "bottom") ? 'Detach and return this remittance form with your payment.\\' : '' --@]
+\begin{tabular}{ll}
+\begin{tabular}{ll}
+\returninset
+\begin{tabular}{ll}
+  \makebox{ \includegraphics{[@-- $logo_file --@]}} & [@-- $verticalreturnaddress ? '\\\\' : '' --@]
+  \begin{minipage}[b]{5.5cm}
+[@-- $returnaddress --@]
+    \end{minipage}\\
+\end{tabular}&
+\begin{tabular}{r@{: }lr}
+Invoice date & \textbf{[@-- $date --@]} & \multirow{4}*{[@-- $verticalreturnaddress ? '\\rule{1.5cm}{0cm}' : '' --@]
+\makebox{
+\begin{minipage}[t]{7.0cm}
+\textbf{[@-- $payname --@]}\\
+\addressline{[@-- $company --@]}
+\addressline{[@-- $address1 --@]}
+\addressline{[@-- $address2 --@]}
+\addressline{[@-- $city --@], [@-- $state --@]~~[@-- $zip --@]}
+\addressline{[@-- $country --@]}
+[@-- $barcode_file ? '\\\\ \includegraphics{'.$barcode_file.'}' : "\\" --@]
+\end{minipage}}}\\
+Customer\#& \textbf{[@-- $custnum --@]} & \\
+Total Due & \textbf{[@-- $balance --@]} & \\
+\rule{0pt}{[@-- defined($amountenclosedsep) ? $amountenclosedsep : '2.25em' --@]}Amount Enclosed & \rule{2cm}{1pt}& \\
+\end{tabular}\\
+\rule{0pt}{[@-- defined($coupontoaddresssep) ? $coupontoaddresssep : '1in' --@]} &\\
+\end{tabular}\\
+\begin{tabular}{ll}
+\addressinset \rule{0.5cm}{0cm} &
+\makebox{
+\begin{minipage}[t]{7.0cm}
+[@-- $addcompanytoaddress ? $company_name. '\\\\' : '' --@][@-- $returnaddress --@]
+\end{minipage}}
+\hfill
+\end{tabular}\\
+\end{tabular}\\
+[@-- ($couponlocation eq "top") ? ' \centerline{Detach and return this remittance form with your payment. }\\\\' : '' --@]
\ No newline at end of file

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/Conf.pm            |   12 +
 FS/FS/Template_Mixin.pm  |    1 +
 conf/invoice_latex       | 1051 +++++++++++++++++++++++-----------------------
 conf/invoice_latexcoupon |   75 ++--
 4 files changed, 584 insertions(+), 555 deletions(-)





More information about the freeside-commits mailing list