Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
StockRegistry.php
Go to the documentation of this file.
1 <?php
8 
9 use Magento\Catalog\Model\ProductFactory;
12 use Magento\CatalogInventory\Api\StockItemCriteriaInterfaceFactory;
16 
23 {
28 
33 
37  protected $productFactory;
38 
43 
47  protected $criteriaFactory;
48 
56  public function __construct(
60  StockItemCriteriaInterfaceFactory $criteriaFactory,
61  ProductFactory $productFactory
62  ) {
63  $this->stockConfiguration = $stockConfiguration;
64  $this->stockRegistryProvider = $stockRegistryProvider;
65  $this->stockItemRepository = $stockItemRepository;
66  $this->criteriaFactory = $criteriaFactory;
67  $this->productFactory = $productFactory;
68  }
69 
74  public function getStock($scopeId = null)
75  {
76  $scopeId = $this->stockConfiguration->getDefaultScopeId();
77  return $this->stockRegistryProvider->getStock($scopeId);
78  }
79 
85  public function getStockItem($productId, $scopeId = null)
86  {
87  $scopeId = $this->stockConfiguration->getDefaultScopeId();
88  return $this->stockRegistryProvider->getStockItem($productId, $scopeId);
89  }
90 
97  public function getStockItemBySku($productSku, $scopeId = null)
98  {
99  $scopeId = $this->stockConfiguration->getDefaultScopeId();
100  $productId = $this->resolveProductId($productSku);
101  return $this->stockRegistryProvider->getStockItem($productId, $scopeId);
102  }
103 
109  public function getStockStatus($productId, $scopeId = null)
110  {
111  $scopeId = $this->stockConfiguration->getDefaultScopeId();
112  return $this->stockRegistryProvider->getStockStatus($productId, $scopeId);
113  }
114 
121  public function getStockStatusBySku($productSku, $scopeId = null)
122  {
123  $scopeId = $this->stockConfiguration->getDefaultScopeId();
124  $productId = $this->resolveProductId($productSku);
125  return $this->getStockStatus($productId, $scopeId);
126  }
127 
134  public function getProductStockStatus($productId, $scopeId = null)
135  {
136  $scopeId = $this->stockConfiguration->getDefaultScopeId();
137  $stockStatus = $this->getStockStatus($productId, $scopeId);
138  return $stockStatus->getStockStatus();
139  }
140 
147  public function getProductStockStatusBySku($productSku, $scopeId = null)
148  {
149  $scopeId = $this->stockConfiguration->getDefaultScopeId();
150  $productId = $this->resolveProductId($productSku);
151  return $this->getProductStockStatus($productId, $scopeId);
152  }
153 
157  public function getLowStockItems($scopeId, $qty, $currentPage = 1, $pageSize = 0)
158  {
159  $criteria = $this->criteriaFactory->create();
160  $criteria->setLimit($currentPage, $pageSize);
161  $criteria->setScopeFilter($scopeId);
162  $criteria->setQtyFilter('<=', $qty);
163  $criteria->addField('qty');
164  return $this->stockItemRepository->getList($criteria);
165  }
166 
170  public function updateStockItemBySku($productSku, \Magento\CatalogInventory\Api\Data\StockItemInterface $stockItem)
171  {
172  $productId = $this->resolveProductId($productSku);
173  $websiteId = $stockItem->getWebsiteId() ?: null;
174  $origStockItem = $this->getStockItem($productId, $websiteId);
175  $data = $stockItem->getData();
176  if ($origStockItem->getItemId()) {
177  unset($data['item_id']);
178  }
179  $origStockItem->addData($data);
180  $origStockItem->setProductId($productId);
181  return $this->stockItemRepository->save($origStockItem)->getItemId();
182  }
183 
189  protected function resolveProductId($productSku)
190  {
191  $product = $this->productFactory->create();
192  $productId = $product->getIdBySku($productSku);
193  if (!$productId) {
194  throw new \Magento\Framework\Exception\NoSuchEntityException(
195  __(
196  'The Product with the "%1" SKU doesn\'t exist.',
197  $productSku
198  )
199  );
200  }
201  return $productId;
202  }
203 }
__()
Definition: __.php:13
updateStockItemBySku($productSku, \Magento\CatalogInventory\Api\Data\StockItemInterface $stockItem)
getProductStockStatus($productId, $scopeId=null)
getLowStockItems($scopeId, $qty, $currentPage=1, $pageSize=0)
getProductStockStatusBySku($productSku, $scopeId=null)
__construct(StockConfigurationInterface $stockConfiguration, StockRegistryProviderInterface $stockRegistryProvider, StockItemRepositoryInterface $stockItemRepository, StockItemCriteriaInterfaceFactory $criteriaFactory, ProductFactory $productFactory)
getStockStatusBySku($productSku, $scopeId=null)
getStockItemBySku($productSku, $scopeId=null)