[freeside-users] TEX invoice tweaking
Vlad Sedov
stereomind at gmail.com
Sat Oct 7 09:36:12 PDT 2006
I played around with it some and figured out how to put the tear-off section
at the top, replacing the huge "INVOICE" block.
The code is ugly, but it works...
Vlad
--------cut here----------
\documentclass[letterpaper]{article}
\usepackage{fancyhdr,lastpage,ifthen,longtable,afterpage}
\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
\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{\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}
% 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}}
% 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{[@-- $conf_dir --@]/logo.eps} &
\begin{minipage}[b]{5.5cm}
[@-- $returnaddress --@]
\end{minipage}
\end{tabular}
}
}
{ % ... pages
%\includegraphics{[@-- $conf_dir --@]/logo.eps} % Uncomment if you
want the logo on all pages.
}
}
\fancyhead[R]{
\ifthenelse{\equal{\thepage}{1}}
{ % First page
\begin{tabular}{rcl}
Invoice date & & Invoice number \\
\vspace{0.2cm}
\textbf{[@-- $date --@]} & & \textbf{[@-- $invnum --@]} \\\hline
\rule{0pt}{3ex}
\textsc{Amount Due:} & \textsc{[@-- foreach my $line
(@total_items) { $OUT = $line->{'total_amount'};}; --@]} & \\
\textsc{Amount Enclosed:} & \textsc{............} & \\
\vspace{-0.2cm}
& & \\\hline
\end{tabular}
}
{ % ... pages
\small{
\begin{tabular}{ll}
Invoice date & Invoice number\\
\textbf{[@-- $date --@]} & \textbf{[@-- $invnum --@]}\\
\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 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
%
%% 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} &
\makebox{
\begin{minipage}[t]{5.0cm}
\vspace{0.25cm}
\textbf{[@-- $payname --@]}\\
\addressline{[@-- $company --@]}
\addressline{[@-- $address1 --@]}
\addressline{[@-- $address2 --@]}
\addressline{[@-- $city --@], [@-- $state --@]~~[@-- $zip --@]}
\addressline{[@-- $country --@]}
\rule{0pt}{8.5ex}
\textsc{....................................................................................................................................................}
\end{minipage}}
\end{tabular}
\hfill
\makebox{
\begin{minipage}[t]{6.4cm}
\begin{flushright}
Terms: [@-- $terms --@]\\
[@-- $po_line --@]\\
\end{flushright}
\end{minipage}}
\vspace{0.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
[@--
foreach my $line (@total_items) {
$OUT .= '\FStotaldesc{' . $line->{'total_item'} . '}' .
'{' . $line->{'total_amount'} . '}' . "\n";
}
--@]
\hline
\endlastfoot
[@--
foreach my $line (@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";
}
}
--@]
\end{longtable}
\vfill
[@-- $notes --@]
\end{document}
-----cut here-------
On 10/5/06, Richard Siddall <richard.siddall at elirion.net> wrote:
>
> Vlad Sedov wrote:
> > I'm trying to figure out how to add a "tear-off" section to the LaTeX
> > version of the invoice that would include the "balance due" and "amount
> > enclosed" lines on the bottom of the invoice. Any starting points,
> anyone?
> > This may be a good option to include in a release some day perhaps?
>
> It's on my to-do list, but I won't get to it any time soon. I haven't
> done anything on it other than browsing around the TeX code a bit, and
> coming up with a long list of "nice to have features" on the tear-off.
>
> I do seem to recall looking at the Perl code to try to figure out how to
> adjust the page length to allow for the space taken up by the tear-off.
>
> I'd probably change to the tear-off version of the invoice template if
> both that and the current version came with future releases of Freeside.
>
> Regards,
>
> Richard.
>
> _______________________________________________
> freeside-users mailing list
> freeside-users at sisd.com
> http://420.am/cgi-bin/mailman/listinfo/freeside-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://420.am/pipermail/freeside-users/attachments/20061007/664b7692/attachment.htm
More information about the freeside-users
mailing list