ToFixed.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637
  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 ToFixed 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. $store = $item->getQuote()->getStore();
  20. $itemPrice = $this->validator->getItemPrice($item);
  21. $baseItemPrice = $this->validator->getItemBasePrice($item);
  22. $itemOriginalPrice = $this->validator->getItemOriginalPrice($item);
  23. $baseItemOriginalPrice = $this->validator->getItemBaseOriginalPrice($item);
  24. $quoteAmount = $this->priceCurrency->convert($rule->getDiscountAmount(), $store);
  25. $discountData->setAmount($qty * ($itemPrice - $quoteAmount));
  26. $discountData->setBaseAmount($qty * ($baseItemPrice - $rule->getDiscountAmount()));
  27. $discountData->setOriginalAmount($qty * ($itemOriginalPrice - $quoteAmount));
  28. $discountData->setBaseOriginalAmount($qty * ($baseItemOriginalPrice - $rule->getDiscountAmount()));
  29. return $discountData;
  30. }
  31. }