orderQueueCollectionFactory = $orderQueueCollectionFactory; $this->orderSync = $orderSync; $this->orderMapper = $orderMapper; $queue = $this->orderQueueCollectionFactory->create(); $lastSyncRecordDate = $queue->getLastSyncRecordDate(); if ($lastSyncRecordDate) { $this->lastSyncRecordDate = $this->helper->convertUtcToLocalTime($lastSyncRecordDate, 'm/d/Y g:i a', '-1 minute'); } } /** * Fetch data from NetSuite * * @param int $pageSize * @param int $page * @return array */ public function fetch($pageSize = 50, $page = 1) { // $queue = $this->orderQueueCollectionFactory->create(); // $lastSyncRecordDate = $queue->getLastSyncRecordDate(); // if ($lastSyncRecordDate) { // $lastSyncRecordDate = $this->helper->convertUtcToLocalTime($lastSyncRecordDate, 'm/d/Y g:i a', '-1 minute'); // } // $filter = (bool)$lastSyncRecordDate ? ['filter' => ['datecreated', 'after', $lastSyncRecordDate]] : []; // $filter = (bool)$lastSyncRecordDate ? ['filter' => ['lastmodifieddate', 'after', $lastSyncRecordDate]] : []; // $filter = (bool)$lastSyncRecordDate ? ['filter' => ['lastmodifieddate', 'after', '03/05/2026 11:17 am']] : []; // $filter = ['filter' => ['lastmodifieddate', 'after', '08/01/2026 12:00 am']]; $filter = (bool)$this->lastSyncRecordDate ? ['filter' => ['lastmodifieddate', 'after', $this->lastSyncRecordDate]] : []; $this->logger->info("[$this->name" . "QueueManager] fetch: " . json_encode([ "page" => $page, "page size" => $pageSize, "filter" => $filter, "last sync date" => $this->lastSyncRecordDate, ], JSON_PRETTY_PRINT)); $results = $this->netSuiteAPI->fetchOrders($pageSize, $page, $filter); $this->logger->info("[$this->name" . "QueueManager] fetch: " . json_encode([ "result size" => $results['size'], "total pages" => $results['totalPages'], "total size" => $results['totalSize'], ], JSON_PRETTY_PRINT)); return $results; } /** * {@inheritdoc} */ public function getPageSize() { return $this->pageSize; } /** * Convert NetSuite data to Magento format * * @param array $data * @return array */ public function convertToMagentoFormat($data) { return $this->orderMapper->convertToMagentoFormat($data); } /** * adds data to the queue. * * @param array $data * @return void */ public function enqueue($data) { $queue = $this->orderQueueCollectionFactory->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->orderQueueCollectionFactory->create()->getNext($batchSize); } /** * Process queue item * * @param $queueItem * @return array */ public function processQueueItem($queueItem) { $data = $this->serializer->unserialize($queueItem->getData('data')); //return $this->orderSync->createOrSkip($data); return $this->orderSync->createOrUpdate($data); } }