...Человеческий поиск в разработке...
- Модуль: 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']); } } }