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