19 $discountData = $this->discountFactory->create();
21 $itemPrice = $this->validator->getItemPrice(
$item);
22 $baseItemPrice = $this->validator->getItemBasePrice(
$item);
23 $itemOriginalPrice = $this->validator->getItemOriginalPrice(
$item);
24 $baseItemOriginalPrice = $this->validator->getItemBaseOriginalPrice(
$item);
26 $x =
$rule->getDiscountStep();
27 $y =
$rule->getDiscountAmount();
31 $buyAndDiscountQty = $x + $y;
33 $fullRuleQtyPeriod = floor($qty / $buyAndDiscountQty);
34 $freeQty = $qty - $fullRuleQtyPeriod * $buyAndDiscountQty;
36 $discountQty = $fullRuleQtyPeriod * $y;
38 $discountQty += $freeQty - $x;
41 $discountData->setAmount($discountQty * $itemPrice);
42 $discountData->setBaseAmount($discountQty * $baseItemPrice);
43 $discountData->setOriginalAmount($discountQty * $itemOriginalPrice);
44 $discountData->setBaseOriginalAmount($discountQty * $baseItemOriginalPrice);
calculate($rule, $item, $qty)