ReportBuilder::getTraces

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. ReportBuilder
  4. getTraces
  • Модуль: 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();
}

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