/** * Add stock information to product * * @param EventObserver $observer * @return $this */ public function addInventoryData($observer) { $product = $observer->getEvent()->getProduct(); if ($product instanceof \Magento\Catalog\Model\Product) { $stockItem = $this->stockItemRegistry->retrieve($product->getId()); $this->_stockStatus->assignProduct($product, $stockItem->getStockId(), $product->getStockStatus()); } return $this; }
/** * Add stock item objects to products * * @param array $productCollection * @return $this */ public function addItemsToProducts($productCollection) { $items = $this->getItemCollection()->addProductsFilter($productCollection)->joinStockStatus($productCollection->getStoreId())->load(); $stockItems = array(); foreach ($items as $item) { $stockItems[$item->getProductId()] = $item; } foreach ($productCollection as $product) { if (isset($stockItems[$product->getId()])) { $this->stockStatus->assignProduct($product, $stockItems[$product->getId()]->getStockId(), $product->getStockStatus()); } } return $this; }
/** * Assign Stock Status to Product * * @param \Magento\Catalog\Model\Product $product * @param int $stockId * @param int $stockStatus * @return \Magento\CatalogInventory\Service\V1\StockStatusService */ public function assignProduct(\Magento\Catalog\Model\Product $product, $stockId = Stock::DEFAULT_STOCK_ID, $stockStatus = null) { $this->stockStatus->assignProduct($product, $stockId, $stockStatus); return $this; }