![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-inventory-indexer/Indexer/SourceItem/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\InventoryIndexer\Indexer\SourceItem; use Magento\Framework\App\ResourceConnection; use Magento\Inventory\Model\ResourceModel\SourceItem as SourceItemResourceModel; use Magento\InventoryApi\Api\Data\SourceItemInterface; /** * Get SourceItem ids from array of SourceItems */ class GetSourceItemIds { /** * @var ResourceConnection */ private $resourceConnection; /** * @param ResourceConnection $resourceConnection */ public function __construct(ResourceConnection $resourceConnection) { $this->resourceConnection = $resourceConnection; } /** * Retrieve source items ids. * * @param SourceItemInterface[] $sourceItems * @return array */ public function execute(array $sourceItems): array { $connection = $this->resourceConnection->getConnection(); $skusBySourceCode = []; $sourceItemIds = [[]]; foreach ($sourceItems as $sourceItem) { $skusBySourceCode[$sourceItem->getSourceCode()][] = $sourceItem->getSku(); } foreach ($skusBySourceCode as $sourceCode => $skus) { $select = $connection->select() ->from( $this->resourceConnection->getTableName(SourceItemResourceModel::TABLE_NAME_SOURCE_ITEM), [SourceItemResourceModel::ID_FIELD_NAME] )->where('sku IN (?)', $skus)->where('source_code = ?', $sourceCode); $sourceItemIds[] = $connection->fetchCol($select); } $sourceItemIds = array_merge(...$sourceItemIds); return $sourceItemIds; } }