criteriaInterfaceFactory = $criteriaInterfaceFactory; $this->stockItemRepository = $stockItemRepository; $this->stockConfiguration = $stockConfiguration; } /** * Add stock items to products in collection. * * @param Observer $observer * @return void */ public function execute(Observer $observer) { /** @var Collection $productCollection */ $productCollection = $observer->getData('collection'); $productIds = array_keys($productCollection->getItems()); $criteria = $this->criteriaInterfaceFactory->create(); $criteria->setProductsFilter($productIds); $criteria->setScopeFilter($this->stockConfiguration->getDefaultScopeId()); $stockItemCollection = $this->stockItemRepository->getList($criteria); foreach ($stockItemCollection->getItems() as $item) { /** @var Product $product */ $product = $productCollection->getItemById($item->getProductId()); $productExtension = $product->getExtensionAttributes(); $productExtension->setStockItem($item); $product->setExtensionAttributes($productExtension); } } }