Skip to content

Commit c741823

Browse files
committed
ACPT-1408: Investigate 1m call on 1k rules
1 parent d12b333 commit c741823

File tree

4 files changed

+427
-413
lines changed

4 files changed

+427
-413
lines changed

app/code/Magento/SalesRule/Helper/CartFixedDiscount.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ public function getDiscountAmount(
123123
* @param float $qty
124124
* @param float $baseItemPrice
125125
* @param float $baseItemDiscountAmount
126-
* @param float $baseRuleTotalsDiscount
126+
* @param float $baseRuleTotalsWithDiscount
127127
* @param string $discountType
128128
* @return float
129129
*/
@@ -138,6 +138,7 @@ public function getDiscountedAmountProportionally(
138138
$baseItemPriceTotal = $baseItemPrice * $qty - $baseItemDiscountAmount;
139139
$ratio = $baseRuleTotalsDiscount != 0 ? $baseItemPriceTotal / $baseRuleTotalsDiscount : 0;
140140
$discountAmount = $this->deltaPriceRound->round($ruleDiscount * $ratio, $discountType);
141+
141142
return $discountAmount;
142143
}
143144

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,8 @@ public function collect(
178178
$items = $this->calculator->sortItemsByPriority($items, $address);
179179
$itemsToApplyRules = $items;
180180
$rules = $this->calculator->getRules($address);
181+
$totalDiscount = 0;
182+
$address->setBaseDiscountAmount(0);
181183
/** @var Rule $rule */
182184
foreach ($rules as $rule) {
183185
/** @var Item $item */
@@ -190,12 +192,23 @@ public function collect(
190192
}
191193
$eventArgs['item'] = $item;
192194
$this->eventManager->dispatch('sales_quote_address_discount_item', $eventArgs);
195+
193196
$this->calculator->process($item, $rule);
194197
$appliedRuleIds = $item->getAppliedRuleIds() ? explode(',', $item->getAppliedRuleIds()) : [];
195198
if ($rule->getStopRulesProcessing() && in_array($rule->getId(), $appliedRuleIds)) {
196199
unset($itemsToApplyRules[$key]);
197200
}
201+
202+
//@TODO write actual implementation//
203+
// $address->setDiscountAmount($total->getDiscountAmount());
204+
// $address->setBaseDiscountAmount($total->getBaseDiscountAmount());
205+
$totalDiscount += $item->getBaseDiscountAmount();
206+
// $address->setBaseDiscountAmount($totalDiscount);
207+
// $address->setSubtotalWithDiscount($total->getSubtotal() + $total->getDiscountAmount());
208+
209+
// $this->calculator->initTotal($item, $rule, $address);
198210
}
211+
$address->setBaseDiscountAmount($totalDiscount);
199212
// $this->calculator->initTotals($items, $address);
200213
}
201214
$this->calculator->initTotals($items, $address);

app/code/Magento/SalesRule/Model/Rule/Action/Discount/CartFixed.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ public function calculate($rule, $item, $qty)
134134
$qty,
135135
$baseItemPrice,
136136
$baseItemDiscountAmount,
137-
$baseRuleTotals - $baseRuleTotalsDiscount,
137+
$baseRuleTotals - $address->getBaseDiscountAmount(),
138138
$discountType
139139
);
140140
}

0 commit comments

Comments
 (0)