From 9ceac8029d24a9262d3ea98aa840108fd7bd70aa Mon Sep 17 00:00:00 2001 From: Mark Wells Date: Tue, 3 Feb 2015 11:44:01 -0800 Subject: [PATCH] make non-package fees appear in invoice spools, #29824, #25899 --- FS/FS/Template_Mixin.pm | 11 +++++++++-- FS/FS/cust_bill.pm | 9 ++++++++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/FS/FS/Template_Mixin.pm b/FS/FS/Template_Mixin.pm index e26592cee..d8e46c5ab 100644 --- a/FS/FS/Template_Mixin.pm +++ b/FS/FS/Template_Mixin.pm @@ -2830,6 +2830,8 @@ sub _items_fee { my $self = shift; my %options = @_; my @cust_bill_pkg = grep { $_->feepart } $self->cust_bill_pkg; + my $escape_function = $options{escape_function}; + my @items; foreach my $cust_bill_pkg (@cust_bill_pkg) { # cache this, so we don't look it up again in every section @@ -2865,12 +2867,17 @@ sub _items_fee { foreach (sort keys(%base_invnums)) { next if $_ == $self->invnum; push @ext_desc, - $self->mt('from invoice \\#[_1] on [_2]', $_, $base_invnums{$_}); + &{$escape_function}( + $self->mt('from invoice #[_1] on [_2]', $_, $base_invnums{$_}) + ); } + my $desc = $part_fee->itemdesc_locale($self->cust_main->locale); + $desc = &{$escape_function}($desc); + push @items, { feepart => $cust_bill_pkg->feepart, amount => sprintf('%.2f', $cust_bill_pkg->setup + $cust_bill_pkg->recur), - description => $part_fee->itemdesc_locale($self->cust_main->locale), + description => $desc, ext_description => \@ext_desc # sdate/edate? }; diff --git a/FS/FS/cust_bill.pm b/FS/FS/cust_bill.pm index 888e88bb8..068d0d1d3 100644 --- a/FS/FS/cust_bill.pm +++ b/FS/FS/cust_bill.pm @@ -1900,7 +1900,14 @@ sub print_csv { if ( lc($opt{'format'}) eq 'billco' ) { my $lineseq = 0; - foreach my $item ( $self->_items_pkg ) { + my %items_opt = ( format => 'template', + escape_function => sub { shift } ); + # I don't know what characters billco actually tolerates in spool entries. + # Text::CSV will take care of delimiters, though. + + my @items = ( $self->_items_pkg(%items_opt), + $self->_items_fee(%items_opt) ); + foreach my $item (@items) { my $description = $item->{'description'}; if ( $item->{'_is_discount'} and exists($item->{ext_description}[0]) ) { -- 2.11.0