From: ivan Date: Sun, 30 Mar 2008 01:26:13 +0000 (+0000) Subject: fix missing backslash preventing ancient invoice template includes from working,... X-Git-Tag: root_of_webpay_support~787 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=18aac042442f4ad51e22dc5ffd070865eb92d38b 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 --- 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 );