From 3ac25cf746b7a5189a1bc8db8ad03bba50d3a42e Mon Sep 17 00:00:00 2001 From: devansh bawari Date: Mon, 14 Dec 2020 13:33:25 +0530 Subject: [PATCH 1/3] Tax On Shipping Price Also --- packages/Webkul/Checkout/src/Cart.php | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/packages/Webkul/Checkout/src/Cart.php b/packages/Webkul/Checkout/src/Cart.php index 43d3974f7..9a3d801a4 100755 --- a/packages/Webkul/Checkout/src/Cart.php +++ b/packages/Webkul/Checkout/src/Cart.php @@ -558,14 +558,6 @@ class Cart $cart->grand_total = $cart->sub_total + $cart->tax_total - $cart->discount_amount; $cart->base_grand_total = $cart->base_sub_total + $cart->base_tax_total - $cart->base_discount_amount; - if ($shipping = $cart->selected_shipping_rate) { - $cart->grand_total = (float)$cart->grand_total + $shipping->price - $shipping->discount_amount; - $cart->base_grand_total = (float)$cart->base_grand_total + $shipping->base_price - $shipping->base_discount_amount; - - $cart->discount_amount += $shipping->discount_amount; - $cart->base_discount_amount += $shipping->base_discount_amount; - } - $cart = $this->finalizeCartTotals($cart); $quantities = 0; @@ -577,7 +569,7 @@ class Cart $cart->items_count = $cart->items->count(); $cart->items_qty = $quantities; - + $cart->cart_currency_code = core()->getCurrentCurrencyCode(); $cart->save(); @@ -700,8 +692,18 @@ class Cart if ($haveTaxRate) { $item->tax_percent = $rate->tax_rate; - $item->tax_amount = round(($item->total * $rate->tax_rate) / 100, 4); - $item->base_tax_amount = round(($item->base_total * $rate->tax_rate) / 100, 4); + + /* getting shipping rate for tax calculation */ + $shippingPrice = $shippingBasePrice = 0; + + if ($shipping = $cart->selected_shipping_rate) { + $shippingPrice = $shipping->price - $shipping->discount_amount; + $shippingBasePrice = $shipping->base_price - $shipping->base_discount_amount; + } + + /* now assigning shipping prices for tax calculation */ + $item->tax_amount = round((($item->total + $shippingPrice) * $rate->tax_rate) / 100, 4); + $item->base_tax_amount = round((($item->base_total + $shippingBasePrice) * $rate->tax_rate) / 100, 4); break; } From 179c59b2de9afdc8fd65eaedaa2dfe626c1514d2 Mon Sep 17 00:00:00 2001 From: devansh bawari Date: Fri, 18 Dec 2020 13:00:13 +0530 Subject: [PATCH 2/3] Option Added For Tax Calculation --- packages/Webkul/Checkout/src/Cart.php | 6 ++-- ...on_column_to_cart_shipping_rates_table.php | 32 +++++++++++++++++++ .../Webkul/Shipping/src/Carriers/FlatRate.php | 1 + .../Webkul/Shipping/src/Carriers/Free.php | 1 + .../Webkul/Shipping/src/Config/carriers.php | 28 ++++++++-------- .../Webkul/Shipping/src/Config/system.php | 14 ++++++++ 6 files changed, 67 insertions(+), 15 deletions(-) create mode 100644 packages/Webkul/Checkout/src/Database/Migrations/2020_12_18_122826_add_is_tax_calculation_column_to_cart_shipping_rates_table.php diff --git a/packages/Webkul/Checkout/src/Cart.php b/packages/Webkul/Checkout/src/Cart.php index 9a3d801a4..048aca2da 100755 --- a/packages/Webkul/Checkout/src/Cart.php +++ b/packages/Webkul/Checkout/src/Cart.php @@ -697,8 +697,10 @@ class Cart $shippingPrice = $shippingBasePrice = 0; if ($shipping = $cart->selected_shipping_rate) { - $shippingPrice = $shipping->price - $shipping->discount_amount; - $shippingBasePrice = $shipping->base_price - $shipping->base_discount_amount; + if ($shipping->is_calculate_tax) { + $shippingPrice = $shipping->price - $shipping->discount_amount; + $shippingBasePrice = $shipping->base_price - $shipping->base_discount_amount; + } } /* now assigning shipping prices for tax calculation */ diff --git a/packages/Webkul/Checkout/src/Database/Migrations/2020_12_18_122826_add_is_tax_calculation_column_to_cart_shipping_rates_table.php b/packages/Webkul/Checkout/src/Database/Migrations/2020_12_18_122826_add_is_tax_calculation_column_to_cart_shipping_rates_table.php new file mode 100644 index 000000000..e17fc26d5 --- /dev/null +++ b/packages/Webkul/Checkout/src/Database/Migrations/2020_12_18_122826_add_is_tax_calculation_column_to_cart_shipping_rates_table.php @@ -0,0 +1,32 @@ +boolean('is_calculate_tax')->default(true); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('cart_shipping_rates', function (Blueprint $table) { + $table->dropColumn('is_calculate_tax'); + }); + } +} diff --git a/packages/Webkul/Shipping/src/Carriers/FlatRate.php b/packages/Webkul/Shipping/src/Carriers/FlatRate.php index 6170bce6b..5d342aa03 100755 --- a/packages/Webkul/Shipping/src/Carriers/FlatRate.php +++ b/packages/Webkul/Shipping/src/Carriers/FlatRate.php @@ -40,6 +40,7 @@ class FlatRate extends AbstractShipping $object->method = 'flatrate_flatrate'; $object->method_title = $this->getConfigData('title'); $object->method_description = $this->getConfigData('description'); + $object->is_calculate_tax = $this->getConfigData('is_calculate_tax'); $object->price = 0; $object->base_price = 0; diff --git a/packages/Webkul/Shipping/src/Carriers/Free.php b/packages/Webkul/Shipping/src/Carriers/Free.php index c3c0e0ec5..a90b053bb 100755 --- a/packages/Webkul/Shipping/src/Carriers/Free.php +++ b/packages/Webkul/Shipping/src/Carriers/Free.php @@ -37,6 +37,7 @@ class Free extends AbstractShipping $object->method = 'free_free'; $object->method_title = $this->getConfigData('title'); $object->method_description = $this->getConfigData('description'); + $object->is_calculate_tax = $this->getConfigData('is_calculate_tax'); $object->price = 0; $object->base_price = 0; diff --git a/packages/Webkul/Shipping/src/Config/carriers.php b/packages/Webkul/Shipping/src/Config/carriers.php index 96e706a4e..fd870fa61 100755 --- a/packages/Webkul/Shipping/src/Config/carriers.php +++ b/packages/Webkul/Shipping/src/Config/carriers.php @@ -2,21 +2,23 @@ return [ 'flatrate' => [ - 'code' => 'flatrate', - 'title' => 'Flat Rate', - 'description' => 'Flat Rate Shipping', - 'active' => true, - 'default_rate' => '10', - 'type' => 'per_unit', - 'class' => 'Webkul\Shipping\Carriers\FlatRate', + 'code' => 'flatrate', + 'title' => 'Flat Rate', + 'description' => 'Flat Rate Shipping', + 'active' => true, + 'is_calculate_tax' => true, + 'default_rate' => '10', + 'type' => 'per_unit', + 'class' => 'Webkul\Shipping\Carriers\FlatRate', ], 'free' => [ - 'code' => 'free', - 'title' => 'Free Shipping', - 'description' => 'Free Shipping', - 'active' => true, - 'default_rate' => '0', - 'class' => 'Webkul\Shipping\Carriers\Free', + 'code' => 'free', + 'title' => 'Free Shipping', + 'description' => 'Free Shipping', + 'active' => true, + 'is_calculate_tax' => true, + 'default_rate' => '0', + 'class' => 'Webkul\Shipping\Carriers\Free', ] ]; \ No newline at end of file diff --git a/packages/Webkul/Shipping/src/Config/system.php b/packages/Webkul/Shipping/src/Config/system.php index df16ef1d4..e04cde0c9 100755 --- a/packages/Webkul/Shipping/src/Config/system.php +++ b/packages/Webkul/Shipping/src/Config/system.php @@ -35,6 +35,13 @@ return [ 'validation' => 'required', 'channel_based' => false, 'locale_based' => true, + ], [ + 'name' => 'is_calculate_tax', + 'title' => 'Calculate Tax', + 'type' => 'boolean', + 'validation' => 'required', + 'channel_based' => false, + 'locale_based' => false, ] ] ], [ @@ -86,6 +93,13 @@ return [ 'validation' => 'required', 'channel_based' => false, 'locale_based' => true, + ], [ + 'name' => 'is_calculate_tax', + 'title' => 'Calculate Tax', + 'type' => 'boolean', + 'validation' => 'required', + 'channel_based' => false, + 'locale_based' => false, ] ] ], [ From 88782d93271e7b6c6384e9565f15e80d3b364f09 Mon Sep 17 00:00:00 2001 From: devansh bawari Date: Fri, 18 Dec 2020 17:02:55 +0530 Subject: [PATCH 3/3] Language Translation Added :innocent: --- packages/Webkul/Admin/src/Resources/lang/ar/app.php | 1 + packages/Webkul/Admin/src/Resources/lang/de/app.php | 1 + packages/Webkul/Admin/src/Resources/lang/en/app.php | 1 + packages/Webkul/Admin/src/Resources/lang/es/app.php | 1 + packages/Webkul/Admin/src/Resources/lang/fa/app.php | 1 + packages/Webkul/Admin/src/Resources/lang/it/app.php | 1 + packages/Webkul/Admin/src/Resources/lang/nl/app.php | 1 + packages/Webkul/Admin/src/Resources/lang/pl/app.php | 1 + packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php | 1 + packages/Webkul/Admin/src/Resources/lang/tr/app.php | 1 + packages/Webkul/Shipping/src/Config/system.php | 4 ++-- 11 files changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/Webkul/Admin/src/Resources/lang/ar/app.php b/packages/Webkul/Admin/src/Resources/lang/ar/app.php index 14131eb53..d9e347b96 100644 --- a/packages/Webkul/Admin/src/Resources/lang/ar/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/ar/app.php @@ -1290,6 +1290,7 @@ return [ 'description' => 'وصف', 'rate' => 'معدل', 'status' => 'الحالة', + 'calculate-tax' => 'احسب الضريبة', 'type' => 'اكتب', 'payment-methods' => 'طرق الدفع', 'cash-on-delivery' => 'الدفع عند الاستلام', diff --git a/packages/Webkul/Admin/src/Resources/lang/de/app.php b/packages/Webkul/Admin/src/Resources/lang/de/app.php index c2ecc907f..1ff1fce03 100755 --- a/packages/Webkul/Admin/src/Resources/lang/de/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/de/app.php @@ -1297,6 +1297,7 @@ return [ 'description' => 'Beschreibung', 'rate' => 'Rate', 'status' => 'Status', + 'calculate-tax' => 'Steuern berechnen', 'type' => 'Typ', 'payment-methods' => 'Zahlungsmethoden', 'cash-on-delivery' => 'Nachnahme', diff --git a/packages/Webkul/Admin/src/Resources/lang/en/app.php b/packages/Webkul/Admin/src/Resources/lang/en/app.php index 70177339e..6b02a6c40 100755 --- a/packages/Webkul/Admin/src/Resources/lang/en/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/en/app.php @@ -1295,6 +1295,7 @@ return [ 'description' => 'Description', 'rate' => 'Rate', 'status' => 'Status', + 'calculate-tax' => 'Calculate Tax', 'type' => 'Type', 'payment-methods' => 'Payment Methods', 'cash-on-delivery' => 'Cash On Delivery', diff --git a/packages/Webkul/Admin/src/Resources/lang/es/app.php b/packages/Webkul/Admin/src/Resources/lang/es/app.php index 98a50439d..df068ac2c 100644 --- a/packages/Webkul/Admin/src/Resources/lang/es/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/es/app.php @@ -1279,6 +1279,7 @@ return [ 'description' => 'Descripción', 'rate' => 'Tasa', 'status' => 'Estado', + 'calculate-tax' => 'Calcular impuestos', 'type' => 'Tipo', 'payment-methods' => 'Métodos de pago', 'cash-on-delivery' => 'Pago contraentrega', diff --git a/packages/Webkul/Admin/src/Resources/lang/fa/app.php b/packages/Webkul/Admin/src/Resources/lang/fa/app.php index a1d73c1ca..857b57b94 100644 --- a/packages/Webkul/Admin/src/Resources/lang/fa/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/fa/app.php @@ -1285,6 +1285,7 @@ return [ 'description' => 'توضیحات', 'rate' => 'نرخ', 'status' => 'وضعیت', + 'calculate-tax' => 'محاسبه مالیات', 'type' => 'نوع', 'payment-methods' => 'روش های پرداخت', 'cash-on-delivery' => 'پرداخت در محل', diff --git a/packages/Webkul/Admin/src/Resources/lang/it/app.php b/packages/Webkul/Admin/src/Resources/lang/it/app.php index 24fe8ed5a..e49e402fa 100644 --- a/packages/Webkul/Admin/src/Resources/lang/it/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/it/app.php @@ -1290,6 +1290,7 @@ return [ 'description' => 'Descrizione', 'rate' => 'Tasso', 'status' => 'Stato', + 'calculate-tax' => 'Calcola le tasse', 'type' => 'Tipo', 'payment-methods' => 'Metodi di Pagamento', 'cash-on-delivery' => 'Contrassegno', diff --git a/packages/Webkul/Admin/src/Resources/lang/nl/app.php b/packages/Webkul/Admin/src/Resources/lang/nl/app.php index 762c6daf6..d1496bc70 100644 --- a/packages/Webkul/Admin/src/Resources/lang/nl/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/nl/app.php @@ -1286,6 +1286,7 @@ return [ 'description' => 'Omschrijving', 'rate' => 'Tarief', 'status' => 'Toestand', + 'calculate-tax' => 'Beregn skat', 'type' => 'Type', 'payment-methods' => 'Betaalmethodes', 'cash-on-delivery' => 'Rembours', diff --git a/packages/Webkul/Admin/src/Resources/lang/pl/app.php b/packages/Webkul/Admin/src/Resources/lang/pl/app.php index c98f9ee3c..0b5a4c0e5 100644 --- a/packages/Webkul/Admin/src/Resources/lang/pl/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/pl/app.php @@ -1287,6 +1287,7 @@ return [ 'description' => 'Opis', 'rate' => 'Stawka', 'status' => 'Status', + 'calculate-tax' => 'Oblicz podatek', 'type' => 'Rodzaj', 'payment-methods' => 'Metody płatności', 'cash-on-delivery' => 'Za pobraniem', diff --git a/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php b/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php index e9eeb1266..2b23f1766 100755 --- a/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php @@ -1286,6 +1286,7 @@ return [ 'description' => 'Descrição', 'rate' => 'Taxa', 'status' => 'Status', + 'calculate-tax' => 'Calcular o imposto', 'type' => 'Tipo', 'payment-methods' => 'Métodos de Pagamento', 'cash-on-delivery' => 'Dinheiro na entrega', diff --git a/packages/Webkul/Admin/src/Resources/lang/tr/app.php b/packages/Webkul/Admin/src/Resources/lang/tr/app.php index 5f3deda30..f5ab3f907 100644 --- a/packages/Webkul/Admin/src/Resources/lang/tr/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/tr/app.php @@ -1274,6 +1274,7 @@ return [ 'description' => 'Açıklama', 'rate' => 'Oran', 'status' => 'Durum', + 'calculate-tax' => 'Vergiyi Hesapla', 'type' => 'Tipi', 'payment-methods' => 'Ödeme Türleri', 'cash-on-delivery' => 'Kapıda Ödeme', diff --git a/packages/Webkul/Shipping/src/Config/system.php b/packages/Webkul/Shipping/src/Config/system.php index e04cde0c9..afd069017 100755 --- a/packages/Webkul/Shipping/src/Config/system.php +++ b/packages/Webkul/Shipping/src/Config/system.php @@ -37,7 +37,7 @@ return [ 'locale_based' => true, ], [ 'name' => 'is_calculate_tax', - 'title' => 'Calculate Tax', + 'title' => 'admin::app.admin.system.calculate-tax', 'type' => 'boolean', 'validation' => 'required', 'channel_based' => false, @@ -95,7 +95,7 @@ return [ 'locale_based' => true, ], [ 'name' => 'is_calculate_tax', - 'title' => 'Calculate Tax', + 'title' => 'admin::app.admin.system.calculate-tax', 'type' => 'boolean', 'validation' => 'required', 'channel_based' => false,