From: ivan Date: Thu, 5 Nov 2009 00:48:28 +0000 (+0000) Subject: fix bad interaction between new city tax code & using taxclasses without cities,... X-Git-Tag: root_of_svc_elec_features~699 X-Git-Url: http://git.freeside.biz/gitweb/?a=commitdiff_plain;h=77cf646c36fec88ddaac60a1f941ad3012136258;hp=4bc57bcb5b74b33dd36c597d20e66686881f7ebb;p=freeside.git fix bad interaction between new city tax code & using taxclasses without cities, RT#6637 --- 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