90 lines
2.2 KiB
PHP
Executable File
90 lines
2.2 KiB
PHP
Executable File
<?php
|
|
namespace JR\NetSuite\Observer;
|
|
|
|
use Magento\Framework\Event\ObserverInterface;
|
|
use JR\NetSuite\Helper\Data;
|
|
use JR\NetSuite\Logger\Logger;
|
|
use JR\NetSuite\Model\Queue\OrderToQueue;
|
|
use Magento\Framework\Serialize\Serializer\Json;
|
|
use Magento\Framework\Serialize\SerializerInterface;
|
|
use Magento\MessageQueue\Model\Publisher;
|
|
use \Magento\Framework\MessageQueue\ConsumerInterface;
|
|
|
|
class OrderPlaceAfter implements ObserverInterface
|
|
{
|
|
/**
|
|
* @var Data
|
|
*/
|
|
protected $helper;
|
|
|
|
/**
|
|
* @var Logger
|
|
*/
|
|
protected $logger;
|
|
|
|
/**
|
|
* @var Json
|
|
*/
|
|
protected $json;
|
|
|
|
/**
|
|
* @var OrderToQueue
|
|
*/
|
|
protected $publisher;
|
|
|
|
public function __construct(
|
|
Data $helper,
|
|
Logger $logger,
|
|
Json $json,
|
|
OrderToQueue $publisher,
|
|
)
|
|
{
|
|
$this->helper = $helper;
|
|
$this->logger = $logger;
|
|
$this->json = $json;
|
|
$this->publisher = $publisher;
|
|
}
|
|
|
|
public function execute(\Magento\Framework\Event\Observer $observer)
|
|
{
|
|
if (!$this->helper->getNetSuiteIsEnabled()) {
|
|
return $this;
|
|
}
|
|
|
|
$order = $observer->getEvent()->getOrder();
|
|
$customerEmail = $order->getCustomerEmail();
|
|
$orderId = $order->getRealOrderId();
|
|
$this->logger->info('OrderPlace observer executed');
|
|
$this->logger->info('Order ID: ' . $order->getRealOrderId());
|
|
|
|
$orderStatus = $order->getState();
|
|
if ($orderStatus == 'pending') {
|
|
$this->logger->info('OrderPlace observer: Order status is pending');
|
|
return $this;
|
|
}
|
|
|
|
$collectedData = [
|
|
'order_id' => $orderId,
|
|
'customer_email' => $customerEmail,
|
|
'order_status' => $orderStatus
|
|
];
|
|
|
|
$this->publish($this->json->serialize($collectedData));
|
|
|
|
|
|
$msg = "\n".date('YmdHis')." increment id ".$order->getIncrementId(). " | entity_id ".$order->getId() ." | paymentMethodCode ".$order->getPayment()->getMethod();
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Publishing data
|
|
*
|
|
* @param $data
|
|
* @return void
|
|
*/
|
|
public function publish($data)
|
|
{
|
|
$this->publisher->publishData($data);
|
|
}
|
|
} |