GetDefaultSourceItemBySku.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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\InventoryCatalog\Model;
  8. use Magento\Framework\Api\SearchCriteriaBuilder;
  9. use Magento\InventoryApi\Api\Data\SourceItemInterface;
  10. use Magento\InventoryApi\Api\SourceItemRepositoryInterface;
  11. use Magento\InventoryCatalogApi\Api\DefaultSourceProviderInterface;
  12. /**
  13. * Get the default source item by product sku or return null if not existing
  14. */
  15. class GetDefaultSourceItemBySku
  16. {
  17. /**
  18. * @var SearchCriteriaBuilder
  19. */
  20. private $searchCriteriaBuilder;
  21. /**
  22. * @var DefaultSourceProviderInterface
  23. */
  24. private $defaultSourceProvider;
  25. /**
  26. * @var SourceItemRepositoryInterface
  27. */
  28. private $sourceItemRepository;
  29. /**
  30. * @param SearchCriteriaBuilder $searchCriteriaBuilder
  31. * @param DefaultSourceProviderInterface $defaultSourceProvider
  32. * @param SourceItemRepositoryInterface $sourceItemRepository
  33. */
  34. public function __construct(
  35. SearchCriteriaBuilder $searchCriteriaBuilder,
  36. DefaultSourceProviderInterface $defaultSourceProvider,
  37. SourceItemRepositoryInterface $sourceItemRepository
  38. ) {
  39. $this->searchCriteriaBuilder = $searchCriteriaBuilder;
  40. $this->defaultSourceProvider = $defaultSourceProvider;
  41. $this->sourceItemRepository = $sourceItemRepository;
  42. }
  43. /**
  44. * @param string $productSku
  45. * @return SourceItemInterface|null
  46. */
  47. public function execute(string $productSku): ?SourceItemInterface
  48. {
  49. $searchCriteria = $this->searchCriteriaBuilder
  50. ->addFilter(SourceItemInterface::SKU, $productSku)
  51. ->addFilter(SourceItemInterface::SOURCE_CODE, $this->defaultSourceProvider->getCode())
  52. ->create();
  53. $sourceItems = $this->sourceItemRepository->getList($searchCriteria)->getItems();
  54. return count($sourceItems) ? reset($sourceItems) : null;
  55. }
  56. }