ByFixed.php 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\SalesRule\Model\Rule\Action\Discount;
  7. class ByFixed extends AbstractDiscount
  8. {
  9. /**
  10. * @param \Magento\SalesRule\Model\Rule $rule
  11. * @param \Magento\Quote\Model\Quote\Item\AbstractItem $item
  12. * @param float $qty
  13. * @return \Magento\SalesRule\Model\Rule\Action\Discount\Data
  14. */
  15. public function calculate($rule, $item, $qty)
  16. {
  17. /** @var \Magento\SalesRule\Model\Rule\Action\Discount\Data $discountData */
  18. $discountData = $this->discountFactory->create();
  19. $quoteAmount = $this->priceCurrency->convert($rule->getDiscountAmount(), $item->getQuote()->getStore());
  20. $discountData->setAmount($qty * $quoteAmount);
  21. $discountData->setBaseAmount($qty * $rule->getDiscountAmount());
  22. return $discountData;
  23. }
  24. /**
  25. * @param float $qty
  26. * @param \Magento\SalesRule\Model\Rule $rule
  27. * @return float
  28. */
  29. public function fixQuantity($qty, $rule)
  30. {
  31. $step = $rule->getDiscountStep();
  32. if ($step) {
  33. $qty = floor($qty / $step) * $step;
  34. }
  35. return $qty;
  36. }
  37. }