summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FS/FS/Conf.pm7
-rw-r--r--FS/FS/cust_bill.pm23
-rw-r--r--conf/invoice_latex27
-rw-r--r--conf/invoice_latexcoupon33
4 files changed, 87 insertions, 3 deletions
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
@@ -698,6 +698,13 @@ worry that config_items is freeside-specific and icky.
},
{
+ 'key' => 'invoice_latexcoupon',
+ 'section' => 'billing',
+ 'description' => 'Remittance coupon for LaTeX typeset PostScript invoices.',
+ 'type' => 'textarea',
+ },
+
+ {
'key' => 'invoice_latexreturnaddress',
'section' => 'billing',
'description' => 'Return address for LaTeX typeset PostScript invoices.',
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}\\