AddStockStatusToSelect.php 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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\ResourceModel;
  8. use Magento\Framework\DB\Select;
  9. use Magento\InventoryIndexer\Indexer\IndexStructure;
  10. use Magento\InventoryIndexer\Model\StockIndexTableNameResolverInterface;
  11. /**
  12. * Adapt adding stock status to select for Multi Stocks.
  13. */
  14. class AddStockStatusToSelect
  15. {
  16. /**
  17. * @var StockIndexTableNameResolverInterface
  18. */
  19. private $stockIndexTableNameResolver;
  20. /**
  21. * @param StockIndexTableNameResolverInterface $stockIndexTableNameResolver
  22. */
  23. public function __construct(StockIndexTableNameResolverInterface $stockIndexTableNameResolver)
  24. {
  25. $this->stockIndexTableNameResolver = $stockIndexTableNameResolver;
  26. }
  27. /**
  28. * @param Select $select
  29. * @param int $stockId
  30. * @return void
  31. */
  32. public function execute(Select $select, int $stockId)
  33. {
  34. $tableName = $this->stockIndexTableNameResolver->execute($stockId);
  35. $select->joinLeft(
  36. ['stock_status' => $tableName],
  37. 'e.sku = stock_status.sku',
  38. [IndexStructure::IS_SALABLE]
  39. );
  40. }
  41. }