From b5a4fc9865a6df00a2eafe58c4d57dffcdf9f4c2 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Fri, 24 Mar 2023 13:56:26 +1100 Subject: [PATCH] Working on taxes --- app/DataMapper/Tax/ZipTax/Response.php | 45 +++++++-- app/Helpers/Invoice/InvoiceItemSum.php | 1 + tests/Unit/Tax/SumTaxTest.php | 125 +++++++++++++------------ 3 files changed, 104 insertions(+), 67 deletions(-) diff --git a/app/DataMapper/Tax/ZipTax/Response.php b/app/DataMapper/Tax/ZipTax/Response.php index dfeea6e1f1cd..0b4b60724ef8 100644 --- a/app/DataMapper/Tax/ZipTax/Response.php +++ b/app/DataMapper/Tax/ZipTax/Response.php @@ -18,8 +18,7 @@ class Response public int $rCode = 100; /** - * ["results" => [ - * [ + * [ * "geoPostalCode" => "92582", * "geoCity" => "SAN JACINTO", * "geoCounty" => "RIVERSIDE", @@ -54,13 +53,45 @@ class Response * "district5SalesTax" => 0, * "district5UseTax" => 0, * "originDestination" => "D", - * ], - * ] + * * ]; - * - * @var mixed[] + * */ - public array $results = []; + + public string $geoPostalCode = "92582"; + public string $geoCity = "SAN JACINTO"; + public string $geoCounty = "RIVERSIDE"; + public string $geoState = "CA"; + public float $taxSales = 0.0875; + public float $taxUse = 0.0875; + public string $txbService = "N"; + public string $txbFreight = "N"; + public float $stateSalesTax = 0.06; + public float $stateUseTax = 0.06; + public float $citySalesTax = 0.01; + public float $cityUseTax = 0.01; + public string $cityTaxCode = "874"; + public float $countySalesTax = 0.0025; + public float $countyUseTax = 0.0025; + public string $countyTaxCode = ""; + public float $districtSalesTax = 0.015; + public float $districtUseTax = 0.015; + public string $district1Code = "26"; + public float $district1SalesTax = 0; + public float $district1UseTax = 0; + public string $district2Code = "26"; + public float $district2SalesTax = 0.005; + public float $district2UseTax = 0.005; + public string $district3Code = ""; + public float $district3SalesTax = 0; + public float $district3UseTax = 0; + public string $district4Code = "33"; + public float $district4SalesTax = 0.01; + public float $district4UseTax = 0.01; + public string $district5Code = ""; + public float $district5SalesTax = 0; + public float $district5UseTax = 0; + public string $originDestination = "D"; } diff --git a/app/Helpers/Invoice/InvoiceItemSum.php b/app/Helpers/Invoice/InvoiceItemSum.php index 0f61cc97231e..ed27bc4229e4 100644 --- a/app/Helpers/Invoice/InvoiceItemSum.php +++ b/app/Helpers/Invoice/InvoiceItemSum.php @@ -148,6 +148,7 @@ class InvoiceItemSum private function calcTaxesAutomatically() { + return $this; } private function calcTaxes() diff --git a/tests/Unit/Tax/SumTaxTest.php b/tests/Unit/Tax/SumTaxTest.php index 996ce63eeebd..c5fa17ef0f5a 100644 --- a/tests/Unit/Tax/SumTaxTest.php +++ b/tests/Unit/Tax/SumTaxTest.php @@ -12,6 +12,7 @@ namespace Tests\Unit\Tax; use Tests\TestCase; +use App\Models\Client; use Tests\MockAccountData; use Illuminate\Routing\Middleware\ThrottleRequests; use Illuminate\Foundation\Testing\DatabaseTransactions; @@ -24,45 +25,41 @@ class SumTaxTest extends TestCase use MockAccountData; use DatabaseTransactions; - public array $response = - ["results" => [ - [ - "geoPostalCode" => "92582", - "geoCity" => "SAN JACINTO", - "geoCounty" => "RIVERSIDE", - "geoState" => "CA", - "taxSales" => 0.0875, - "taxUse" => 0.0875, // tax amount where destination does not charge sales tax, but origin does - "txbService" => "N", // whether services are taxed in this locale - "txbFreight" => "N", // whether freight is taxes in this locale - "stateSalesTax" => 0.06, - "stateUseTax" => 0.06, - "citySalesTax" => 0.01, - "cityUseTax" => 0.01, - "cityTaxCode" => "874", - "countySalesTax" => 0.0025, - "countyUseTax" => 0.0025, - "countyTaxCode" => "", - "districtSalesTax" => 0.015, - "districtUseTax" => 0.015, - "district1Code" => "26", - "district1SalesTax" => 0, - "district1UseTax" => 0, - "district2Code" => "26", - "district2SalesTax" => 0.005, - "district2UseTax" => 0.005, - "district3Code" => "", - "district3SalesTax" => 0, - "district3UseTax" => 0, - "district4Code" => "33", - "district4SalesTax" => 0.01, - "district4UseTax" => 0.01, - "district5Code" => "", - "district5SalesTax" => 0, - "district5UseTax" => 0, //district1-5 portion of the district tax - "originDestination" => "D", //location where this is taxed origin/destination/null - ], - ] + public array $response = [ + "geoPostalCode" => "92582", + "geoCity" => "SAN JACINTO", + "geoCounty" => "RIVERSIDE", + "geoState" => "CA", + "taxSales" => 0.0875, + "taxUse" => 0.0875, // tax amount where destination does not charge sales tax, but origin does + "txbService" => "N", // whether services are taxed in this locale + "txbFreight" => "N", // whether freight is taxes in this locale + "stateSalesTax" => 0.06, + "stateUseTax" => 0.06, + "citySalesTax" => 0.01, + "cityUseTax" => 0.01, + "cityTaxCode" => "874", + "countySalesTax" => 0.0025, + "countyUseTax" => 0.0025, + "countyTaxCode" => "", + "districtSalesTax" => 0.015, + "districtUseTax" => 0.015, + "district1Code" => "26", + "district1SalesTax" => 0, + "district1UseTax" => 0, + "district2Code" => "26", + "district2SalesTax" => 0.005, + "district2UseTax" => 0.005, + "district3Code" => "", + "district3SalesTax" => 0, + "district3UseTax" => 0, + "district4Code" => "33", + "district4SalesTax" => 0.01, + "district4UseTax" => 0.01, + "district5Code" => "", + "district5SalesTax" => 0, + "district5UseTax" => 0, //district1-5 portion of the district tax + "originDestination" => "D", //location where this is taxed origin/destination/null ]; @@ -76,42 +73,50 @@ class SumTaxTest extends TestCase $this->withoutExceptionHandling(); - // $this->makeTestData(); + $this->makeTestData(); } public function testTaxOnInvoice() { - + $c = Client::factory()->create([ + 'user_id' => $this->user->id, + 'company_id' => $this->company->id, + ]); + + $c->tax_data = $this->response; + $c->save(); + + $this->assertEquals("92582", $c->tax_data->geoPostalCode); } public function testSumOfInvoice() { - $this->assertEquals("CA", $this->response['results'][0]['geoState']); + $this->assertEquals("CA", $this->response['geoState']); } public function testSumOfTaxes() { $sum = - $this->response['results'][0]['stateSalesTax'] + - // $this->response['results'][0]['stateUseTax'] + - $this->response['results'][0]['citySalesTax'] + - // $this->response['results'][0]['cityUseTax'] + - $this->response['results'][0]['countySalesTax'] + - // $this->response['results'][0]['countyUseTax'] + - $this->response['results'][0]['districtSalesTax']; - // // $this->response['results'][0]['districtUseTax'] + - // $this->response['results'][0]['district1SalesTax'] + - // // $this->response['results'][0]['district1UseTax'] + - // $this->response['results'][0]['district2SalesTax'] + - // // $this->response['results'][0]['district2UseTax'] + - // $this->response['results'][0]['district3SalesTax'] + - // // $this->response['results'][0]['district3UseTax'] + - // $this->response['results'][0]['district4SalesTax'] + - // // $this->response['results'][0]['district4UseTax'] + - // $this->response['results'][0]['district5SalesTax']; - // $this->response['results'][0]['district5UseTax']; + $this->response['stateSalesTax'] + + // $this->response['stateUseTax'] + + $this->response['citySalesTax'] + + // $this->response['cityUseTax'] + + $this->response['countySalesTax'] + + // $this->response['countyUseTax'] + + $this->response['districtSalesTax']; + // // $this->response['districtUseTax'] + + // $this->response['district1SalesTax'] + + // // $this->response['district1UseTax'] + + // $this->response['district2SalesTax'] + + // // $this->response['district2UseTax'] + + // $this->response['district3SalesTax'] + + // // $this->response['district3UseTax'] + + // $this->response['district4SalesTax'] + + // // $this->response['district4UseTax'] + + // $this->response['district5SalesTax']; + // $this->response['district5UseTax']; $this->assertEquals(0.0875, $sum); }