AddSalesRuleNameToOrderObserver.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\SalesRule\Observer;
  7. use Magento\Framework\Event\Observer as EventObserver;
  8. use Magento\Framework\Event\ObserverInterface;
  9. class AddSalesRuleNameToOrderObserver implements ObserverInterface
  10. {
  11. /**
  12. * @var \Magento\SalesRule\Model\RuleFactory
  13. */
  14. protected $_ruleFactory;
  15. /**
  16. * @var \Magento\SalesRule\Model\Coupon
  17. */
  18. protected $_coupon;
  19. /**
  20. * @param \Magento\SalesRule\Model\RuleFactory $ruleFactory
  21. * @param \Magento\SalesRule\Model\Coupon $coupon
  22. */
  23. public function __construct(
  24. \Magento\SalesRule\Model\RuleFactory $ruleFactory,
  25. \Magento\SalesRule\Model\Coupon $coupon
  26. ) {
  27. $this->_ruleFactory = $ruleFactory;
  28. $this->_coupon = $coupon;
  29. }
  30. /**
  31. * Add coupon's rule name to order data
  32. *
  33. * @param EventObserver $observer
  34. * @return $this
  35. */
  36. public function execute(EventObserver $observer)
  37. {
  38. $order = $observer->getOrder();
  39. $couponCode = $order->getCouponCode();
  40. if (empty($couponCode)) {
  41. return $this;
  42. }
  43. $this->_coupon->loadByCode($couponCode);
  44. $ruleId = $this->_coupon->getRuleId();
  45. if (empty($ruleId)) {
  46. return $this;
  47. }
  48. /** @var \Magento\SalesRule\Model\Rule $rule */
  49. $rule = $this->_ruleFactory->create()->load($ruleId);
  50. $order->setCouponRuleName($rule->getName());
  51. return $this;
  52. }
  53. }