diff --git a/app/DataMapper/Tax/US/Rule.php b/app/DataMapper/Tax/US/Rule.php index 8dabf504dea5..c6ee52d3b0a8 100644 --- a/app/DataMapper/Tax/US/Rule.php +++ b/app/DataMapper/Tax/US/Rule.php @@ -61,25 +61,19 @@ class Rule implements RuleInterface if ($this->client->is_tax_exempt) { return $this->taxExempt(); } - else if($this->client->company->tax_data->regions->US->tax_all){ + else if($this->client->company->tax_data->regions->US->tax_all_subregions || $this->client->company->tax_data->regions->US->subregions->{$this->tax_data->geoState}->apply_tax){ - $this->tax_rate1 = $this->tax_data->taxSales * 100; - $this->tax_name1 = "{$this->tax_data->geoState} Sales Tax"; + $this->taxByType($type); return $this; } - - if($type) - return $this->taxByType($type); - + return $this; } public function taxByType($product_tax_type): self { - if(!$product_tax_type) - return $this; match($product_tax_type){ Product::PRODUCT_TYPE_EXEMPT => $this->taxExempt(), diff --git a/tests/Unit/Tax/UsTaxTest.php b/tests/Unit/Tax/UsTaxTest.php index e2299bc65da3..cb181a4a1789 100644 --- a/tests/Unit/Tax/UsTaxTest.php +++ b/tests/Unit/Tax/UsTaxTest.php @@ -91,7 +91,7 @@ class UsTaxTest extends TestCase $tax_data->seller_region = 'US'; $tax_data->seller_subregion = 'CA'; $tax_data->regions->US->has_sales_above_threshold = true; - $tax_data->regions->US->tax_all = true; + $tax_data->regions->US->tax_all_subregions = true; $company = Company::factory()->create([ 'account_id' => $this->account->id, @@ -129,6 +129,7 @@ class UsTaxTest extends TestCase 'tax_name3' => '', 'tax_rate3' => 0, 'type_id' => '1', + 'tax_id' => 1, ], ], 'tax_rate1' => 0, @@ -145,30 +146,6 @@ class UsTaxTest extends TestCase return $invoice; } - // public function testCompanyTaxAllOffTaxExemptProduct() - // { - - // $invoice = $this->invoiceStub('92582'); - // $client = $invoice->client; - // $client->is_tax_exempt = false; - // $client->save(); - - // $company = $invoice->company; - // $tax_data = $company->tax_data; - - // $tax_data->regions->US->has_sales_above_threshold = true; - // $tax_data->regions->US->tax_all = false; - - // $company->tax_data = $tax_data; - // $company->save(); - - // $invoice = $invoice->calc()->getInvoice()->service()->markSent()->save(); - - // $this->assertEquals(0, $invoice->line_items[0]->tax_rate1); - // $this->assertEquals(100, $invoice->amount); - - // } - public function testCompanyTaxAllOffButTaxUSRegion() { @@ -181,7 +158,7 @@ class UsTaxTest extends TestCase $tax_data = $company->tax_data; $tax_data->regions->US->has_sales_above_threshold = true; - $tax_data->regions->US->tax_all = true; + $tax_data->regions->US->tax_all_subregions = true; $company->tax_data = $tax_data; $company->save(); @@ -205,7 +182,7 @@ class UsTaxTest extends TestCase $tax_data = $company->tax_data; $tax_data->regions->US->has_sales_above_threshold = true; - $tax_data->regions->US->tax_all = false; + $tax_data->regions->US->tax_all_subregions = false; $company->tax_data = $tax_data; $company->save(); @@ -231,7 +208,7 @@ class UsTaxTest extends TestCase $tax_data = $company->tax_data; $tax_data->regions->US->has_sales_above_threshold = false; - $tax_data->regions->US->tax_all = true; + $tax_data->regions->US->tax_all_subregions = true; $company->tax_data = $tax_data; $company->save();