From 4052b5336a60d251ee0195dd0f8479b87f9b0b9f Mon Sep 17 00:00:00 2001 From: user Date: Fri, 28 Feb 2025 17:38:53 +0200 Subject: [PATCH] magento/magento2#38455: Fixed - the mistake was that the amount for non-taxes after the discount came with incorrect rounding --- .../Model/Rule/Action/Discount/ByPercent.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/code/Magento/SalesRule/Model/Rule/Action/Discount/ByPercent.php b/app/code/Magento/SalesRule/Model/Rule/Action/Discount/ByPercent.php index 836e1fc8956dc..f4e1d18e22029 100644 --- a/app/code/Magento/SalesRule/Model/Rule/Action/Discount/ByPercent.php +++ b/app/code/Magento/SalesRule/Model/Rule/Action/Discount/ByPercent.php @@ -1,7 +1,7 @@ validator->getItemBaseOriginalPrice($item); $_rulePct = $rulePercent / 100; - $discountData->setAmount(($qty * $itemPrice - $item->getDiscountAmount()) * $_rulePct); - $discountData->setBaseAmount(($qty * $baseItemPrice - $item->getBaseDiscountAmount()) * $_rulePct); - $discountData->setOriginalAmount(($qty * $itemOriginalPrice - $item->getDiscountAmount()) * $_rulePct); + $discountData->setAmount($this->priceCurrency->round(($qty * $itemPrice - $item->getDiscountAmount()) * $_rulePct)); + $discountData->setBaseAmount($this->priceCurrency->round(($qty * $baseItemPrice - $item->getBaseDiscountAmount()) * $_rulePct)); + $discountData->setOriginalAmount($this->priceCurrency->round(($qty * $itemOriginalPrice - $item->getDiscountAmount()) * $_rulePct)); $discountData->setBaseOriginalAmount( - ($qty * $baseItemOriginalPrice - $item->getBaseDiscountAmount()) * $_rulePct + $this->priceCurrency->round(($qty * $baseItemOriginalPrice - $item->getBaseDiscountAmount()) * $_rulePct) ); if (!$rule->getDiscountQty() || $rule->getDiscountQty() >= $qty) {