- Модуль: 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();
}