X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=conf%2Finvoice_latex;h=6a81c4c2e1e4d3ee515e3adb68564d2af3084e05;hb=162a742110ede26cbb904b1f38c6a99e4b692eef;hp=e7f6d08d6b1d97b8ceb137bee33fd4c0b3cac295;hpb=d33015393db77e9bc8e0deeb1a39500b3b5a49eb;p=freeside.git diff --git a/conf/invoice_latex b/conf/invoice_latex index e7f6d08d6..6a81c4c2e 100644 --- a/conf/invoice_latex +++ b/conf/invoice_latex @@ -5,7 +5,7 @@ %% Asplen Management Ltd %% www.asplen.co.uk %% -%% Modified for Freeside by Ivan Kohler and Kristian Hoffman +%% Modified for Freeside by Kristian Hoffman %% %% Changes %% 0.1 4/12/00 Created @@ -14,7 +14,7 @@ %% 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 10/12/03 forked for Freeside; checked into CVS +%% n/a forked for Freeside; checked into CVS %% \documentclass[letterpaper]{article} @@ -22,30 +22,107 @@ \usepackage{fancyhdr,lastpage,ifthen,longtable,afterpage} \usepackage{graphicx} % required for logo graphic -\addtolength{\voffset}{-0.0in} % top margin to top of header -\addtolength{\hoffset}{-0.60in} %left margin on page -\addtolength{\topmargin}{-0.6in} % top margin to top of header -\setlength{\headheight}{1in} % height of header -\setlength{\headsep}{0.5in} % between header and text -\addtolength{\textheight}{-0.4in} % height of main text +\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 +\setlength{\headheight}{2.0cm} % height of header +\setlength{\headsep}{1.0cm} % between header and text +\setlength{\footskip}{1.0cm} % bottom of footer from bottom of text -\addtolength{\textheight}{-0.5in} % height of main text -\setlength{\footskip}{0.5in} % bottom of footer from bottom of text - -\addtolength{\textwidth}{2.1in} % width of text -\setlength{\oddsidemargin}{0in} % odd page left margin -\setlength{\evensidemargin}{0in} % even page left margin +%\addtolength{\textwidth}{2.1in} % width of text +\setlength{\textwidth}{19.5cm} +\setlength{\textheight}{19.5cm} +\setlength{\oddsidemargin}{-0.9cm} % odd page left margin +\setlength{\evensidemargin}{-0.9cm} % even page left margin \renewcommand{\headrulewidth}{0pt} \renewcommand{\footrulewidth}{1pt} - % New command for address lines i.e. skip them if blank +% 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\newline}} -\newcommand{\dollar}[1][]{\symbol{36}} % Inserts dollar symbol + +% 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 + \small{ +[@-- $footer --@] + } + } + { % ... pages + \small{ +[@-- $smallfooter --@] + } + } +} + +\fancyfoot[R]{ + \ifthenelse{\equal{\thepage}{1}} + { % First page + } + { % ... pages + \small{\thepage\ of \pageref{LastPage}} + } +} + +\fancyhead[L]{ + \ifthenelse{\equal{\thepage}{1}} + { % First page + \returninset + \makebox{ + \begin{tabular}{ll} + \includegraphics{[@-- $logo_file --@]} & + \begin{minipage}[b]{5.5cm} +[@-- $returnaddress --@] + \end{minipage} + \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} + Invoice date & Invoice \#& Customer\#\\ + \vspace{0.2cm} + \textbf{[@-- $date --@]} & \textbf{[@-- $invnum --@]} & \textbf{[@-- $custnum --@]} \\\hline + \rule{0pt}{5ex} &~~ \huge{\textsc{Invoice}} & \\ + \vspace{-0.2cm} + & & \\\hline + \end{tabular} + } + { % ... pages + \small{ + \begin{tabular}{lll} + Invoice date & Invoice \#& Customer\#\\ + \textbf{[@-- $date --@]} & \textbf{[@-- $invnum --@]} & \textbf{[@-- $custnum --@]}\\ + \end{tabular} + } + } +} \pagestyle{fancy} + %% Font options are: %% bch Bitsream Charter %% put Utopia @@ -54,107 +131,130 @@ %% ptm Times %% pcr Courier -\renewcommand{\familydefault}{phv} +\renewcommand{\familydefault}{phv} + + +% Commands for freeside description... +\newcommand{\FSdesc}[3]{ + \multicolumn{1}{c}{\rule{0pt}{2.5ex}\textbf{#1}} & + \textbf{#2} & + \multicolumn{1}{r}{\textbf{\dollar #3}}\\ +} +% ...extended description... +\newcommand{\FSextdesc}[1]{ + \multicolumn{1}{l}{\rule{0pt}{1.0ex}} & + \multicolumn{2}{l}{\small{~-~#1}}\\ +} +% ...and total line items. +\newcommand{\FStotaldesc}[2]{ + & \multicolumn{1}{l}{#1} & #2\\ +} + \begin{document} % %% Headers and footers defined for the first page -\fancyfoot[CO,CE]{\small{ -\begin{tabular}{c} -[@-- $footer --@] -\end{tabular}}} % %% The LH Heading comprising logo %% UNCOMMENT the following FOUR lines and change the path if necssary to provide a logo -\fancyhead[LO,LE]{ -\begin{tabular}{l} -\includegraphics{/usr/local/etc/freeside/conf.DBI:Pg:dbname=freeside/logo.eps} -\end{tabular}} % %% The Heading comprising isue date, customer ref & INVOICE name -\fancyhead[RO,RE]{ -\begin{tabular}{rcl} -Invoice date & & Invoice number \\ -\vspace{0.2cm} -\textbf{[@-- $date --@]} & & \textbf{[@-- $invnum --@]} \\\hline -\rule{0pt}{5ex} &~~ \huge{\textsc{Invoice}}& \\ -\vspace{-0.2cm} - & & \\\hline -\end{tabular}} % %% Header & footer changes for subsequent pages % -\afterpage{ \fancyfoot[RO,RE]{\small{\thepage\ of \pageref{LastPage}}} } -\afterpage{ \fancyfoot[CO,CE]{\small{[@-- $smallfooter --@]}} } -\afterpage{ \fancyhead[LO,LE]{\small{}} } -\afterpage{ \fancyhead[RO,RE]{\small{ -\begin{tabular}{ll} -Invoice date & Invoice number\\ -\textbf{[@-- $date --@]} & \textbf{[@-- $invnum --@]}\\ -\end{tabular}}} } % % +\begin{tabular}{ll} +\addressinset \rule{0cm}{0cm} & \makebox{ -\begin{minipage}[t]{2.9in} -\vspace{0.20in} +\begin{minipage}[t]{5.0cm} +\vspace{0.25cm} \textbf{[@-- $payname --@]}\\ \addressline{[@-- $company --@]} \addressline{[@-- $address1 --@]} \addressline{[@-- $address2 --@]} -\addressline{[@-- $city --@], [@-- $state --@] [@-- $zip --@]} +\addressline{[@-- $city --@], [@-- $state --@]~~[@-- $zip --@]} \addressline{[@-- $country --@]} \end{minipage}} +\end{tabular} \hfill \makebox{ -\begin{minipage}[t]{2.5in} +\begin{minipage}[t]{6.4cm} \begin{flushright} Terms: [@-- $terms --@]\\ [@-- $po_line --@]\\ \end{flushright} \end{minipage}} -\vspace{0.5cm} +\vspace{1.5cm} % -\section*{\textsc{Charges}} -\begin{longtable}{|c|l|r|} -\hline -\rule{0pt}{2.5ex} -\makebox[1.4cm]{\textbf{Ref}} & -\makebox[13cm][l]{\textbf{Description}} & -\makebox[2cm][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[13cm][l]{\textbf{Description}} & -\makebox[2cm][r]{\textbf{Amount}} \\ -\hline -\endhead -\multicolumn{3}{r}{\rule{0pt}{2.5ex}/cont...}\\ -\endfoot [@-- + foreach my $section ( @sections ) { + $OUT .= '\section*{\textsc{'; + $OUT .= ($section->{'description'}) ? $section->{'description'} : 'Charges'; + $OUT .= '}}\begin{longtable}{clr}'; + $OUT .= '\hline'; + $OUT .= '\rule{0pt}{2.5ex}'; + $OUT .= '\makebox[1.4cm]{\textbf{Ref}} & '; + $OUT .= '\makebox[12.8cm][l]{\textbf{Description}} & '; + $OUT .= '\makebox[2.5cm][r]{\textbf{Amount}} \\\\'; + $OUT .= '\hline'; + $OUT .= '\endfirsthead'; + $OUT .= '\multicolumn{3}{r}{\rule{0pt}{2.5ex}Continued from previous page}\\\\'; + $OUT .= '\hline'; + $OUT .= '\rule{0pt}{2.5ex}'; + $OUT .= '\makebox[1.4cm]{\textbf{Ref}} & '; + $OUT .= '\makebox[12.8cm][l]{\textbf{Description}} & '; + $OUT .= '\makebox[2.5cm][r]{\textbf{Amount}} \\\\'; + $OUT .= '\hline'; + $OUT .= '\endhead'; + $OUT .= '\multicolumn{3}{r}{\rule{0pt}{2.5ex}Continued on next page...}\\\\'; + $OUT .= '\endfoot'; + $OUT .= '\hline'; - foreach my $line (@total_items) { - $OUT .= ' & \multicolumn{1}{l}{' . $line->{'total_item'} . '} & ' . - $line->{'total_amount'} . '\\\\' . "\n"; - } + if (scalar(@sections) > 1) { + $OUT .= '\FStotaldesc{' . $section->{'description'} . ' Total}' . + '{' . $section->{'subtotal'} . '}' . "\n"; + } ---@] -\hline -\endlastfoot -[@-- + if ($section == $sections[$#sections]) { + foreach my $line (@total_items) { + $OUT .= '\FStotaldesc{' . $line->{'total_item'} . '}' . + '{' . $line->{'total_amount'} . '}' . "\n"; + } + } + + $OUT .= '\hline'; + $OUT .= '\endlastfoot'; + + 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'} . '}' . + '{' . $line->{'amount'} . "}${rowbreak}\n"; + + foreach my $ext_desc (@$ext_description) { + $ext_desc = substr($ext_desc, 0, 80) . '...' + if (length($ext_desc) > 80); + $OUT .= '\FSextdesc{' . $ext_desc . '}' . "${rowbreak}\n"; + } + + } + + $OUT .= '\end{longtable}'; - foreach my $line (@detail_items) { - $OUT .= '\rule{0pt}{2.5ex}' . $line->{'ref'} . ' &' . "\n". - '\begin{tabular}{l}' . "\n". - $line->{'description'} . '\tabularnewline' . "\n". - '\end{tabular}' . "\n". - '& \dollar ' . $line->{'amount'} . '\\\\\\hline' . "\n"; } --@] -\end{longtable} \vfill [@-- $notes --@] \end{document}