summaryrefslogtreecommitdiff
path: root/FS/FS
diff options
context:
space:
mode:
authorivan <ivan>2008-03-30 01:26:13 +0000
committerivan <ivan>2008-03-30 01:26:13 +0000
commit18aac042442f4ad51e22dc5ffd070865eb92d38b (patch)
tree635eff845548023af395e72b8ed0d0dd6e705b22 /FS/FS
parentd67dec224bbe9d8d7da71159e3f38477548224d8 (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.pm5
-rw-r--r--FS/FS/cust_bill.pm45
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 );