Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
GetLegacyStockItem.php
Go to the documentation of this file.
1 <?php
6 declare(strict_types=1);
7 
9 
11 use Magento\CatalogInventory\Api\Data\StockItemInterfaceFactory;
13 use Magento\CatalogInventory\Api\StockItemCriteriaInterfaceFactory;
18 
20 {
24  private $stockItemFactory;
25 
29  private $legacyStockItemCriteriaFactory;
30 
34  private $legacyStockItemRepository;
35 
39  private $getProductIdsBySkus;
40 
47  public function __construct(
48  StockItemInterfaceFactory $stockItemFactory,
49  StockItemCriteriaInterfaceFactory $legacyStockItemCriteriaFactory,
50  StockItemRepositoryInterface $legacyStockItemRepository,
51  GetProductIdsBySkusInterface $getProductIdsBySkus
52  ) {
53  $this->stockItemFactory = $stockItemFactory;
54  $this->legacyStockItemCriteriaFactory = $legacyStockItemCriteriaFactory;
55  $this->legacyStockItemRepository = $legacyStockItemRepository;
56  $this->getProductIdsBySkus = $getProductIdsBySkus;
57  }
58 
64  public function execute(string $sku): StockItemInterface
65  {
66  $searchCriteria = $this->legacyStockItemCriteriaFactory->create();
67 
68  try {
69  $productId = $this->getProductIdsBySkus->execute([$sku])[$sku];
70  } catch (NoSuchEntityException $skuNotFoundInCatalog) {
71  $stockItem = $this->stockItemFactory->create();
72  // Make possible to Manage Stock for Products removed from Catalog
73  $stockItem->setManageStock(true);
74  return $stockItem;
75  }
76 
78 
79  // Stock::DEFAULT_STOCK_ID is used until we have proper multi-stock item configuration
81  $searchCriteria->setLimit(1, 1);
82 
83  $stockItemCollection = $this->legacyStockItemRepository->getList($searchCriteria);
84  if ($stockItemCollection->getTotalCount() === 0) {
85  return $this->stockItemFactory->create();
86  }
87 
88  $stockItems = $stockItemCollection->getItems();
89  $stockItem = reset($stockItems);
90  return $stockItem;
91  }
92 }
__construct(StockItemInterfaceFactory $stockItemFactory, StockItemCriteriaInterfaceFactory $legacyStockItemCriteriaFactory, StockItemRepositoryInterface $legacyStockItemRepository, GetProductIdsBySkusInterface $getProductIdsBySkus)
$searchCriteria