From: jeff Date: Mon, 2 Jun 2008 11:17:20 +0000 (+0000) Subject: typeset tear-off remittance coupon X-Git-Tag: freeside_1_7_4rc1~324 X-Git-Url: http://git.freeside.biz/gitweb/?a=commitdiff_plain;h=f7f6eb47c07f0280cb7f73f3dd42ffa423931a7d;p=freeside.git typeset tear-off remittance coupon --- diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm index c36ce5ee5..4a1760fd1 100644 --- a/FS/FS/Conf.pm +++ b/FS/FS/Conf.pm @@ -697,6 +697,13 @@ worry that config_items is freeside-specific and icky. 'type' => 'textarea', }, + { + 'key' => 'invoice_latexcoupon', + 'section' => 'billing', + 'description' => 'Remittance coupon for LaTeX typeset PostScript invoices.', + 'type' => 'textarea', + }, + { 'key' => 'invoice_latexreturnaddress', 'section' => 'billing', diff --git a/FS/FS/cust_bill.pm b/FS/FS/cust_bill.pm index 35daea726..db811c50b 100644 --- a/FS/FS/cust_bill.pm +++ b/FS/FS/cust_bill.pm @@ -1810,6 +1810,7 @@ sub print_latex { 'terms' => $conf->config('invoice_default_terms') || 'Payable upon receipt', #'notes' => join("\n", $conf->config('invoice_latexnotes') ), 'conf_dir' => "$FS::UID::conf_dir/conf.$FS::UID::datasrc", + 'balance' => $balance_due, ); my $countrydefault = $conf->config('countrydefault') || 'US'; @@ -1828,6 +1829,28 @@ sub print_latex { warn "invoice notes: ". $invoice_data{'notes'}. "\n" if $DEBUG; + #do variable substitution in coupon + foreach my $include (qw( coupon )) { + + my @inc_src = $conf->config_orbase("invoice_latex$include", $template); + + my $inc_tt = new Text::Template ( + TYPE => 'ARRAY', + SOURCE => [ map "$_\n", @inc_src ], + DELIMITERS => [ '[@--', '--@]' ], + ) or die "Can't create new Text::Template object: $Text::Template::ERROR"; + + unless ( $inc_tt->compile() ) { + my $error = "Can't compile $include template: $Text::Template::ERROR\n"; + warn $error. "Template:\n". join('', map "$_\n", @inc_src); + die $error; + } + + $invoice_data{$include} = $inc_tt->fill_in( HASH => \%invoice_data ); + + $invoice_data{$include} =~ s/\n+$// + } + $invoice_data{'footer'} =~ s/\n+$//; $invoice_data{'smallfooter'} =~ s/\n+$//; $invoice_data{'notes'} =~ s/\n+$//; diff --git a/conf/invoice_latex b/conf/invoice_latex index e3feeef33..442965a3c 100644 --- a/conf/invoice_latex +++ b/conf/invoice_latex @@ -19,7 +19,7 @@ \documentclass[letterpaper]{article} -\usepackage{fancyhdr,lastpage,ifthen,longtable,afterpage} +\usepackage{fancyhdr,lastpage,ifthen,longtable,afterpage,multirow,bigstrut} \usepackage{graphicx} % required for logo graphic \addtolength{\voffset}{-0.0cm} % top margin to top of header @@ -38,6 +38,19 @@ \renewcommand{\headrulewidth}{0pt} \renewcommand{\footrulewidth}{1pt} +\renewcommand{\footrule}{ +[@-- + $coupon ? '\ifthenelse{\equal{\thepage}{1}}' : ''; +--@] + { + } + { + \vbox to 0pt{\rule{\headwidth}{\footrulewidth}\vss} + } +} + +\newcommand{\extracouponspace}{4.8cm} + % Adjust the inset of the mailing address \newcommand{\addressinset}[1][]{\hspace{1.0cm}} @@ -60,9 +73,16 @@ \fancyfoot[C]{ \ifthenelse{\equal{\thepage}{1}} { % First page - \small{ +[@-- + if ($coupon) { + $OUT .= '\vspace{-\extracouponspace}'; + $OUT .= '\rule[0.5em]{\textwidth}{\footrulewidth}\\\\'; + $OUT .= $coupon; + } + ''; +--@] \small{ [@-- $footer --@] - } + }[@-- $coupon ? '\vspace{\extracouponspace}' : '' --@] } { % ... pages \small{ @@ -165,6 +185,7 @@ % % % +[@-- $coupon ? '\enlargethispage{-\extracouponspace}' : '' --@] \begin{tabular}{ll} \addressinset \rule{0cm}{0cm} & \makebox{ diff --git a/conf/invoice_latexcoupon b/conf/invoice_latexcoupon new file mode 100644 index 000000000..e7c5dee6e --- /dev/null +++ b/conf/invoice_latexcoupon @@ -0,0 +1,33 @@ +Detach and return this remittance form with your your payment.\\ +\begin{tabular}{ll} +\returninset +\begin{tabular}{ll} + \makebox{ \includegraphics{[@-- $conf_dir --@]/logo.eps}} & + \begin{minipage}[b]{5.5cm} +[@-- $returnaddress --@] + \end{minipage} +\end{tabular}& +\begin{tabular}{r@{: }lr} +Invoice date & \textbf{[@-- $date --@]} & \multirow{4}*{ +\makebox{ +\begin{minipage}[t]{5.0cm} +\textbf{[@-- $payname --@]}\\ +\addressline{[@-- $company --@]} +\addressline{[@-- $address1 --@]} +\addressline{[@-- $address2 --@]} +\addressline{[@-- $city --@], [@-- $state --@]~~[@-- $zip --@]} +\addressline{[@-- $country --@]} +\end{minipage}}}\\ +Customer\#& \textbf{[@-- $custnum --@]} & \\ +Total Due & \textbf{[@-- $balance --@]} & \\ +\rule{0pt}{2.25em}Amount Enclosed & \rule{2cm}{1pt}& \\ +\end{tabular}\\ +\rule{0pt}{1cm} &\\ +\begin{tabular}{ll} +\addressinset \rule{0.5cm}{0cm} & +\makebox{ +\begin{minipage}[t]{5.0cm} +[@-- $returnaddress --@] +\end{minipage}} +\end{tabular}\\ +\end{tabular}\\