RefundReimportOrder.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. namespace Dotdigitalgroup\Email\Observer\Sales;
  3. /**
  4. * Reset the contact import on order refund.
  5. */
  6. class RefundReimportOrder implements \Magento\Framework\Event\ObserverInterface
  7. {
  8. /**
  9. * @var \Dotdigitalgroup\Email\Model\ResourceModel\Order
  10. */
  11. private $orderResource;
  12. /**
  13. * @var \Dotdigitalgroup\Email\Helper\Data
  14. */
  15. private $helper;
  16. /**
  17. * @var \Dotdigitalgroup\Email\Model\OrderFactory
  18. */
  19. private $emailOrderFactory;
  20. /**
  21. * @var \Magento\Framework\Registry
  22. */
  23. private $_registry;
  24. /**
  25. * RefundReimportOrder constructor.
  26. *
  27. * @param \Dotdigitalgroup\Email\Model\OrderFactory $emailOrderFactory
  28. * @param \Dotdigitalgroup\Email\Model\ResourceModel\Order $orderResource
  29. * @param \Magento\Framework\Registry $registry
  30. * @param \Dotdigitalgroup\Email\Helper\Data $data
  31. */
  32. public function __construct(
  33. \Dotdigitalgroup\Email\Model\OrderFactory $emailOrderFactory,
  34. \Dotdigitalgroup\Email\Model\ResourceModel\Order $orderResource,
  35. \Magento\Framework\Registry $registry,
  36. \Dotdigitalgroup\Email\Helper\Data $data
  37. ) {
  38. $this->emailOrderFactory = $emailOrderFactory;
  39. $this->orderResource = $orderResource;
  40. $this->helper = $data;
  41. $this->_registry = $registry;
  42. }
  43. /**
  44. * @param \Magento\Framework\Event\Observer $observer
  45. *
  46. * @return $this
  47. */
  48. public function execute(\Magento\Framework\Event\Observer $observer)
  49. {
  50. $creditmemo = $observer->getEvent()->getCreditmemo();
  51. $storeId = $creditmemo->getStoreId();
  52. $order = $creditmemo->getOrder();
  53. $orderId = $order->getEntityId();
  54. $quoteId = $order->getQuoteId();
  55. try {
  56. /*
  57. * Reimport transactional data.
  58. */
  59. $emailOrder = $this->emailOrderFactory->create()
  60. ->loadByOrderId($orderId, $quoteId, $storeId);
  61. if (!$emailOrder->getId()) {
  62. $this->helper->log(
  63. 'ERROR Creditmemmo Order not found :'
  64. . $orderId . ', quote id : ' . $quoteId . ', store id '
  65. . $storeId
  66. );
  67. return $this;
  68. }
  69. $emailOrder->setEmailImported(\Dotdigitalgroup\Email\Model\Contact::EMAIL_CONTACT_NOT_IMPORTED);
  70. $this->orderResource->save($emailOrder);
  71. } catch (\Exception $e) {
  72. $this->helper->debug((string)$e, []);
  73. }
  74. return $this;
  75. }
  76. }