logger = $logger; $this->rmaQueueCollectionFactory = $rmaQueueCollectionFactory; $this->rmaQueueFactory = $rmaQueueFactory; $this->statusRepository = $statusRepository; $this->rmaManagement = $rmaManagement; } public function execute(\Magento\Framework\Event\Observer $observer) { try { $rma = $observer->getData('rma'); $rmaId = $rma->getId(); if (!$rmaId) { return; } // if RMA status is not pending approval, do nothing if ($this->statusRepository->get($rma->getStatusId())?->getName() !== 'Pending Approval') { return; } // find RMA in queue by RMA ID $rmaQueueCollection = $this->rmaQueueCollectionFactory->create(); $rmaQueueCollection->addFieldToFilter('rma_id', $rma->getId()); $rmaQueue = $rmaQueueCollection->getFirstItem(); // if RMA is already queued, do nothing if ($rmaQueue?->getId()) { return; } $rmaQueueCollection = $this->rmaQueueCollectionFactory->create(); $rmaQueueCollection->addFieldToFilter('status', 'processing'); $order = $this->rmaManagement->getOrder($rma); foreach($rmaQueueCollection as $rmaQueue) { if ($rmaQueue->getOrderIncrementId() == $order->getRealorderId()) { return; } } // if RMA is not queued, queue RMA $rmaQueue = $this->rmaQueueFactory->create(); $data = [ 'rma_id' => $rma->getId(), 'status' => 'pending', ]; $rmaQueue->setData($data); $rmaQueue->save(); } catch (\Exception $e) { $this->logger->error('Update RMA Queue Error: ' . $e->getMessage()); } } }