}\r
}\r
\r
-\newcommand{\extracouponspace}{4.8cm}\r
+\newcommand{\extracouponspace}{3.6cm}\r
\r
% Adjust the inset of the mailing address\r
\newcommand{\addressinset}[1][]{\hspace{1.0cm}}\r
\renewcommand{\familydefault}{phv}\r
\r
\r
-% Commands for freeside description...\r
+% Commands for freeside table header...\r
+\newcommand{\FShead}{\r
+ \hline\r
+ \rule{0pt}{2.5ex}\r
+ \makebox[1.4cm]{\textbf{Ref}} &\r
+ \makebox[2.9cm][l]{\textbf{Description}}&\r
+ \makebox[1.4cm][l]{}&\r
+ \makebox[1.4cm][l]{}&\r
+ \makebox[2.5cm][l]{}&\r
+ \makebox[2.5cm][l]{\textbf{[@-- $unitprices ? '~~Unit Price' : '' --@]}}&\r
+ \makebox[1.4cm]{\textbf{[@-- $unitprices ? '~Quantity' : '' --@]}}&\r
+ \makebox[1.6cm][r]{\textbf{Amount}} \\\r
+ \hline\r
+}\r
+\r
+% ...description...\r
\newcommand{\FSdesc}[5]{\r
\multicolumn{1}{c}{\rule{0pt}{2.5ex}\textbf{#1}} &\r
\multicolumn{4}{l}{\textbf{#2}} &\r
\hfill\r
\makebox{\r
\begin{minipage}[t]{6.4cm}\r
-\begin{flushright}\r
[@--\r
if ($ship_enable) {\r
$OUT .= '\textbf{Service Address}\\\\';\r
$OUT .= '';\r
}\r
--@]\r
+\begin{flushright}\r
Terms: [@-- $terms --@]\\\r
[@-- $po_line --@]\\\r
\end{flushright}\r
$OUT .= '\large\textsc{'. $section->{'pretotal'}. '}\\\\';\r
$OUT .= '\\end{flushright}';\r
}\r
+ $OUT .= '\pagebreak' if $section{'post_total'};\r
$OUT .= '\captionsetup{singlelinecheck=false,justification=raggedright,font={Large,sc,bf}}';\r
+ $OUT .= '\ifthenelse{\equal{\thepage}{1}}{\setlength{\LTextracouponspace}{\extracouponspace}}{\setlength{\LTextracouponspace}{0pt}}'\r
+ if $coupon;\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
- $OUT .= '\makebox[2.0cm][l]{\textbf{Description}}& ';\r
- $OUT .= '\makebox[2.0cm][l]{}& ';\r
- $OUT .= '\makebox[2.0cm][l]{}& ';\r
- $OUT .= '\makebox[2.0cm][l]{}& ';\r
- $OUT .= '\makebox[2.0cm][l]{\textbf{'. ($unitprices ? '~~Unit Price' : ''). '}}&';\r
- $OUT .= '\makebox[2.0cm]{\textbf{'. ($unitprices ? '~Quantity' : ''). '}}&';\r
- $OUT .= '\makebox[2.0cm][r]{\textbf{Amount}} \\\\';\r
- $OUT .= '\hline';\r
+ $OUT .= '\FShead';\r
$OUT .= '\endfirsthead';\r
$OUT .= '\multicolumn{7}{r}{\rule{0pt}{2.5ex}Continued from previous page}\\\\';\r
- $OUT .= '\hline';\r
- $OUT .= '\rule{0pt}{2.5ex}';\r
- $OUT .= '\makebox[1.4cm]{\textbf{Ref}} & ';\r
- $OUT .= '\makebox[2.0cm][l]{\textbf{Description}}& ';\r
- $OUT .= '\makebox[2.0cm][l]{}& ';\r
- $OUT .= '\makebox[2.0cm][l]{}& ';\r
- $OUT .= '\makebox[2.0cm][l]{}& ';\r
- $OUT .= '\makebox[2.0cm][l]{\textbf{'. ($unitprices ? '~~Unit Price' : ''). '}}&';\r
- $OUT .= '\makebox[2.0cm]{\textbf{'. ($unitprices ? '~Quantity' : ''). '}}&';\r
- $OUT .= '\makebox[2.0cm][r]{\textbf{Amount}} \\\\';\r
- $OUT .= '\hline';\r
+ $OUT .= '\FShead';\r
$OUT .= '\endhead';\r
$OUT .= '\multicolumn{7}{r}{\rule{0pt}{2.5ex}Continued on next page...}\\\\';\r
$OUT .= '\endfoot';\r
$OUT .= '\hline';\r
$OUT .= '\endlastfoot';\r
\r
+ my $lastref = 0;\r
foreach my $line (\r
grep { ( scalar( @sections ) > 1 \r
? $section->{'description'} eq $_->{'section'}->{'description'}\r
# Don't break-up small packages.\r
my $rowbreak = @$ext_description < 5 ? '*' : '';\r
\r
- $OUT .= "\\hline\n";\r
- $OUT .= '\FSdesc{' . $line->{'ref'} . '}{' . $line->{'description'} . '}' .\r
+ $OUT .= "\\hline\n" if ($line->{'ref'} && $line->{'ref'} ne $lastref);\r
+ $OUT .= '\FSdesc'.\r
+ '{' . ( $line->{'ref'} ne $lastref ? $line->{'ref'} : '' ) . '}'.\r
+ '{' . $line->{'description'} . '}' .\r
'{' . ( $unitprices ? $line->{'unit_amount'} : '' ) . '}'.\r
'{' . ( $unitprices ? $line->{'quantity'} : '' ) . '}' .\r
'{' . $line->{'amount'} . "}${rowbreak}\n";\r
+ $lastref = $line->{'ref'};\r
\r
foreach my $ext_desc (@$ext_description) {\r
if ( $ext_desc !~ /[^\\]&/ ) {\r