\r
\documentclass[letterpaper]{article}\r
\r
-\usepackage{fancyhdr,lastpage,ifthen,array,fslongtable,afterpage,caption,multirow,bigstrut}\r
+\usepackage{fancyhdr,lastpage,ifthen,array,longtable,afterpage,caption,multirow,bigstrut}\r
\usepackage{graphicx} % required for logo graphic\r
+\usepackage[utf8]{inputenc} % multilanguage support\r
+\usepackage[T1]{fontenc}\r
\r
\addtolength{\voffset}{-0.0cm} % top margin to top of header\r
\addtolength{\hoffset}{-0.6cm} % left margin on page\r
\ifthenelse{\equal{\thepage}{1}}\r
{ % First page\r
\begin{tabular}{ccc}\r
- Invoice date & Invoice \#& Customer\#\\\r
+ [@-- join(' & ', ( $no_date ? '' : emt('Invoice date') ),\r
+ ( $no_number ? '' : emt('Invoice #') ),\r
+ emt('Customer #')\r
+ )\r
+ --@]\\\r
\vspace{0.2cm}\r
\textbf{[@-- $date --@]} & \textbf{[@-- $invnum --@]} & \textbf{[@-- $custnum --@]} \\\hline\r
- \rule{0pt}{5ex} &~~ \huge{\textsc{[@-- $notice_name || 'Invoice' --@]}} & \\\r
+ \rule{0pt}{5ex} &~~ \huge{\textsc{[@-- emt($notice_name) --@]}} & \\\r
\vspace{-0.2cm}\r
& & \\\hline\r
\end{tabular}\r
{ % ... pages\r
\small{\r
\begin{tabular}{lll}\r
- Invoice date & Invoice \#& Customer\#\\\r
+ [@-- join(' & ', emt('Invoice date'), emt('Invoice #'), emt('Customer #') ) --@]\\\r
\textbf{[@-- $date --@]} & \textbf{[@-- $invnum --@]} & \textbf{[@-- $custnum --@]}\\\r
\end{tabular}\r
}\r
\r
\newcommand{\FSdescriptionlength} { [@-- $unitprices ? '8.2cm' : '12.8cm' --@] }\r
\newcommand{\FSdescriptioncolumncount} { [@-- $unitprices ? '4' : '6' --@] }\r
-\newcommand{\FSunitcolumns}{ [@-- $unitprices ? '\makebox[2.5cm][l]{\textbf{~~Unit Price}}&\makebox[1.4cm]{\textbf{~Quantity}}&' : '' --@] }\r
+\newcommand{\FSunitcolumns}{ [@-- \r
+ $unitprices\r
+ ? '\makebox[2.5cm][r]{\textbf{~~' . emt('Unit Price') . '}} &' .\r
+ '\makebox[1.4cm]{\textbf{~' . emt('Quantity') . '}} & ' \r
+ : '' --@] }\r
\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
- \multicolumn{\FSdescriptioncolumncount}{l}{\makebox[\FSdescriptionlength][l]{\textbf{Description}}}&\r
+ \makebox[1.4cm]{} &\r
+ \multicolumn{\FSdescriptioncolumncount}{l}{\makebox[\FSdescriptionlength][l]{\textbf{[@-- emt('Description') --@]}}}&\r
\FSunitcolumns\r
- \makebox[1.6cm][r]{\textbf{Amount}} \\\r
+ \makebox[1.6cm][r]{\textbf{[@-- emt('Amount') --@]}} \\\r
\hline\r
}\r
\r
\newcommand{\FSdesc}[5]{\r
\multicolumn{1}{c}{\rule{0pt}{2.5ex}\textbf{#1}} &\r
\multicolumn{[@-- $unitprices ? '4' : '6' --@]}{l}{\textbf{#2}} &\r
-[@-- $unitprices ? ' \multicolumn{1}{l}{\textbf{#3}} &'."\n".\r
+[@-- $unitprices ? ' \multicolumn{1}{r}{\textbf{#3}} &'."\n".\r
' \multicolumn{1}{r}{\textbf{#4}} &'."\n"\r
: ''\r
--@]\r
- \multicolumn{1}{r}{\textbf{\dollar #5}}\\\r
+ \multicolumn{1}{r}{\textbf{#5}}\\\r
}\r
% ...extended description...\r
\newcommand{\FSextdesc}[1]{\r
\begin{minipage}[t]{6.4cm}\r
[@--\r
if ($ship_enable) {\r
- $OUT .= '\textbf{Service Address}\\\\';\r
+ $OUT .= '\textbf{' . emt('Service Address') . '}\\\\';\r
$OUT .= "\\addressline{$ship_company}";\r
$OUT .= "\\addressline{$ship_address1}";\r
$OUT .= "\\addressline{$ship_address2}";\r
}\r
--@]\r
\begin{flushright}\r
-Terms: [@-- $terms --@]\\\r
+[@-- $terms ? emt('Terms') .": $terms" : '' --@]\\\r
[@-- $po_line --@]\\\r
\end{flushright}\r
\end{minipage}}\r
if $coupon;\r
$OUT .= '\begin{longtable}{cllllllr}';\r
$OUT .= '\caption*{ ';\r
- $OUT .= ($section->{'description'}) ? $section->{'description'}: 'Charges';\r
+ if ($section->{'location'}) {\r
+ $OUT .= $section->{'location'}{'label_prefix'}. ': '\r
+ if length($section->{'location'}{'label_prefix'});\r
+ $OUT .= $section->{'location'}{'address1'};\r
+ $OUT .= ', ' . $section->{'location'}{'address2'}\r
+ if length($section->{'location'}{'address2'});\r
+ $OUT .= ', ' .\r
+ $section->{'location'}{'city'} . ', ' .\r
+ $section->{'location'}{'state'} . '~' .\r
+ $section->{'location'}{'zip'};\r
+ } elsif ( $section->{'description'} ) {\r
+ $OUT .= ($section->{'description'});\r
+ } else {\r
+ $OUT .= emt('Charges');\r
+ }\r
$OUT .= '}\\\\';\r
if ($section->{header_generator}) {\r
$OUT .= &{$section->{header_generator}}();\r
$OUT .= '\FShead';\r
}\r
$OUT .= '\endfirsthead';\r
- $OUT .= '\multicolumn{7}{r}{\rule{0pt}{2.5ex}Continued from previous page}\\\\';\r
+ $OUT .= '\multicolumn{7}{r}{\rule{0pt}{2.5ex}'.emt('Continued from previous page').'}\\\\';\r
if ($section->{header_generator}) {\r
$OUT .= &{$section->{header_generator}}();\r
} else {\r
$OUT .= '\FShead';\r
}\r
$OUT .= '\endhead';\r
- $OUT .= '\multicolumn{7}{r}{\rule{0pt}{2.5ex}Continued on next page...}\\\\';\r
+ $OUT .= '\multicolumn{7}{r}{\rule{0pt}{2.5ex}'.emt('Continued on next page...').'}\\\\';\r
$OUT .= '\endfoot';\r
$OUT .= '\hline';\r
\r
- if (scalar(@sections) > 1) {\r
+ if (scalar(@sections) > 1 and !$section->{no_subtotal}) {\r
if ($section->{total_generator}) {\r
$OUT .= &{$section->{total_generator}}($section);\r
} else {\r
$OUT .= &{$section->{description_generator}}($line);\r
} else {\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
+ '{}'. #'{' . ( $line->{'ref'} ne $lastref ? $line->{'ref'} : '' ) . '}'.\r
+ '{' . $line->{'description'} . '}' ;\r
+ if ( $unitprices and length($line->{'unit_amount'}) ) {\r
+ # then show the unit amount and quantity\r
+ $OUT .= \r
+ '{\\dollar' . $line->{'unit_amount'} . '}'.\r
+ '{' . $line->{'quantity'} . '}';\r
+ } else {\r
+ # leave those columns blank\r
+ $OUT .= '{}{}';\r
+ }\r
+ $OUT .= '{\\dollar' . $line->{'amount'} . "}${rowbreak}\n";\r
}\r
$lastref = $line->{'ref'};\r
\r