sourceItemRepository = $sourceItemRepository; $this->sourceRepository = $sourceRepository; $this->searchCriteriaBuilder = $searchCriteriaBuilder; } /** * @param string $sku * @return array * @throws \Magento\Framework\Exception\NoSuchEntityException */ public function execute(string $sku): array { $sourceItemsData = []; $searchCriteria = $this->searchCriteriaBuilder ->addFilter(SourceItemInterface::SKU, $sku) ->create(); $sourceItems = $this->sourceItemRepository->getList($searchCriteria)->getItems(); $sourcesCache = []; foreach ($sourceItems as $sourceItem) { $sourceCode = $sourceItem->getSourceCode(); if (!isset($sourcesCache[$sourceCode])) { $sourcesCache[$sourceCode] = $this->sourceRepository->get($sourceCode); } $source = $sourcesCache[$sourceCode]; $sourceItemsData[] = [ SourceItemInterface::SOURCE_CODE => $sourceItem->getSourceCode(), SourceItemInterface::QUANTITY => $sourceItem->getQuantity(), SourceItemInterface::STATUS => $sourceItem->getStatus(), SourceInterface::NAME => $source->getName(), 'source_status' => $source->isEnabled(), ]; } return $sourceItemsData; } }