From c2037bbfec274cd6e46719508554cd05b6124e01 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Sat, 24 Feb 2024 13:39:51 +1100 Subject: [PATCH 1/5] Minor fixers --- app/Helpers/Invoice/InvoiceSum.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Helpers/Invoice/InvoiceSum.php b/app/Helpers/Invoice/InvoiceSum.php index 1d05bcef7eeea..fd1472c18e7fd 100644 --- a/app/Helpers/Invoice/InvoiceSum.php +++ b/app/Helpers/Invoice/InvoiceSum.php @@ -122,7 +122,7 @@ class InvoiceSum private function calculateInvoiceTaxes(): self { - if (is_string($this->invoice->tax_name1) && strlen($this->invoice->tax_name1) > 1) { + if (is_string($this->invoice->tax_name1) && strlen($this->invoice->tax_name1) > 2) { $tax = $this->taxer($this->total, $this->invoice->tax_rate1); $tax += $this->getSurchargeTaxTotalForKey($this->invoice->tax_name1, $this->invoice->tax_rate1); @@ -130,7 +130,7 @@ class InvoiceSum $this->total_tax_map[] = ['name' => $this->invoice->tax_name1.' '.floatval($this->invoice->tax_rate1).'%', 'total' => $tax]; } - if (is_string($this->invoice->tax_name2) && strlen($this->invoice->tax_name2) > 1) { + if (is_string($this->invoice->tax_name2) && strlen($this->invoice->tax_name2) > 2) { $tax = $this->taxer($this->total, $this->invoice->tax_rate2); $tax += $this->getSurchargeTaxTotalForKey($this->invoice->tax_name2, $this->invoice->tax_rate2); @@ -138,7 +138,7 @@ class InvoiceSum $this->total_tax_map[] = ['name' => $this->invoice->tax_name2.' '.floatval($this->invoice->tax_rate2).'%', 'total' => $tax]; } - if (is_string($this->invoice->tax_name3) && strlen($this->invoice->tax_name3) > 1) { + if (is_string($this->invoice->tax_name3) && strlen($this->invoice->tax_name3) > 2) { $tax = $this->taxer($this->total, $this->invoice->tax_rate3); $tax += $this->getSurchargeTaxTotalForKey($this->invoice->tax_name3, $this->invoice->tax_rate3); From 3aa6bf6eb1e3afcbedfaaeaa2d358c4785c82b6e Mon Sep 17 00:00:00 2001 From: David Bomba Date: Sat, 24 Feb 2024 13:57:44 +1100 Subject: [PATCH 2/5] Fixes for tax tests --- app/Helpers/Invoice/InvoiceSumInclusive.php | 8 ++--- tests/Unit/InvoiceInclusiveTest.php | 38 +++++++++++++++++++-- 2 files changed, 39 insertions(+), 7 deletions(-) diff --git a/app/Helpers/Invoice/InvoiceSumInclusive.php b/app/Helpers/Invoice/InvoiceSumInclusive.php index f4a57f27dedbb..3786b55f99e67 100644 --- a/app/Helpers/Invoice/InvoiceSumInclusive.php +++ b/app/Helpers/Invoice/InvoiceSumInclusive.php @@ -122,7 +122,7 @@ class InvoiceSumInclusive private function calculateInvoiceTaxes() { $amount = $this->total; - + if ($this->invoice->discount > 0 && $this->invoice->is_amount_discount) { $amount = $this->formatValue(($this->sub_total - $this->invoice->discount), 2); } @@ -131,20 +131,20 @@ class InvoiceSumInclusive $amount = $this->formatValue(($this->sub_total - ($this->sub_total * ($this->invoice->discount / 100))), 2); } - if (is_string($this->invoice->tax_name1) && strlen($this->invoice->tax_name1) > 2) { + if (is_string($this->invoice->tax_name1) && strlen($this->invoice->tax_name1) > 1) { $tax = $this->calcInclusiveLineTax($this->invoice->tax_rate1, $amount); $this->total_taxes += $tax; $this->total_tax_map[] = ['name' => $this->invoice->tax_name1.' '.floatval($this->invoice->tax_rate1).'%', 'total' => $tax]; } - if (is_string($this->invoice->tax_name2) && strlen($this->invoice->tax_name2) > 2) { + if (is_string($this->invoice->tax_name2) && strlen($this->invoice->tax_name2) > 1) { $tax = $this->calcInclusiveLineTax($this->invoice->tax_rate2, $amount); $this->total_taxes += $tax; $this->total_tax_map[] = ['name' => $this->invoice->tax_name2.' '.floatval($this->invoice->tax_rate2).'%', 'total' => $tax]; } - if (is_string($this->invoice->tax_name3) && strlen($this->invoice->tax_name3) > 2) { + if (is_string($this->invoice->tax_name3) && strlen($this->invoice->tax_name3) > 1) { $tax = $this->calcInclusiveLineTax($this->invoice->tax_rate3, $amount); $this->total_taxes += $tax; $this->total_tax_map[] = ['name' => $this->invoice->tax_name3.' '.floatval($this->invoice->tax_rate3).'%', 'total' => $tax]; diff --git a/tests/Unit/InvoiceInclusiveTest.php b/tests/Unit/InvoiceInclusiveTest.php index e4b6b5d870d82..c5e8eba22ae0d 100644 --- a/tests/Unit/InvoiceInclusiveTest.php +++ b/tests/Unit/InvoiceInclusiveTest.php @@ -66,6 +66,8 @@ class InvoiceInclusiveTest extends TestCase public function testInvoiceTotals() { + + $this->invoice_calc = new InvoiceSumInclusive($this->invoice); $this->invoice_calc->build(); $this->assertEquals($this->invoice_calc->getSubTotal(), 20); @@ -76,6 +78,8 @@ class InvoiceInclusiveTest extends TestCase { $this->invoice->discount = 5; + + $this->invoice_calc = new InvoiceSumInclusive($this->invoice); $this->invoice_calc->build(); $this->assertEquals($this->invoice_calc->getSubTotal(), 20); @@ -88,6 +92,8 @@ class InvoiceInclusiveTest extends TestCase $this->invoice->discount = 5; $this->invoice->custom_surcharge1 = 5; + + $this->invoice_calc = new InvoiceSumInclusive($this->invoice); $this->invoice_calc->build(); $this->assertEquals($this->invoice_calc->getSubTotal(), 20); @@ -103,6 +109,8 @@ class InvoiceInclusiveTest extends TestCase $this->invoice->tax_rate1 = 10; $this->invoice->is_amount_discount = true; + + $this->invoice_calc = new InvoiceSumInclusive($this->invoice); $this->invoice_calc->build(); $this->assertEquals($this->invoice_calc->getSubTotal(), 20); @@ -119,6 +127,7 @@ class InvoiceInclusiveTest extends TestCase $this->invoice->tax_rate1 = 10; $this->invoice->is_amount_discount = false; + $this->invoice_calc = new InvoiceSumInclusive($this->invoice); $this->invoice_calc->build(); $this->assertEquals($this->invoice_calc->getSubTotal(), 20); @@ -135,6 +144,7 @@ class InvoiceInclusiveTest extends TestCase $this->invoice->uses_inclusive_taxes = true; $this->invoice->is_amount_discount = true; + $this->invoice_calc = new InvoiceSumInclusive($this->invoice); $this->invoice_calc->build(); $this->assertEquals($this->invoice_calc->getSubTotal(), 20); @@ -154,6 +164,8 @@ class InvoiceInclusiveTest extends TestCase $this->invoice->uses_inclusive_taxes = true; $this->invoice->is_amount_discount = true; + + $this->invoice_calc = new InvoiceSumInclusive($this->invoice); $this->invoice_calc->build(); $this->assertEquals($this->invoice_calc->getSubTotal(), 20); @@ -170,7 +182,10 @@ class InvoiceInclusiveTest extends TestCase $item->cost = 10; $item->tax_rate1 = 10; $item->tax_name1 = 10; - + $item->tax_rate2 = 0; + $item->tax_name2 = ''; + $item->tax_rate3 = 0; + $item->tax_name3 = ''; $line_items[] = $item; $item = InvoiceItemFactory::create(); @@ -178,6 +193,10 @@ class InvoiceInclusiveTest extends TestCase $item->cost = 10; $item->tax_rate1 = 10; $item->tax_name1 = 10; + $item->tax_rate2 = 0; + $item->tax_name2 = ''; + $item->tax_rate3 = 0; + $item->tax_name3 = ''; $line_items[] = $item; @@ -223,14 +242,17 @@ class InvoiceInclusiveTest extends TestCase $this->invoice->discount = 0; $this->invoice->custom_surcharge1 = 0; + $this->invoice->tax_name1 = 'dog'; + $this->invoice->tax_name2 = 'cat'; $this->invoice->tax_rate1 = 10; $this->invoice->tax_rate2 = 10; + $this->invoice_calc = null; $this->invoice_calc = new InvoiceSumInclusive($this->invoice, $this->settings); $this->invoice_calc->build(); - $this->assertEquals($this->invoice_calc->getSubTotal(), 20); - $this->assertEquals($this->invoice_calc->getTotalTaxes(), 5.46); + $this->assertEquals(20, $this->invoice_calc->getSubTotal()); + $this->assertEquals(5.46, $this->invoice_calc->getTotalTaxes()); $this->assertEquals(count($this->invoice_calc->getTaxMap()), 1); $this->assertEquals($this->invoice_calc->getTotal(), 20); $this->assertEquals($this->invoice_calc->getBalance(), 20); @@ -268,6 +290,10 @@ class InvoiceInclusiveTest extends TestCase $this->invoice->tax_rate1 = 10; $this->invoice->tax_rate2 = 10; +$this->invoice->tax_name1 = 'dog'; +$this->invoice->tax_name2 = 'cat'; + + $this->invoice_calc = null; $this->invoice_calc = new InvoiceSumInclusive($this->invoice, $this->settings); $this->invoice_calc->build(); @@ -316,6 +342,9 @@ class InvoiceInclusiveTest extends TestCase $this->invoice->tax_rate1 = 10; $this->invoice->tax_rate2 = 10; +$this->invoice->tax_name1 = 'dog'; +$this->invoice->tax_name2 = 'cat'; + $this->invoice_calc = new InvoiceSumInclusive($this->invoice, $this->settings); $this->invoice_calc->build(); @@ -361,6 +390,9 @@ class InvoiceInclusiveTest extends TestCase $this->invoice->tax_rate1 = 10; $this->invoice->tax_rate2 = 10; + $this->invoice->tax_name1 = 'dog'; + $this->invoice->tax_name2 = 'cat'; + $this->invoice_calc = new InvoiceSumInclusive($this->invoice, $this->settings); $this->invoice_calc->build(); From ad77aa80a0d4a8e194dbf8e291a9fa8934a42e22 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Sat, 24 Feb 2024 14:09:55 +1100 Subject: [PATCH 3/5] Fixes for tests --- app/Helpers/Invoice/InvoiceSumInclusive.php | 3 ++- tests/Unit/InvoiceInclusiveTest.php | 17 ++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/Helpers/Invoice/InvoiceSumInclusive.php b/app/Helpers/Invoice/InvoiceSumInclusive.php index 3786b55f99e67..d213874e68b2b 100644 --- a/app/Helpers/Invoice/InvoiceSumInclusive.php +++ b/app/Helpers/Invoice/InvoiceSumInclusive.php @@ -340,7 +340,8 @@ class InvoiceSumInclusive $this->total_taxes += $total_line_tax; } - +nlog($this->tax_map); +nlog($this->total_taxes); return $this; } diff --git a/tests/Unit/InvoiceInclusiveTest.php b/tests/Unit/InvoiceInclusiveTest.php index c5e8eba22ae0d..0c557438cf4aa 100644 --- a/tests/Unit/InvoiceInclusiveTest.php +++ b/tests/Unit/InvoiceInclusiveTest.php @@ -266,7 +266,7 @@ class InvoiceInclusiveTest extends TestCase $item->quantity = 1; $item->cost = 10; $item->tax_rate1 = 10; - $item->tax_name1 = 10; + $item->tax_name1 = 'a10'; $item->discount = 5; $line_items[] = $item; @@ -275,7 +275,7 @@ class InvoiceInclusiveTest extends TestCase $item->quantity = 1; $item->cost = 10; $item->tax_rate1 = 10; - $item->tax_name1 = 10; + $item->tax_name1 = 'a10'; $item->discount = 5; $line_items[] = $item; @@ -289,21 +289,20 @@ class InvoiceInclusiveTest extends TestCase $this->invoice->tax_rate1 = 10; $this->invoice->tax_rate2 = 10; - -$this->invoice->tax_name1 = 'dog'; -$this->invoice->tax_name2 = 'cat'; + $this->invoice->tax_name1 = 'VAT'; + $this->invoice->tax_name2 = 'VAT'; $this->invoice_calc = null; $this->invoice_calc = new InvoiceSumInclusive($this->invoice, $this->settings); $this->invoice_calc->build(); $line_items = $this->invoice_calc->invoice_items->getLineItems(); + nlog($this->invoice_calc->getTaxMap()); - $this->assertEquals($this->invoice_calc->getSubTotal(), 19); - $this->assertEquals($this->invoice_calc->getTotalDiscount(), 0.95); - $this->assertEquals($this->invoice_calc->getTotalTaxes(), 4.92); + $this->assertEquals(19, $this->invoice_calc->getSubTotal()); + $this->assertEquals(0.95, $this->invoice_calc->getTotalDiscount()); + $this->assertEquals(4.92, $this->invoice_calc->getTotalTaxes()); - // nlog($this->invoice_calc->getTaxMap()); $this->assertEquals(count($this->invoice_calc->getTaxMap()), 1); $this->assertEquals($this->invoice_calc->getTotal(), 18.05); From adf913754211902ea4545530604bf82de4a0822c Mon Sep 17 00:00:00 2001 From: David Bomba Date: Sat, 24 Feb 2024 14:15:57 +1100 Subject: [PATCH 4/5] Set verify peer - default = true --- database/migrations/2024_02_16_011055_smtp_configuration.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/database/migrations/2024_02_16_011055_smtp_configuration.php b/database/migrations/2024_02_16_011055_smtp_configuration.php index 38e7ea54e53bf..df54821c1b6e0 100644 --- a/database/migrations/2024_02_16_011055_smtp_configuration.php +++ b/database/migrations/2024_02_16_011055_smtp_configuration.php @@ -19,7 +19,7 @@ return new class extends Migration $table->text('smtp_username')->nullable(); $table->text('smtp_password')->nullable(); $table->string('smtp_local_domain')->nullable(); - $table->boolean('smtp_verify_peer')->default(0); + $table->boolean('smtp_verify_peer')->default(true); }); } From 9ecf49f6d5756c8253ddaaebc1c40d09a6b75542 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Sat, 24 Feb 2024 14:20:50 +1100 Subject: [PATCH 5/5] Fixes for null coalescing --- app/DataMapper/Tax/BaseRule.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/DataMapper/Tax/BaseRule.php b/app/DataMapper/Tax/BaseRule.php index ccc0d46a44495..d921f2006887a 100644 --- a/app/DataMapper/Tax/BaseRule.php +++ b/app/DataMapper/Tax/BaseRule.php @@ -271,7 +271,7 @@ class BaseRule implements RuleInterface public function isTaxableRegion(): bool { return $this->client->company->tax_data->regions->{$this->client_region}->tax_all_subregions || - (property_exists($this->client->company->tax_data->regions->{$this->client_region}->subregions, $this->client_subregion) && $this->client->company->tax_data->regions->{$this->client_region}->subregions->{$this->client_subregion}->apply_tax); + (property_exists($this->client->company->tax_data->regions->{$this->client_region}->subregions, $this->client_subregion) && ($this->client->company->tax_data->regions->{$this->client_region}->subregions->{$this->client_subregion}->apply_tax ?? false)); } public function defaultForeign(): self