Skip to content

Commit ebe57d1

Browse files
committed
ACP2E-3403: Cart Price Rules Miscalculating Discount
1 parent b834f22 commit ebe57d1

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

app/code/Magento/SalesRule/Model/Quote/Discount.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -188,10 +188,10 @@ public function collect(
188188
$items = $this->calculator->sortItemsByPriority($items, $address);
189189
$itemsToApplyRules = $items;
190190
$rules = $this->calculator->getRules($address);
191-
$totalDiscount = [];
192191
$address->setBaseDiscountAmount(0);
193192
/** @var Rule $rule */
194193
foreach ($rules as $rule) {
194+
$ruleTotalDiscount = 0;
195195
/** @var Item $item */
196196
foreach ($itemsToApplyRules as $key => $item) {
197197
if ($item->getNoDiscount() || !$this->calculator->canApplyDiscount($item) || $item->getParentItem()) {
@@ -221,14 +221,14 @@ public function collect(
221221
unset($itemsToApplyRules[$key]);
222222
}
223223

224-
if (($children = $item->getChildren()) && $item->isChildrenCalculated()) {
225-
foreach ($children as $child) {
226-
$totalDiscount[$child->getId()] = $child->getBaseDiscountAmount();
224+
if ($item->getChildren() && $item->isChildrenCalculated()) {
225+
foreach ($item->getChildren() as $child) {
226+
$ruleTotalDiscount += $child->getBaseDiscountAmount();
227227
}
228228
}
229-
$totalDiscount[$item->getId()] = $item->getBaseDiscountAmount();
229+
$ruleTotalDiscount += $item->getBaseDiscountAmount();
230230
}
231-
$address->setBaseDiscountAmount(array_sum(array_values($totalDiscount)));
231+
$address->setBaseDiscountAmount($ruleTotalDiscount);
232232
}
233233
$this->calculator->initTotals($items, $address);
234234
foreach ($items as $item) {

0 commit comments

Comments
 (0)