diff options
author | ivan <ivan> | 2008-03-30 01:26:13 +0000 |
---|---|---|
committer | ivan <ivan> | 2008-03-30 01:26:13 +0000 |
commit | 18aac042442f4ad51e22dc5ffd070865eb92d38b (patch) | |
tree | 635eff845548023af395e72b8ed0d0dd6e705b22 /FS/FS | |
parent | d67dec224bbe9d8d7da71159e3f38477548224d8 (diff) |
fix missing backslash preventing ancient invoice template includes from working, whew! and spiffied up the error reporting on template compile problems, since they're bound to happen when folks edit
Diffstat (limited to 'FS/FS')
-rw-r--r-- | FS/FS/Conf.pm | 5 | ||||
-rw-r--r-- | FS/FS/cust_bill.pm | 45 |
2 files changed, 28 insertions, 22 deletions
diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm index 9f607eda5..94f2f0579 100644 --- a/FS/FS/Conf.pm +++ b/FS/FS/Conf.pm @@ -175,11 +175,12 @@ sub config_orbase { =item key_orbase KEY SUFFIX If the config value KEY_SUFFIX exists, returns KEY_SUFFIX, otherwise returns -KEY. Useful for which exact configuration option is returned by config_orbase. +KEY. Useful for determining which exact configuration option is returned by +config_orbase. =cut -sub configkey_orbase { +sub key_orbase { my $self = shift; #no compat for this...return $self->_usecompat('config_orbase', @_) if use_confcompat; diff --git a/FS/FS/cust_bill.pm b/FS/FS/cust_bill.pm index 0bc084d8b..11e198d7e 100644 --- a/FS/FS/cust_bill.pm +++ b/FS/FS/cust_bill.pm @@ -1635,7 +1635,7 @@ sub print_generic { $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 ) { @@ -1653,7 +1653,7 @@ sub print_generic { ); $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 @@ -1863,33 +1863,38 @@ sub print_generic { #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 ); |