ReportBuilder::getExpenses

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. ReportBuilder
  4. getExpenses
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/tracking/ad/reportbuilder.php
  • Класс: Bitrix\Crm\Tracking\Ad\ReportBuilder
  • Вызов: ReportBuilder::getExpenses
private function getExpenses($level, $parentId = null)
{
	$query = Tracking\Internals\SourceExpensesTable::query()
		->registerRuntimeField(new ORM\Fields\ExpressionField(
			'IMPRESSIONS_SUM',
			'SUM(%s)',
			'IMPRESSIONS'
		))
		->registerRuntimeField(new ORM\Fields\ExpressionField(
			'ACTIONS_SUM',
			'SUM(%s)',
			'ACTIONS'
		))
		->registerRuntimeField(new ORM\Fields\ExpressionField(
			'EXPENSES_SUM',
			'SUM(%s)',
			'EXPENSES'
		))
		->setSelect([
			'IMPRESSIONS_SUM',
			'ACTIONS_SUM',
			'EXPENSES_SUM',
			'CURRENCY_ID',
		])
		->where('SOURCE_ID', $this->sourceId)
		->where('DATE_STAT', '>=', $this->dateFrom)
		->where('DATE_STAT', '<=', $this->dateTo)
		->where('TYPE_ID', Tracking\Internals\SourceExpensesTable::TYPE_AD)
		->where('SOURCE_CHILD.LEVEL', Tracking\Source\Level\Type::Keyword)
		->where('LEVEL', $level)
	;

	switch ($level)
	{
		case Tracking\Source\Level\Type::Keyword:
			$prefix = 'SOURCE_CHILD';
			break;
		case Tracking\Source\Level\Type::Adgroup:
			$prefix = 'SOURCE_CHILD.PARENT';
			break;
		case Tracking\Source\Level\Type::Campaign:
			$prefix = 'SOURCE_CHILD.PARENT.PARENT';
			$parentId = null;
			break;
		default:
			throw new SystemException("Wrong level `{$level}`.");
	}

	if ($parentId)
	{
		$query->where("{$prefix}.PARENT_ID", $parentId);
	}

	$query->addSelect("{$prefix}.TITLE", 'TITLE');
	$query->addSelect("{$prefix}.CODE", 'CODE');
	$query->addSelect("{$prefix}.LEVEL", 'LEVEL');
	$query->addSelect("{$prefix}.ID", 'CHILD_ID');
	$query->addSelect("{$prefix}.PARENT_ID", 'PARENT_ID');
	$query->addSelect("{$prefix}.IS_ENABLED", 'IS_ENABLED');

	return $query->exec();
}

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