| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 | 
							- <?php
 
- /**
 
-  * Copyright © Magento, Inc. All rights reserved.
 
-  * See COPYING.txt for license details.
 
-  */
 
- declare(strict_types=1);
 
- namespace Magento\InventoryGroupedProductIndexer\Indexer\SourceItem;
 
- use Magento\Framework\App\ResourceConnection;
 
- use Magento\InventoryMultiDimensionalIndexerApi\Model\Alias;
 
- use Magento\InventoryMultiDimensionalIndexerApi\Model\IndexHandlerInterface;
 
- use Magento\InventoryMultiDimensionalIndexerApi\Model\IndexNameBuilder;
 
- use Magento\InventoryMultiDimensionalIndexerApi\Model\IndexStructureInterface;
 
- use Magento\InventoryCatalogApi\Api\DefaultStockProviderInterface;
 
- use Magento\InventoryIndexer\Indexer\InventoryIndexer;
 
- class SourceItemIndexer
 
- {
 
-     /**
 
-      * @var ResourceConnection
 
-      */
 
-     private $resourceConnection;
 
-     /**
 
-      * @var IndexNameBuilder
 
-      */
 
-     private $indexNameBuilder;
 
-     /**
 
-      * @var IndexHandlerInterface
 
-      */
 
-     private $indexHandler;
 
-     /**
 
-      * @var IndexDataBySkuListProvider
 
-      */
 
-     private $indexDataBySkuListProvider;
 
-     /**
 
-      * @var IndexStructureInterface
 
-      */
 
-     private $indexStructure;
 
-     /**
 
-      * @var SiblingSkuListInStockProvider
 
-      */
 
-     private $siblingSkuListInStockProvider;
 
-     /**
 
-      * @var DefaultStockProviderInterface
 
-      */
 
-     private $defaultStockProvider;
 
-     /**
 
-      * @param ResourceConnection $resourceConnection
 
-      * @param IndexNameBuilder $indexNameBuilder
 
-      * @param IndexHandlerInterface $indexHandler
 
-      * @param IndexStructureInterface $indexStructure
 
-      * @param IndexDataBySkuListProvider $indexDataBySkuListProvider
 
-      * @param SiblingSkuListInStockProvider $siblingSkuListInStockProvider
 
-      * @param DefaultStockProviderInterface $defaultStockProvider
 
-      */
 
-     public function __construct(
 
-         ResourceConnection $resourceConnection,
 
-         IndexNameBuilder $indexNameBuilder,
 
-         IndexHandlerInterface $indexHandler,
 
-         IndexStructureInterface $indexStructure,
 
-         IndexDataBySkuListProvider $indexDataBySkuListProvider,
 
-         SiblingSkuListInStockProvider $siblingSkuListInStockProvider,
 
-         DefaultStockProviderInterface $defaultStockProvider
 
-     ) {
 
-         $this->resourceConnection = $resourceConnection;
 
-         $this->indexNameBuilder = $indexNameBuilder;
 
-         $this->indexHandler = $indexHandler;
 
-         $this->indexDataBySkuListProvider = $indexDataBySkuListProvider;
 
-         $this->indexStructure = $indexStructure;
 
-         $this->siblingSkuListInStockProvider = $siblingSkuListInStockProvider;
 
-         $this->defaultStockProvider = $defaultStockProvider;
 
-     }
 
-     /**
 
-      * @param array $sourceItemIds
 
-      */
 
-     public function executeList(array $sourceItemIds)
 
-     {
 
-         $skuListInStockList = $this->siblingSkuListInStockProvider->execute($sourceItemIds);
 
-         foreach ($skuListInStockList as $skuListInStock) {
 
-             $stockId = $skuListInStock->getStockId();
 
-             if ($this->defaultStockProvider->getId() === $stockId) {
 
-                 continue;
 
-             }
 
-             $skuList = $skuListInStock->getSkuList();
 
-             $mainIndexName = $this->indexNameBuilder
 
-                 ->setIndexId(InventoryIndexer::INDEXER_ID)
 
-                 ->addDimension('stock_', (string)$stockId)
 
-                 ->setAlias(Alias::ALIAS_MAIN)
 
-                 ->build();
 
-             if (!$this->indexStructure->isExist($mainIndexName, ResourceConnection::DEFAULT_CONNECTION)) {
 
-                 $this->indexStructure->create($mainIndexName, ResourceConnection::DEFAULT_CONNECTION);
 
-             }
 
-             $indexData = $this->indexDataBySkuListProvider->execute($stockId, $skuList);
 
-             $this->indexHandler->cleanIndex(
 
-                 $mainIndexName,
 
-                 $indexData,
 
-                 ResourceConnection::DEFAULT_CONNECTION
 
-             );
 
-             $this->indexHandler->saveIndex(
 
-                 $mainIndexName,
 
-                 $indexData,
 
-                 ResourceConnection::DEFAULT_CONNECTION
 
-             );
 
-         }
 
-     }
 
- }
 
 
  |