| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 | 
							- <?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;
 
-     }
 
- }
 
 
  |