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 | |
| 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
| -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 ); | 
