summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMitch Jackson <mitch@freeside.biz>2019-06-12 03:22:57 -0400
committerMitch Jackson <mitch@freeside.biz>2019-06-12 03:22:57 -0400
commit4e282b89c158949c1726f044e0102e126fbf5bf2 (patch)
tree6a577d75c0932126c2cf3e576e7dddc627390c22
parentbe2ed6c905de5b480b370e89f8092d8d21ef2a64 (diff)
RT# 80488 Ensure WA distrct taxes are properly applied
-rw-r--r--FS/FS/TaxEngine/internal.pm20
-rw-r--r--FS/FS/cust_main/Billing.pm20
2 files changed, 38 insertions, 2 deletions
diff --git a/FS/FS/TaxEngine/internal.pm b/FS/FS/TaxEngine/internal.pm
index 6fb1ca7..d680af8 100644
--- a/FS/FS/TaxEngine/internal.pm
+++ b/FS/FS/TaxEngine/internal.pm
@@ -39,10 +39,28 @@ sub add_sale {
my @taxes = (); # entries are cust_main_county objects
my %taxhash_elim = %taxhash;
my @elim = qw( district city county state );
+
+ # WA state district city names are not stable in the WA tax tables
+ # Allow districts to match with just a district id
+ if ( $taxhash{district} ) {
+ @taxes = qsearch( cust_main_county => {
+ district => $taxhash{district},
+ taxclass => $taxhash{taxclass},
+ });
+ if ( !scalar(@taxes) && $taxhash{taxclass} ) {
+ qsearch( cust_main_county => {
+ district => $taxhash{district},
+ taxclass => '',
+ });
+ }
+ }
+
do {
#first try a match with taxclass
- @taxes = qsearch( 'cust_main_county', \%taxhash_elim );
+ if ( !scalar(@taxes) ) {
+ @taxes = qsearch( 'cust_main_county', \%taxhash_elim );
+ }
if ( !scalar(@taxes) && $taxhash_elim{'taxclass'} ) {
#then try a match without taxclass
diff --git a/FS/FS/cust_main/Billing.pm b/FS/FS/cust_main/Billing.pm
index 5f8dd9b..aadc8e1 100644
--- a/FS/FS/cust_main/Billing.pm
+++ b/FS/FS/cust_main/Billing.pm
@@ -1649,10 +1649,28 @@ sub _handle_taxes {
my @taxes = (); # entries are cust_main_county objects
my %taxhash_elim = %taxhash;
my @elim = qw( district city county state );
+
+ # WA state district city names are not stable in the WA tax tables
+ # Allow districts to match with just a district id
+ if ( $taxhash{district} ) {
+ @taxes = qsearch( cust_main_county => {
+ district => $taxhash{district},
+ taxclass => $taxhash{taxclass},
+ });
+ if ( !scalar(@taxes) && $taxhash{taxclass} ) {
+ qsearch( cust_main_county => {
+ district => $taxhash{district},
+ taxclass => '',
+ });
+ }
+ }
+
do {
#first try a match with taxclass
- @taxes = qsearch( 'cust_main_county', \%taxhash_elim );
+ if ( !scalar(@taxes) ) {
+ @taxes = qsearch( 'cust_main_county', \%taxhash_elim );
+ }
if ( !scalar(@taxes) && $taxhash_elim{'taxclass'} ) {
#then try a match without taxclass