18 $rulePercent = min(100,
$rule->getDiscountAmount());
19 $discountData = $this->_calculate(
$rule,
$item, $qty, $rulePercent);
31 $step =
$rule->getDiscountStep();
33 $qty = floor($qty / $step) * $step;
46 protected function _calculate(
$rule,
$item, $qty, $rulePercent)
49 $discountData = $this->discountFactory->create();
51 $itemPrice = $this->validator->getItemPrice(
$item);
52 $baseItemPrice = $this->validator->getItemBasePrice(
$item);
53 $itemOriginalPrice = $this->validator->getItemOriginalPrice(
$item);
54 $baseItemOriginalPrice = $this->validator->getItemBaseOriginalPrice(
$item);
56 $_rulePct = $rulePercent / 100;
57 $discountData->setAmount(($qty * $itemPrice -
$item->getDiscountAmount()) * $_rulePct);
58 $discountData->setBaseAmount(($qty * $baseItemPrice -
$item->getBaseDiscountAmount()) * $_rulePct);
59 $discountData->setOriginalAmount(($qty * $itemOriginalPrice -
$item->getDiscountAmount()) * $_rulePct);
60 $discountData->setBaseOriginalAmount(
61 ($qty * $baseItemOriginalPrice -
$item->getBaseDiscountAmount()) * $_rulePct
64 if (!
$rule->getDiscountQty() ||
$rule->getDiscountQty() > $qty) {
65 $discountPercent = min(100,
$item->getDiscountPercent() + $rulePercent);
66 $item->setDiscountPercent($discountPercent);
calculate($rule, $item, $qty)