• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/agentcontracttable.php
  • Класс: BitrixCatalogAgentContractTable
  • Вызов: AgentContractTable::withProductList
static function withProductList(Query $query, array $productIds)
{
	Collection::normalizeArrayValuesByInt($productIds);
	if (empty($productIds))
	{
		return;
	}

	$tableName = AgentProductTable::getTableName();
	$whereExpression = '(PRODUCT_ID IN (' . implode(',', $productIds) . '))';

	$connection = Application::getConnection();
	$helper = $connection->getSqlHelper();
	$productType = $helper->forSql(AgentProductTable::PRODUCT_TYPE_PRODUCT);

	$query->whereExpr("
		(
			CASE WHEN EXISTS (
				SELECT ID
				FROM {$tableName}
				WHERE CONTRACT_ID = %s
				AND PRODUCT_TYPE = '{$productType}'
				AND {$whereExpression}
			)
			THEN 1
			ELSE 0
			END
		) = 1
	", ['ID']);
}