Skip to content

Commit 135b96f

Browse files
Merge remote-tracking branch '39687/fix-for-issue-38455' into commpr_787643004
2 parents d4d66d7 + e1d974e commit 135b96f

File tree

3 files changed

+17
-13
lines changed

3 files changed

+17
-13
lines changed

‎app/code/Magento/SalesRule/Model/Rule/Action/Discount/ByPercent.php

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?php
22
/**
3-
* Copyright © Magento, Inc. All rights reserved.
4-
* See COPYING.txt for license details.
3+
* Copyright 2014 Adobe
4+
* All Rights Reserved.
55
*/
66
namespace Magento\SalesRule\Model\Rule\Action\Discount;
77

@@ -60,12 +60,16 @@ protected function _calculate($rule, $item, $qty, $rulePercent)
6060
$baseItemOriginalPrice = $this->validator->getItemBaseOriginalPrice($item);
6161

6262
$_rulePct = $rulePercent / 100;
63-
$discountData->setAmount(($qty * $itemPrice - $item->getDiscountAmount()) * $_rulePct);
64-
$discountData->setBaseAmount(($qty * $baseItemPrice - $item->getBaseDiscountAmount()) * $_rulePct);
65-
$discountData->setOriginalAmount(($qty * $itemOriginalPrice - $item->getDiscountAmount()) * $_rulePct);
66-
$discountData->setBaseOriginalAmount(
67-
($qty * $baseItemOriginalPrice - $item->getBaseDiscountAmount()) * $_rulePct
68-
);
63+
64+
$amount = ($qty * $itemPrice - $item->getDiscountAmount()) * $_rulePct;
65+
$baseAmount = ($qty * $baseItemPrice - $item->getBaseDiscountAmount()) * $_rulePct;
66+
$originalAmount = ($qty * $itemOriginalPrice - $item->getDiscountAmount()) * $_rulePct;
67+
$baseOriginalAmount = ($qty * $baseItemOriginalPrice - $item->getBaseDiscountAmount()) * $_rulePct;
68+
69+
$discountData->setAmount(round(floatval((string) $amount), 2));
70+
$discountData->setBaseAmount(round(floatval((string) $baseAmount), 2));
71+
$discountData->setOriginalAmount(round(floatval((string) $originalAmount), 2));
72+
$discountData->setBaseOriginalAmount(round(floatval((string) $baseOriginalAmount), 2));
6973

7074
if (!$rule->getDiscountQty() || $rule->getDiscountQty() >= $qty) {
7175
$discountPercent = min(100, $item->getDiscountPercent() + $rulePercent);

‎app/code/Magento/SalesRule/Test/Unit/Model/Rule/Action/Discount/ToPercentTest.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?php
22
/**
3-
* Copyright © Magento, Inc. All rights reserved.
4-
* See COPYING.txt for license details.
3+
* Copyright 2014 Adobe
4+
* All Rights Reserved.
55
*/
66
declare(strict_types=1);
77

@@ -221,8 +221,8 @@ public static function calculateDataProvider()
221221
'expectedRuleDiscountQty' => 100,
222222
'expectedDiscountData' => [
223223
'amount' => 98,
224-
'baseAmount' => 59.49999999999999,
225-
'originalAmount' => 118.99999999999999,
224+
'baseAmount' => 59.50,
225+
'originalAmount' => 119,
226226
'baseOriginalAmount' => 80.5,
227227
],
228228
]

‎dev/tests/integration/testsuite/Magento/SalesRule/Model/Rule/Action/Discount/CartFixedTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -535,7 +535,7 @@ public static function discountByPercentDataProvider()
535535
],
536536
[
537537
'percentDiscount' => 50,
538-
'expectedDiscounts' => ['simple1' => 5.72, 'simple2' => 15.27, 'totalDiscount' => -20.99]
538+
'expectedDiscounts' => ['simple1' => 5.72, 'simple2' => 15.28, 'totalDiscount' => -21]
539539
],
540540
[
541541
'percentDiscount' => 100,

0 commit comments

Comments
 (0)