- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/tracking/ad/reportbuilder.php
- Класс: Bitrix\Crm\Tracking\Ad\ReportBuilder
- Вызов: ReportBuilder::getTraces
private function getTraces(ORM\Query\Query $query, $entityTypeId, $level, $parentId = null)
{
$query
->addSelect('CNT')
->addSelect('INCOME')
->registerRuntimeField(new Orm\Fields\Relations\Reference(
'TRACE_ENTITY',
Tracking\Internals\TraceEntityTable::class,
[
'=ref.ENTITY_TYPE_ID' => new Main\DB\SqlExpression('?', $entityTypeId),
'=this.ID' => 'ref.ENTITY_ID'
]
))
->registerRuntimeField(new Orm\Fields\ExpressionField(
'CNT', 'COUNT(*)'
))
->registerRuntimeField(new Orm\Fields\ExpressionField(
'INCOME', 'SUM(%s)', 'OPPORTUNITY_ACCOUNT'
))
->where('DATE_CREATE', '>=', $this->dateFrom)
->where('DATE_CREATE', '<', (clone $this->dateTo)->add('1 day'))
->where('TRACE_ENTITY.TRACE.SOURCE_ID', $this->sourceId)
->where('TRACE_ENTITY.TRACE.TRACE_SOURCE.LEVEL', $level)
;
$query->addSelect('TRACE_ENTITY.TRACE.TRACE_SOURCE.SOURCE_CHILD_ID','CHILD_ID');
$query->addSelect('TRACE_ENTITY.TRACE.TRACE_SOURCE.LEVEL','LEVEL');
$query->addSelect('TRACE_ENTITY.TRACE.TRACE_SOURCE.SOURCE_CHILD.CODE','CHILD_CODE');
$query->addSelect('TRACE_ENTITY.TRACE.TRACE_SOURCE.SOURCE_CHILD.TITLE','CHILD_TITLE');
if ($parentId)
{
$query->where('TRACE_ENTITY.TRACE.TRACE_SOURCE.SOURCE_CHILD.PARENT_ID', $parentId);
}
return $query->exec();
}