ltsecurityinc安防产品在线商城代码
This commit is contained in:
+178
@@ -0,0 +1,178 @@
|
||||
<?php
|
||||
|
||||
namespace JR\NetSuite\Queue;
|
||||
|
||||
use JR\NetSuite\Lib\NetSuiteAPI;
|
||||
use Magento\Framework\Serialize\SerializerInterface;
|
||||
|
||||
use \JR\NetSuite\Model\ResourceModel\RmaQueue\CollectionFactory as RmaQueueCollectionFactory;
|
||||
use \JR\NetSuite\Service\RmaSyncService;
|
||||
use \JR\NetSuite\Mapper\RmaMapper;
|
||||
use \Mirasvit\Rma\Api\Repository\RmaRepositoryInterface;
|
||||
|
||||
class RmaQueueManager extends AbstractQueueManager
|
||||
{
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'Rma';
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
protected $pageSize = 20;
|
||||
|
||||
/**
|
||||
* @var RmaQueueCollectionFactory
|
||||
*/
|
||||
protected $rmaQueueCollectionFactory;
|
||||
|
||||
/**
|
||||
* @var RmaSyncService
|
||||
*/
|
||||
protected $rmaSync;
|
||||
|
||||
/**
|
||||
* @var RmaMapper
|
||||
*/
|
||||
protected $rmaMapper;
|
||||
|
||||
/**
|
||||
* @var RmaRepositoryInterface
|
||||
*/
|
||||
protected $rmaRepository;
|
||||
|
||||
/**
|
||||
* @var \JR\NetSuite\Mapper\OrderMapper
|
||||
*/
|
||||
private $orderMapper;
|
||||
|
||||
/**
|
||||
* RmaQueueManager constructor.
|
||||
*
|
||||
* @param \JR\NetSuite\Helper\Data $helper
|
||||
* @param \JR\NetSuite\Logger\Logger $logger
|
||||
* @param SerializerInterface $serializer
|
||||
* @param NetSuiteAPI $netSuiteAPI
|
||||
* @param RmaQueueCollectionFactory $rmaQueueCollectionFactory
|
||||
* @param RmasSyncService $rmaSync
|
||||
* @param RmaMapper $rmaMapper
|
||||
* @param RmaRepositoryInterface $rmaRepository
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(
|
||||
\JR\NetSuite\Helper\Data $helper,
|
||||
\JR\NetSuite\Logger\Logger $logger,
|
||||
SerializerInterface $serializer,
|
||||
NetSuiteAPI $netSuiteAPI,
|
||||
RmaQueueCollectionFactory $rmaQueueCollectionFactory,
|
||||
RmaSyncService $rmaSync,
|
||||
RmaMapper $rmaMapper,
|
||||
RmaRepositoryInterface $rmaRepository,
|
||||
\JR\NetSuite\Mapper\OrderMapper $orderMapper
|
||||
) {
|
||||
parent::__construct($helper, $logger, $serializer, $netSuiteAPI);
|
||||
$this->rmaQueueCollectionFactory = $rmaQueueCollectionFactory;
|
||||
$this->rmaSync = $rmaSync;
|
||||
$this->rmaMapper = $rmaMapper;
|
||||
$this->rmaRepository = $rmaRepository;
|
||||
$this->orderMapper = $orderMapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch data from NetSuite
|
||||
*
|
||||
* @param int $pageSize
|
||||
* @param int $page
|
||||
* @return array
|
||||
*/
|
||||
public function fetch($pageSize = 50, $page = 1, $additionalParams = [])
|
||||
{
|
||||
$queue = $this->rmaQueueCollectionFactory->create();
|
||||
$lastSyncRecordDate = $queue->getLastSyncRecordDate();
|
||||
if ($lastSyncRecordDate) {
|
||||
$lastSyncRecordDate = $this->helper->convertUtcToLocalTime($lastSyncRecordDate, 'm/d/Y g:i a');
|
||||
}
|
||||
|
||||
// only fetch records in the past year
|
||||
$yearAgo = date('m/d/Y', strtotime('-1 year'));
|
||||
if (!$lastSyncRecordDate || strtotime($lastSyncRecordDate) < strtotime($yearAgo)) {
|
||||
$lastSyncRecordDate = $yearAgo;
|
||||
}
|
||||
|
||||
$filter = (bool)$lastSyncRecordDate ? ['filter' => ['datecreated', 'after', $lastSyncRecordDate]] : [];
|
||||
|
||||
|
||||
return $this->netSuiteAPI->fetchReturnAuthorizations($pageSize, $page, $filter);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getPageSize()
|
||||
{
|
||||
return $this->pageSize;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert NetSuite data to Magento format
|
||||
*
|
||||
* @param array $data
|
||||
* @return array
|
||||
*/
|
||||
public function convertToMagentoFormat($data)
|
||||
{
|
||||
return $this->rmaMapper->convertToMagentoFormat($data);
|
||||
}
|
||||
|
||||
/**
|
||||
* adds data to the queue.
|
||||
*
|
||||
* @param array $data
|
||||
* @return void
|
||||
*/
|
||||
public function enqueue($data)
|
||||
{
|
||||
$queue = $this->rmaQueueCollectionFactory->create();
|
||||
foreach ($data as $item) {
|
||||
$queue->insertOrUpdate($item);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get next queue items to process
|
||||
*
|
||||
* @param int $batchSize
|
||||
* @return array
|
||||
*/
|
||||
public function dequeue($batchSize = 50)
|
||||
{
|
||||
return $this->rmaQueueCollectionFactory->create()->getNext($batchSize);
|
||||
}
|
||||
|
||||
/**
|
||||
* Process queue item
|
||||
*
|
||||
* @param $queueItem
|
||||
* @return array
|
||||
*/
|
||||
public function processQueueItem($queueItem)
|
||||
{
|
||||
$data = $this->serializer->unserialize($queueItem->getData('data'));
|
||||
if ($queueItem->getRmaId()) {
|
||||
// update the rma
|
||||
$result = $this->rmaSync->update($data, $queueItem->getRmaId());
|
||||
} else {
|
||||
$order = $this->rmaSync->getOrder($data);
|
||||
// set the increment id to queue item for plugin to skip email sending
|
||||
$queueItem->setOrderIncrementId($order->getRealorderId());
|
||||
$queueItem->save();
|
||||
$result = $this->rmaSync->createOrSkip($data, $order);
|
||||
if (!isset($result['error']) && isset($result['data'])) {
|
||||
$queueItem->setRmaId($result['data']->getRmaId());
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user