X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FTemplate_Mixin.pm;h=ebc977a352217864cdd760b12b88e16438582efc;hb=9e7de7d0c00d79c9616c5584213a25e2ca41b5b3;hp=346e78167c1e96e1792fa13b0a67cd022b103c39;hpb=be2a6e7068337aa57b04bd7fa88090002d79a64b;p=freeside.git diff --git a/FS/FS/Template_Mixin.pm b/FS/FS/Template_Mixin.pm index 346e78167..ebc977a35 100644 --- a/FS/FS/Template_Mixin.pm +++ b/FS/FS/Template_Mixin.pm @@ -346,8 +346,8 @@ sub print_generic { if ( $format eq 'latex' && grep { /^%%Detail/ } @invoice_template ) { #change this to a die when the old code is removed - # it's been almost ten years, changing it to a die. - die "old-style invoice template $templatefile; ". + # it's been almost ten years, changing it to a die on the next release. + warn "old-style invoice template $templatefile; ". "patch with conf/invoice_latex.diff or use new conf/invoice_latex*\n"; #$old_latex = 'true'; #@invoice_template = _translate_old_latex_format(@invoice_template); @@ -1856,8 +1856,15 @@ sub terms { my $cust_main = $self->cust_main; return $cust_main->invoice_terms if $cust_main && $cust_main->invoice_terms; + my $agentnum = ''; + if ( $cust_main ) { + $agentnum = $cust_main->agentnum; + } elsif ( my $prospect_main = $self->prospect_main ) { + $agentnum = $prospect_main->agentnum; + } + #use configured default - $conf->config('invoice_default_terms') || ''; + $conf->config('invoice_default_terms', $agentnum) || ''; } sub due_date { @@ -1891,8 +1898,8 @@ sub balance_due_date { my $self = shift; my $conf = $self->conf; my $duedate = ''; - if ( $conf->exists('invoice_default_terms') - && $conf->config('invoice_default_terms')=~ /^\s*Net\s*(\d+)\s*$/ ) { + my $terms = $self->terms; + if ( $terms =~ /^\s*Net\s*(\d+)\s*$/ ) { $duedate = $self->time2str_local('rdate', $self->_date + ($1*86400) ); } $duedate; @@ -2631,14 +2638,14 @@ sub _items_cust_bill_pkg { # and location labels my @b = (); # accumulator for the line item hashes that we'll return - my ($s, $r, $u, $d) = ( undef, undef, undef ); + my ($s, $r, $u, $d) = ( undef, undef, undef, undef ); # the 'current' line item hashes for setup, recur, usage, discount foreach my $cust_bill_pkg ( @$cust_bill_pkgs ) { # if the current line item is waiting to go out, and the one we're about # to start is not bundled, then push out the current one and start a new # one. - foreach ( $s, $r, ($opt{skip_usage} ? () : $u ) , $d ) { + foreach ( $s, $r, ($opt{skip_usage} ? () : $u ), $d ) { if ( $_ && !$cust_bill_pkg->hidden ) { $_->{amount} = sprintf( "%.2f", $_->{amount} ); $_->{amount} =~ s/^\-0\.00$/0.00/; @@ -3040,6 +3047,15 @@ sub _items_cust_bill_pkg { or ( $type eq 'R' and $cust_bill_pkg->unitrecur > 0 ) ) { + # the line item hashref for the line that will show the original + # price + # (use the recur or single line for the package, unless we're + # showing a setup line for a package with no recurring fee) + my $active_line = $r; + if ( $type eq 'S' ) { + $active_line = $s; + } + my @discounts = $cust_bill_pkg->cust_bill_pkg_discount; # special case: if there are old "discount details" on this line # item, don't show discount line items @@ -3054,23 +3070,18 @@ sub _items_cust_bill_pkg { $cust_bill_pkg->billpkgnum."\n" if $DEBUG; my $discount_amount = sum( map {$_->amount} @discounts ); - my $orig_amount = $cust_bill_pkg->setup + $cust_bill_pkg->recur - + $discount_amount; # if multiple discounts apply to the same package, how to display # them? ext_description lines, apparently + # + # # discount amounts are negative if ( $d and $cust_bill_pkg->hidden ) { - $d->{amount} += $discount_amount; - $d->{orig_amount} += $orig_amount; + $d->{amount} -= $discount_amount; } else { my @ext; - # make a placeholder for the original price, if necessary - # (if unit prices are enabled, it won't be necessary) - push @ext, '' if !$conf->exists('invoice-unitprice'); $d = { _is_discount => 1, - description => $self->mt('Discount included'), - amount => $discount_amount, - orig_amount => $orig_amount, + description => $self->mt('Discount'), + amount => -1 * $discount_amount, ext_description => \@ext, }; foreach my $cust_bill_pkg_discount (@discounts) { @@ -3079,12 +3090,10 @@ sub _items_cust_bill_pkg { } } - # update the placeholder to show the original price in the - # first ext_description line - if ( !$conf->exists('invoice-unitprice') ) { - $d->{ext_description}->[0] = - sprintf('Original price: %.2f', $d->{orig_amount}); - } + # update the active line (before the discount) to show the + # original price (whether this is a hidden line or not) + $active_line->{amount} += $discount_amount; + } # if there are any discounts } # if this is an appropriate place to show discounts @@ -3109,7 +3118,7 @@ sub _items_cust_bill_pkg { } - foreach ( $s, $r, ($opt{skip_usage} ? () : $u, $d ) ) { + foreach ( $s, $r, ($opt{skip_usage} ? () : $u ), $d ) { if ( $_ ) { $_->{amount} = sprintf( "%.2f", $_->{amount} ), if exists($_->{amount});