diff options
author | ivan <ivan> | 2009-11-05 00:48:28 +0000 |
---|---|---|
committer | ivan <ivan> | 2009-11-05 00:48:28 +0000 |
commit | 77cf646c36fec88ddaac60a1f941ad3012136258 (patch) | |
tree | 4474c24e0f185a55c2176e3926f7aa8509c7993e | |
parent | 4bc57bcb5b74b33dd36c597d20e66686881f7ebb (diff) |
fix bad interaction between new city tax code & using taxclasses without cities, RT#6637
-rw-r--r-- | FS/FS/cust_main.pm | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/FS/FS/cust_main.pm b/FS/FS/cust_main.pm index e192ef98f..1247245db 100644 --- a/FS/FS/cust_main.pm +++ b/FS/FS/cust_main.pm @@ -3224,15 +3224,24 @@ sub _handle_taxes { $taxhash{'taxclass'} = $part_pkg->taxclass; - my @taxes = qsearch( 'cust_main_county', \%taxhash ); - + my @taxes = (); my %taxhash_elim = %taxhash; + my @elim = qw( city county state ); + do { - my @elim = qw( taxclass city county state ); - while ( !scalar(@taxes) && scalar(@elim) ) { - $taxhash_elim{ shift(@elim) } = ''; + #first try a match with taxclass @taxes = qsearch( 'cust_main_county', \%taxhash_elim ); - } + + if ( !scalar(@taxes) && $taxhash_elim{'taxclass'} ) { + #then try a match without taxclass + my %no_taxclass = %taxhash_elim; + $no_taxclass{ 'taxclass' } = ''; + @taxes = qsearch( 'cust_main_county', \%no_taxclass ); + } + + $taxhash_elim{ shift(@elim) } = ''; + + } while ( !scalar(@taxes) && scalar(@elim) ); @taxes = grep { ! $_->taxname or ! $self->tax_exemption($_->taxname) } @taxes |