From c9b9b8326d173b99f76541bfebebe13c03dcadf5 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 21 Mar 2023 18:14:25 +1100 Subject: [PATCH] Create data mapper classes for tax data --- app/DataMapper/Tax/ClientTaxData.php | 21 +++++++++++++++++++ app/DataMapper/Tax/CompanyTaxData.php | 21 +++++++++++++++++++ app/DataMapper/Tax/InvoiceTaxData.php | 21 +++++++++++++++++++ app/Helpers/Invoice/InvoiceSum.php | 2 ++ app/Models/Company.php | 2 ++ app/Models/Invoice.php | 2 +- app/Models/Product.php | 4 +++- app/Transformers/CompanyTransformer.php | 2 ++ app/Transformers/InvoiceTransformer.php | 1 + app/Transformers/ProductTransformer.php | 1 + ...1_053933_tax_calculations_for_invoices.php | 5 +++++ 11 files changed, 80 insertions(+), 2 deletions(-) create mode 100644 app/DataMapper/Tax/ClientTaxData.php create mode 100644 app/DataMapper/Tax/CompanyTaxData.php create mode 100644 app/DataMapper/Tax/InvoiceTaxData.php diff --git a/app/DataMapper/Tax/ClientTaxData.php b/app/DataMapper/Tax/ClientTaxData.php new file mode 100644 index 000000000000..6ec89b628c84 --- /dev/null +++ b/app/DataMapper/Tax/ClientTaxData.php @@ -0,0 +1,21 @@ + (bool) $company->convert_expense_currency, 'notify_vendor_when_paid' => (bool) $company->notify_vendor_when_paid, 'invoice_task_hours' => (bool) $company->invoice_task_hours, + 'calculate_taxes' => (bool) $company->calculate_taxes, + 'tax_all_products' => (bool) $company->tax_all_products, ]; } diff --git a/app/Transformers/InvoiceTransformer.php b/app/Transformers/InvoiceTransformer.php index a35e1d4c2082..5e3b0a93955d 100644 --- a/app/Transformers/InvoiceTransformer.php +++ b/app/Transformers/InvoiceTransformer.php @@ -149,6 +149,7 @@ class InvoiceTransformer extends EntityTransformer 'paid_to_date' => (float) $invoice->paid_to_date, 'subscription_id' => $this->encodePrimaryKey($invoice->subscription_id), 'auto_bill_enabled' => (bool) $invoice->auto_bill_enabled, + 'tax_data' => $invoice->tax_data ?: '', ]; } } diff --git a/app/Transformers/ProductTransformer.php b/app/Transformers/ProductTransformer.php index 3d0247da0002..4f3f6706d950 100644 --- a/app/Transformers/ProductTransformer.php +++ b/app/Transformers/ProductTransformer.php @@ -95,6 +95,7 @@ class ProductTransformer extends EntityTransformer 'stock_notification_threshold' => (int) $product->stock_notification_threshold, 'max_quantity' => (int) $product->max_quantity, 'product_image' => (string) $product->product_image ?: '', + 'tax_id' => (int) $product->tax_id ?: 1, ]; } } diff --git a/database/migrations/2023_03_21_053933_tax_calculations_for_invoices.php b/database/migrations/2023_03_21_053933_tax_calculations_for_invoices.php index e70b11960945..1c6d885e9f37 100644 --- a/database/migrations/2023_03_21_053933_tax_calculations_for_invoices.php +++ b/database/migrations/2023_03_21_053933_tax_calculations_for_invoices.php @@ -20,12 +20,17 @@ return new class extends Migration Schema::table('companies', function (Blueprint $table) { $table->boolean('calculate_taxes')->default(false); //setting to turn on/off tax calculations $table->boolean('tax_all_products')->default(false); //globally tax all products if none defined + $table->boolean('tax_data'); }); Schema::table('products', function (Blueprint $table){ $table->unsignedInteger('tax_id')->nullable(); // the product tax constant }); + Schema::table('clients', function (Blueprint $table){ + $table->boolean('tax_data'); + }); + } /**