1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- declare(strict_types=1);
- namespace Magento\InventoryCatalogAdminUi\Model;
- use Magento\InventoryApi\Api\Data\SourceItemInterface;
- use Magento\InventoryApi\Api\SourceItemRepositoryInterface;
- use Magento\InventoryApi\Api\SourceRepositoryInterface;
- use Magento\InventoryApi\Api\Data\SourceInterface;
- use Magento\Framework\Api\SearchCriteriaBuilder;
- class GetSourceItemsDataBySku
- {
- /**
- * @var SourceItemRepositoryInterface
- */
- private $sourceItemRepository;
- /**
- * @var SourceRepositoryInterface
- */
- private $sourceRepository;
- /**
- * @var SearchCriteriaBuilder
- */
- private $searchCriteriaBuilder;
- /**
- * @param SourceItemRepositoryInterface $sourceItemRepository
- * @param SourceRepositoryInterface $sourceRepository
- * @param SearchCriteriaBuilder $searchCriteriaBuilder
- * @SuppressWarnings(PHPMD.LongVariable)
- */
- public function __construct(
- SourceItemRepositoryInterface $sourceItemRepository,
- SourceRepositoryInterface $sourceRepository,
- SearchCriteriaBuilder $searchCriteriaBuilder
- ) {
- $this->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;
- }
- }
|