resourceConnection = $resourceConnection; $this->isSourceItemManagementAllowedForProductType = $isSourceItemManagementAllowedForProductType; $this->getProductTypesBySkus = $getProductTypesBySkus; } /** * Bulk assign source items configurations to source items * * @param array $skus * @param array $sources */ public function execute( array $skus, array $sources ) { $tableName = $this->resourceConnection->getTableName('inventory_low_stock_notification_configuration'); $connection = $this->resourceConnection->getConnection(); $types = $this->getProductTypesBySkus->execute($skus); foreach ($types as $sku => $type) { if ($this->isSourceItemManagementAllowedForProductType->execute($type)) { foreach ($sources as $sourceCode) { try { $connection->insert($tableName, [ SourceItemConfiguration::SOURCE_CODE => $sourceCode, SourceItemConfiguration::INVENTORY_NOTIFY_QTY => null, SourceItemConfiguration::SKU => $sku, ]); } catch (DuplicateException $e) { // Skip if source assignment is duplicated continue; } } } } } }