stockItemFactory = $stockItemFactory; $this->legacyStockItemCriteriaFactory = $legacyStockItemCriteriaFactory; $this->legacyStockItemRepository = $legacyStockItemRepository; $this->getProductIdsBySkus = $getProductIdsBySkus; } /** * @param string $sku * @return StockItemInterface * @throws LocalizedException */ public function execute(string $sku): StockItemInterface { $searchCriteria = $this->legacyStockItemCriteriaFactory->create(); try { $productId = $this->getProductIdsBySkus->execute([$sku])[$sku]; } catch (NoSuchEntityException $skuNotFoundInCatalog) { $stockItem = $this->stockItemFactory->create(); // Make possible to Manage Stock for Products removed from Catalog $stockItem->setManageStock(true); return $stockItem; } $searchCriteria->addFilter(StockItemInterface::PRODUCT_ID, StockItemInterface::PRODUCT_ID, $productId); // Stock::DEFAULT_STOCK_ID is used until we have proper multi-stock item configuration $searchCriteria->addFilter(StockItemInterface::STOCK_ID, StockItemInterface::STOCK_ID, Stock::DEFAULT_STOCK_ID); $searchCriteria->setLimit(1, 1); $stockItemCollection = $this->legacyStockItemRepository->getList($searchCriteria); if ($stockItemCollection->getTotalCount() === 0) { return $this->stockItemFactory->create(); } $stockItems = $stockItemCollection->getItems(); $stockItem = reset($stockItems); return $stockItem; } }