diff --git a/vendor/magento/module-sales-rule/Model/Rule/Action/Discount/ByPercent.php b/vendor/magento/module-sales-rule/Model/Rule/Action/Discount/ByPercent.php index 836e1fc8956..eed37ecf422 100644 --- a/vendor/magento/module-sales-rule/Model/Rule/Action/Discount/ByPercent.php +++ b/vendor/magento/module-sales-rule/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->setBaseOriginalAmount( - ($qty * $baseItemOriginalPrice - $item->getBaseDiscountAmount()) * $_rulePct - ); + + $amount = ($qty * $itemPrice - $item->getDiscountAmount()) * $_rulePct; + $baseAmount = ($qty * $baseItemPrice - $item->getBaseDiscountAmount()) * $_rulePct; + $originalAmount = ($qty * $itemOriginalPrice - $item->getDiscountAmount()) * $_rulePct; + $baseOriginalAmount = ($qty * $baseItemOriginalPrice - $item->getBaseDiscountAmount()) * $_rulePct; + + $discountData->setAmount(round(floatval((string) $amount), 2)); + $discountData->setBaseAmount(round(floatval((string) $baseAmount), 2)); + $discountData->setOriginalAmount(round(floatval((string) $originalAmount), 2)); + $discountData->setBaseOriginalAmount(round(floatval((string) $baseOriginalAmount), 2)); if (!$rule->getDiscountQty() || $rule->getDiscountQty() >= $qty) { $discountPercent = min(100, $item->getDiscountPercent() + $rulePercent);