EntitySpecificFilter::apply

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. EntitySpecificFilter
  4. apply
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/counter/counterquerybuilder/queryparts/entityspecificfilter.php
  • Класс: Bitrix\Crm\Counter\CounterQueryBuilder\QueryParts\EntitySpecificFilter
  • Вызов: EntitySpecificFilter::apply
public function apply(Query $query, int $entityTypeID, array $options)
{
	$stageSemanticId = isset($options['STAGE_SEMANTIC_ID']) && $options['STAGE_SEMANTIC_ID']
		? $options['STAGE_SEMANTIC_ID']
		: PhaseSemantics::PROCESS
	;
	if($entityTypeID === \CCrmOwnerType::Deal)
	{
		$query->addFilter('=STAGE_SEMANTIC_ID', $stageSemanticId);
		$query->addFilter('=IS_RECURRING', 'N');

		if(isset($options['CATEGORY_ID']) && $options['CATEGORY_ID'] >= 0)
		{
			$query->addFilter('=CATEGORY_ID', new SqlExpression('?i', $options['CATEGORY_ID']));
		}
	}
	else if($entityTypeID === \CCrmOwnerType::Contact)
	{
		if (isset($options['CATEGORY_ID']))
		{
			$query->where('CATEGORY_ID', $options['CATEGORY_ID']);
		}
	}
	else if($entityTypeID === \CCrmOwnerType::Company)
	{
		$query->addFilter('=IS_MY_COMPANY', 'N');
		if (isset($options['CATEGORY_ID']))
		{
			$query->where('CATEGORY_ID', $options['CATEGORY_ID']);
		}
	}
	elseif($entityTypeID === \CCrmOwnerType::Order)
	{
		$query->addFilter('=CANCELED', 'N');
		$query->addFilter('@STATUS_ID', OrderStatus::getSemanticProcessStatuses());
	}
	elseif($entityTypeID === \CCrmOwnerType::Lead)
	{
		$query->addFilter('=STATUS_SEMANTIC_ID', $stageSemanticId);
	}
	elseif($entityTypeID === \CCrmOwnerType::Quote)
	{
		$query->where('CLOSED', 'N');
		$query->whereIn('STATUS_ID', $this->queryQuoteProgressStatuses());
	}
	elseif($entityTypeID === \CCrmOwnerType::SmartInvoice)
	{
		$factory = Container::getInstance()->getFactory(\CCrmOwnerType::SmartInvoice);
		if ($factory->isStagesEnabled())
		{
			$statesIds = $this->queryDynamicEntityStages(null, $factory);
			$query->whereIn('STAGE_ID', $statesIds);
		}
	}
	elseif(\CCrmOwnerType::isPossibleDynamicTypeId($entityTypeID))
	{
		$categoryId = $options['CATEGORY_ID'] ?? null;

		$factory = Container::getInstance()->getFactory($entityTypeID);
		if ($factory->isStagesEnabled())
		{
			$statesIds = $this->queryDynamicEntityStages($categoryId, $factory);
			$query->whereIn('STAGE_ID', $statesIds);
		}

		if ($categoryId !== null)
		{
			$query->where('CATEGORY_ID', $options['CATEGORY_ID']);
		}
	}
}

Добавить комментарий