GetQuantityInformationPerSource.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. declare(strict_types=1);
  7. namespace Magento\InventoryConfigurableProductAdminUi\Model;
  8. use Magento\Framework\Api\SearchCriteriaBuilderFactory;
  9. use Magento\InventoryApi\Api\Data\SourceItemInterface;
  10. use Magento\InventoryApi\Api\SourceItemRepositoryInterface;
  11. use Magento\InventoryApi\Api\SourceRepositoryInterface;
  12. class GetQuantityInformationPerSource
  13. {
  14. /**
  15. * @var SourceItemRepositoryInterface
  16. */
  17. private $sourceItemRepository;
  18. /**
  19. * @var SearchCriteriaBuilderFactory
  20. */
  21. private $searchCriteriaBuilderFactory;
  22. /**
  23. * @var SourceRepositoryInterface
  24. */
  25. private $sourceRepository;
  26. /**
  27. * @param SourceItemRepositoryInterface $sourceItemRepository
  28. * @param SearchCriteriaBuilderFactory $searchCriteriaBuilderFactory
  29. * @param SourceRepositoryInterface $sourceRepository
  30. */
  31. public function __construct(
  32. SourceItemRepositoryInterface $sourceItemRepository,
  33. SearchCriteriaBuilderFactory $searchCriteriaBuilderFactory,
  34. SourceRepositoryInterface $sourceRepository
  35. ) {
  36. $this->sourceItemRepository = $sourceItemRepository;
  37. $this->searchCriteriaBuilderFactory = $searchCriteriaBuilderFactory;
  38. $this->sourceRepository = $sourceRepository;
  39. }
  40. /**
  41. * @param string $sku
  42. *
  43. * @return array
  44. */
  45. public function execute(string $sku): array
  46. {
  47. $sourceItemsInformation = [];
  48. $searchCriteriaBuilder = $this->searchCriteriaBuilderFactory->create();
  49. $searchCriteria = $searchCriteriaBuilder->addFilter(SourceItemInterface::SKU, $sku)->create();
  50. $sourceItems = $this->sourceItemRepository->getList($searchCriteria)->getItems();
  51. foreach ($sourceItems as $sourceItem) {
  52. $source = $this->sourceRepository->get($sourceItem->getSourceCode());
  53. $sourceItemsInformation[] = [
  54. SourceItemInterface::SOURCE_CODE => $sourceItem->getSourceCode(),
  55. 'quantity_per_source' => $sourceItem->getQuantity(),
  56. 'source' => $source->getName(),
  57. SourceItemInterface::STATUS => $sourceItem->getStatus(),
  58. ];
  59. }
  60. return $sourceItemsInformation;
  61. }
  62. }