diff options
author | Mitch Jackson <mitch@freeside.biz> | 2018-05-19 20:05:15 +0000 |
---|---|---|
committer | Mitch Jackson <mitch@freeside.biz> | 2018-05-19 18:41:32 -0500 |
commit | 9996cfd8b87a47576dbac33a04007ec42d024d23 (patch) | |
tree | 059b1ba634479d6672897f2f080bff9d1824450d /FS/FS | |
parent | fc5bf4070e3d34c6f6298fb3c61263644fa71ade (diff) |
RT# 78190 Fix taxes on fees for sectioned invoices
Fix taxes charged on a billing-event fee, such as a late fee,
displayed incorrectly on some sectioned invoices
Diffstat (limited to 'FS/FS')
-rw-r--r-- | FS/FS/Template_Mixin.pm | 1 | ||||
-rw-r--r-- | FS/FS/cust_bill_pkg.pm | 26 |
2 files changed, 25 insertions, 2 deletions
diff --git a/FS/FS/Template_Mixin.pm b/FS/FS/Template_Mixin.pm index edbb4d440..f36fb9628 100644 --- a/FS/FS/Template_Mixin.pm +++ b/FS/FS/Template_Mixin.pm @@ -3196,6 +3196,7 @@ sub _items_fee { push @items, { feepart => $cust_bill_pkg->feepart, + billpkgnum => $cust_bill_pkg->billpkgnum, amount => sprintf('%.2f', $cust_bill_pkg->setup + $cust_bill_pkg->recur), description => $desc, pkg_tax => \@pkg_tax, diff --git a/FS/FS/cust_bill_pkg.pm b/FS/FS/cust_bill_pkg.pm index f6b40f6b2..1262c3874 100644 --- a/FS/FS/cust_bill_pkg.pm +++ b/FS/FS/cust_bill_pkg.pm @@ -1881,7 +1881,29 @@ sub _pkg_tax_list { # Duplicates can be identified by billpkgtaxlocationnum column. my $self = shift; - return unless $self->pkgnum; + + my $search_selector; + if ( $self->pkgnum ) { + + # For taxes applied to normal billing items + $search_selector = + ' cust_bill_pkg_tax_location.pkgnum = ' + . dbh->quote( $self->pkgnum ); + + } elsif ( $self->feepart ) { + + # For taxes applied to fees, when the fee is not attached to a package + # i.e. late fees, billing events fees + $search_selector = + ' cust_bill_pkg_tax_location.taxable_billpkgnum = ' + . dbh->quote( $self->billpkgnum ); + + } else { + warn "_pkg_tax_list() unhandled case breaking taxes into sections"; + warn "_pkg_tax_list() $_: ".$self->$_ + for qw(pkgnum billpkgnum feepart); + return; + } map +{ billpkgtaxlocationnum => $_->billpkgtaxlocationnum, @@ -1907,7 +1929,7 @@ sub _pkg_tax_list { ' WHERE '. ' cust_bill_pkg.invnum = ' . dbh->quote( $self->invnum ) . ' AND '. - ' cust_bill_pkg_tax_location.pkgnum = ' . dbh->quote( $self->pkgnum ), + $search_selector }); } |