summaryrefslogtreecommitdiff
path: root/FS/FS/tax_rate.pm
diff options
context:
space:
mode:
authorivan <ivan>2010-11-27 23:53:54 +0000
committerivan <ivan>2010-11-27 23:53:54 +0000
commit9ecfa8b0f9e53e0da37bfcd78a8b22133312613b (patch)
tree18e6f32ef300aeb7a9e62caad1070758bd679aa9 /FS/FS/tax_rate.pm
parent756adba649caf934f50389ef89e6b2328a8d228b (diff)
with cch taxation, consider "account" taxes per- (distinct) location instead of per -customer, RT#10248
Diffstat (limited to 'FS/FS/tax_rate.pm')
-rw-r--r--FS/FS/tax_rate.pm24
1 files changed, 17 insertions, 7 deletions
diff --git a/FS/FS/tax_rate.pm b/FS/FS/tax_rate.pm
index b518a3771..ef4333ba9 100644
--- a/FS/FS/tax_rate.pm
+++ b/FS/FS/tax_rate.pm
@@ -443,20 +443,30 @@ sub taxline {
my $taxable_units = 0;
unless ($self->recurtax =~ /^Y$/i) {
- if (( $self->unittype || 0 ) == 0) {
+
+ if (( $self->unittype || 0 ) == 0) { #access line
my %seen = ();
foreach (@cust_bill_pkg) {
$taxable_units += $_->units
- unless $seen{$_->pkgnum};
- $seen{$_->pkgnum}++;
+ unless $seen{$_->pkgnum}++;
}
- }elsif ($self->unittype == 1) {
+
+ } elsif ($self->unittype == 1) { #minute
return $self->_fatal_or_null( 'fee with minute unit type' );
- }elsif ($self->unittype == 2) {
- $taxable_units = 1;
- }else {
+
+ } elsif ($self->unittype == 2) { #account
+ #$taxable_units = 1;
+ #number of distinct locations
+ my %seen = ();
+ foreach (@cust_bill_pkg) {
+ $taxable_units++
+ unless $seen{$_->cust_pkg->locationnum}++;
+ }
+
+ } else {
return $self->_fatal_or_null( 'unknown unit type in tax'. $self->taxnum );
}
+
}
#