$templatefile .= "_$template"
if length($template);
my @invoice_template = map "$_\n", $conf->config($templatefile)
- or die "cannot load config file $templatefile";
+ or die "cannot load config data $templatefile";
my $old_latex = '';
if ( $format eq 'latex' && grep { /^%%Detail/ } @invoice_template ) {
);
$text_template->compile()
- or die 'While compiling ' . $templatefile . ': ' . $Text::Template::ERROR;
+ or die "Can't compile $templatefile: $Text::Template::ERROR\n";
# additional substitution could possibly cause breakage in existing templates
#do variable substitution in notes, footer, smallfooter
foreach my $include (qw( notes footer smallfooter )) {
- my @inc_src = $conf->config_orbase("invoice_latex$include", $template );
- my $convert_map = $convert_maps{$format}{$include};
+ my $inc_file = $conf->key_orbase("invoice_${format}$include", $template);
+ my @inc_src;
+
+ if ( $conf->exists($inc_file) && length( $conf->config($inc_file) ) ) {
+
+ @inc_src = $conf->config($inc_file);
- if (
- defined( $conf->config_orbase("invoice_${format}$include", $template) )
- && length( $conf->config_orbase('invoice_${format}$include', $template) )
- ) {
- @inc_src = $conf->config_orbase("invoice_${format}$include", $template );
} else {
- @inc_src =
- map { s/\[@--/$delimiters{$format}[0]/g;
- s/--@]/$delimiters{$format}[1]/g;
- $_;
- }
- &$convert_map(
- $conf->config_orbase("invoice_latex$include", $template )
- );
+
+ $inc_file = $conf->key_orbase("invoice_latex$include", $template);
+
+ my $convert_map = $convert_maps{$format}{$include};
+
+ @inc_src = map { s/\[\@--/$delimiters{$format}[0]/g;
+ s/--\@\]/$delimiters{$format}[1]/g;
+ $_;
+ }
+ &$convert_map( $conf->config($inc_file) );
+
}
my $inc_tt = new Text::Template (
TYPE => 'ARRAY',
SOURCE => [ map "$_\n", @inc_src ],
DELIMITERS => $delimiters{$format},
- ) or die "can't create new Text::Template object: $Text::Template::ERROR";
+ ) or die "Can't create new Text::Template object: $Text::Template::ERROR";
- $inc_tt->compile()
- or die "can't compile template: $Text::Template::ERROR";
+ unless ( $inc_tt->compile() ) {
+ my $error = "Can't compile $inc_file 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 );
my @b = ();
foreach my $cust_bill_pkg ( @$cust_bill_pkg ) {
+ my $cust_pkg = $cust_bill_pkg->cust_pkg;
+
my $desc = $cust_bill_pkg->desc;
if ( $cust_bill_pkg->pkgnum > 0 ) {
if ( $cust_bill_pkg->setup != 0 ) {
my $description = $desc;
$description .= ' Setup' if $cust_bill_pkg->recur != 0;
- my @d = $cust_bill_pkg->cust_pkg->h_labels_short($self->_date);
+ my @d = $cust_pkg->h_labels_short($self->_date);
push @d, $cust_bill_pkg->details if $cust_bill_pkg->recur == 0;
push @b, {
description => $description,
pkgnum => $cust_bill_pkg->pkgnum,
amount => sprintf("%.2f", $cust_bill_pkg->recur),
ext_description =>
- [ $cust_bill_pkg->cust_pkg->h_labels_short( $cust_bill_pkg->edate,
- $cust_bill_pkg->sdate),
+ #at least until cust_bill_pkg has "past" ranges in addition to
+ #the "future" sdate/edate ones... see #3032
+ [ $cust_pkg->h_labels_short( $self->_date ),
+ #$cust_bill_pkg->edate,
+ #$cust_bill_pkg->sdate),
$cust_bill_pkg->details,
],
};