SalesEventOrderToQuoteObserver.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\GiftMessage\Observer;
  7. use Magento\Framework\Event\ObserverInterface;
  8. /**
  9. * Gift Message Observer Model
  10. *
  11. * @author Magento Core Team <core@magentocommerce.com>
  12. */
  13. class SalesEventOrderToQuoteObserver implements ObserverInterface
  14. {
  15. /**
  16. * Gift message message
  17. *
  18. * @var \Magento\GiftMessage\Helper\Message|null
  19. */
  20. protected $_giftMessageMessage = null;
  21. /**
  22. * @var \Magento\GiftMessage\Model\MessageFactory
  23. */
  24. protected $_messageFactory;
  25. /**
  26. * @param \Magento\GiftMessage\Model\MessageFactory $messageFactory
  27. * @param \Magento\GiftMessage\Helper\Message $giftMessageMessage
  28. */
  29. public function __construct(
  30. \Magento\GiftMessage\Model\MessageFactory $messageFactory,
  31. \Magento\GiftMessage\Helper\Message $giftMessageMessage
  32. ) {
  33. $this->_messageFactory = $messageFactory;
  34. $this->_giftMessageMessage = $giftMessageMessage;
  35. }
  36. /**
  37. * Duplicates giftmessage from order to quote on import or reorder
  38. *
  39. * @param \Magento\Framework\Event\Observer $observer
  40. * @return $this
  41. */
  42. public function execute(\Magento\Framework\Event\Observer $observer)
  43. {
  44. $order = $observer->getEvent()->getOrder();
  45. // Do not import giftmessage data if order is reordered
  46. if ($order->getReordered()) {
  47. return $this;
  48. }
  49. if (!$this->_giftMessageMessage->isMessagesAllowed('order', $order, $order->getStore())) {
  50. return $this;
  51. }
  52. $giftMessageId = $order->getGiftMessageId();
  53. if ($giftMessageId) {
  54. $giftMessage = $this->_messageFactory->create()->load($giftMessageId)->setId(null)->save();
  55. $observer->getEvent()->getQuote()->setGiftMessageId($giftMessage->getId());
  56. }
  57. return $this;
  58. }
  59. }