From d17191efe06d7000eeb37422c4a85e25b3758b25 Mon Sep 17 00:00:00 2001 From: Prashant Singh Date: Thu, 14 Nov 2019 17:08:28 +0530 Subject: [PATCH] Fixed issues related to discount calculations --- .../Discount/src/Actions/Cart/PercentOfProduct.php | 12 ++++++++++-- .../Webkul/Discount/src/Helpers/Cart/Discount.php | 8 ++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/packages/Webkul/Discount/src/Actions/Cart/PercentOfProduct.php b/packages/Webkul/Discount/src/Actions/Cart/PercentOfProduct.php index 9079bb675..2f372a1e8 100644 --- a/packages/Webkul/Discount/src/Actions/Cart/PercentOfProduct.php +++ b/packages/Webkul/Discount/src/Actions/Cart/PercentOfProduct.php @@ -32,7 +32,15 @@ class PercentOfProduct extends Action if ($applicability) { $eligibleItems = $this->getEligibleItems(); - $applicableDiscount = \Cart::getCart()->base_sub_total * ($rule->disc_amount / 100); + $applicableDiscount = function () use ($eligibleItems) { + $total = 0; + + foreach ($eligibleItems as $item) { + $total = $total + $item->base_total; + } + + return $total; + }; foreach ($eligibleItems as $item) { $report = array(); @@ -40,7 +48,7 @@ class PercentOfProduct extends Action $report['item_id'] = $item->id; $report['child_items'] = collect(); - $perItemDiscount = $applicableDiscount / $eligibleItems->count(); + $perItemDiscount = $applicableDiscount() * ($rule->disc_amount / 100) / $eligibleItems->count(); $itemPrice = $item->base_price; diff --git a/packages/Webkul/Discount/src/Helpers/Cart/Discount.php b/packages/Webkul/Discount/src/Helpers/Cart/Discount.php index 59436eadc..a3f048951 100644 --- a/packages/Webkul/Discount/src/Helpers/Cart/Discount.php +++ b/packages/Webkul/Discount/src/Helpers/Cart/Discount.php @@ -433,8 +433,12 @@ abstract class Discount foreach ($productIDs as $productID) { foreach ($cart->items as $item) { - if ($item->product_id == $productID) - $partialMatch = 1; + $childrens = $item->children; + + foreach ($childrens as $children) { + if ($children->product_id == $productID) + $partialMatch = 1; + } } } }