1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- declare(strict_types=1);
- namespace Magento\InventoryConfiguration\Model;
- use Magento\CatalogInventory\Api\Data\StockItemInterface;
- use Magento\CatalogInventory\Api\Data\StockItemInterfaceFactory;
- use Magento\CatalogInventory\Api\StockItemRepositoryInterface;
- use Magento\CatalogInventory\Api\StockItemCriteriaInterfaceFactory;
- use Magento\CatalogInventory\Model\Stock;
- use Magento\InventoryCatalogApi\Model\GetProductIdsBySkusInterface;
- use Magento\Framework\Exception\NoSuchEntityException;
- use Magento\Framework\Exception\LocalizedException;
- class GetLegacyStockItem
- {
- /**
- * @var StockItemInterfaceFactory
- */
- private $stockItemFactory;
- /**
- * @var StockItemCriteriaInterfaceFactory
- */
- private $legacyStockItemCriteriaFactory;
- /**
- * @var StockItemRepositoryInterface
- */
- private $legacyStockItemRepository;
- /**
- * @var GetProductIdsBySkusInterface
- */
- private $getProductIdsBySkus;
- /**
- * @param StockItemInterfaceFactory $stockItemFactory
- * @param StockItemCriteriaInterfaceFactory $legacyStockItemCriteriaFactory
- * @param StockItemRepositoryInterface $legacyStockItemRepository
- * @param GetProductIdsBySkusInterface $getProductIdsBySkus
- */
- public function __construct(
- StockItemInterfaceFactory $stockItemFactory,
- StockItemCriteriaInterfaceFactory $legacyStockItemCriteriaFactory,
- StockItemRepositoryInterface $legacyStockItemRepository,
- GetProductIdsBySkusInterface $getProductIdsBySkus
- ) {
- $this->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;
- }
- }
|