![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-catalog-inventory/Model/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\CatalogInventory\Model; use Magento\Catalog\Model\ProductFactory; use Magento\CatalogInventory\Api\Data\StockItemInterface; use Magento\CatalogInventory\Api\StockConfigurationInterface; use Magento\CatalogInventory\Api\StockItemCriteriaInterfaceFactory; use Magento\CatalogInventory\Api\StockItemRepositoryInterface; use Magento\CatalogInventory\Api\StockRegistryInterface; use Magento\CatalogInventory\Model\Spi\StockRegistryProviderInterface; /** * Class StockRegistry * * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class StockRegistry implements StockRegistryInterface { /** * @var StockConfigurationInterface */ protected $stockConfiguration; /** * @var StockRegistryProviderInterface */ protected $stockRegistryProvider; /** * @var ProductFactory */ protected $productFactory; /** * @var StockItemRepositoryInterface */ protected $stockItemRepository; /** * @var \Magento\CatalogInventory\Api\StockItemCriteriaInterfaceFactory */ protected $criteriaFactory; /** * @param StockConfigurationInterface $stockConfiguration * @param StockRegistryProviderInterface $stockRegistryProvider * @param StockItemRepositoryInterface $stockItemRepository * @param StockItemCriteriaInterfaceFactory $criteriaFactory * @param ProductFactory $productFactory */ public function __construct( StockConfigurationInterface $stockConfiguration, StockRegistryProviderInterface $stockRegistryProvider, StockItemRepositoryInterface $stockItemRepository, StockItemCriteriaInterfaceFactory $criteriaFactory, ProductFactory $productFactory ) { $this->stockConfiguration = $stockConfiguration; $this->stockRegistryProvider = $stockRegistryProvider; $this->stockItemRepository = $stockItemRepository; $this->criteriaFactory = $criteriaFactory; $this->productFactory = $productFactory; } /** * @param int $scopeId * @return \Magento\CatalogInventory\Api\Data\StockInterface */ public function getStock($scopeId = null) { $scopeId = $this->stockConfiguration->getDefaultScopeId(); return $this->stockRegistryProvider->getStock($scopeId); } /** * @param int $productId * @param int $scopeId * @return \Magento\CatalogInventory\Api\Data\StockItemInterface */ public function getStockItem($productId, $scopeId = null) { $scopeId = $this->stockConfiguration->getDefaultScopeId(); return $this->stockRegistryProvider->getStockItem($productId, $scopeId); } /** * @param string $productSku * @param int $scopeId * @return \Magento\CatalogInventory\Api\Data\StockItemInterface * @throws \Magento\Framework\Exception\NoSuchEntityException */ public function getStockItemBySku($productSku, $scopeId = null) { $scopeId = $this->stockConfiguration->getDefaultScopeId(); $productId = $this->resolveProductId($productSku); return $this->stockRegistryProvider->getStockItem($productId, $scopeId); } /** * @param int $productId * @param int $scopeId * @return \Magento\CatalogInventory\Api\Data\StockStatusInterface */ public function getStockStatus($productId, $scopeId = null) { $scopeId = $this->stockConfiguration->getDefaultScopeId(); return $this->stockRegistryProvider->getStockStatus($productId, $scopeId); } /** * @param string $productSku * @param int $scopeId * @return \Magento\CatalogInventory\Api\Data\StockStatusInterface * @throws \Magento\Framework\Exception\NoSuchEntityException */ public function getStockStatusBySku($productSku, $scopeId = null) { $scopeId = $this->stockConfiguration->getDefaultScopeId(); $productId = $this->resolveProductId($productSku); return $this->getStockStatus($productId, $scopeId); } /** * Retrieve Product stock status * @param int $productId * @param int $scopeId * @return int */ public function getProductStockStatus($productId, $scopeId = null) { $scopeId = $this->stockConfiguration->getDefaultScopeId(); $stockStatus = $this->getStockStatus($productId, $scopeId); return $stockStatus->getStockStatus(); } /** * @param string $productSku * @param null $scopeId * @return int * @throws \Magento\Framework\Exception\NoSuchEntityException */ public function getProductStockStatusBySku($productSku, $scopeId = null) { $scopeId = $this->stockConfiguration->getDefaultScopeId(); $productId = $this->resolveProductId($productSku); return $this->getProductStockStatus($productId, $scopeId); } /** * @inheritdoc */ public function getLowStockItems($scopeId, $qty, $currentPage = 1, $pageSize = 0) { $criteria = $this->criteriaFactory->create(); $criteria->setLimit($currentPage, $pageSize); $criteria->setScopeFilter($scopeId); $criteria->setQtyFilter('<=', $qty); $criteria->addField('qty'); return $this->stockItemRepository->getList($criteria); } /** * @inheritdoc */ public function updateStockItemBySku($productSku, \Magento\CatalogInventory\Api\Data\StockItemInterface $stockItem) { $productId = $this->resolveProductId($productSku); $websiteId = $stockItem->getWebsiteId() ?: null; $origStockItem = $this->getStockItem($productId, $websiteId); $data = $stockItem->getData(); if ($origStockItem->getItemId()) { unset($data['item_id']); } $origStockItem->addData($data); $origStockItem->setProductId($productId); return $this->stockItemRepository->save($origStockItem)->getItemId(); } /** * @param string $productSku * @return int * @throws \Magento\Framework\Exception\NoSuchEntityException */ protected function resolveProductId($productSku) { $product = $this->productFactory->create(); $productId = $product->getIdBySku($productSku); if (!$productId) { throw new \Magento\Framework\Exception\NoSuchEntityException( __( 'The Product with the "%1" SKU doesn\'t exist.', $productSku ) ); } return $productId; } }