- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/tracking/analytics/provider/action.php
- Класс: Bitrix\Crm\Tracking\Analytics\Provider\Action
- Вызов: Action::query
public function query()
{
/*
$defaultItem = [
'CNT' => 0,
'SUM' => 0,
'VIEWS' => 0,
'ASSIGNED_BY_ID' => null,
'TRACKING_SOURCE_ID' => null,
];
*/
$dateFrom = $this->dateFrom ? Date::createFromTimestamp($this->dateFrom->getTimestamp()) : null;
$dateTo = $this->dateTo ? Date::createFromTimestamp($this->dateTo->getTimestamp()) : null;
$list = array_merge(
static::getAdExpenses($dateFrom, $dateTo),
static::getSenderExpenses($dateFrom, $dateTo)
);
foreach (static::getUserExpenses($dateFrom, $dateTo) as $row)
{
$isFound = false;
foreach ($list as $index => $item)
{
if ($item['TRACKING_SOURCE_ID'] != $row['TRACKING_SOURCE_ID'])
{
continue;
}
$item['CNT'] += $row['CNT'];
$item['SUM'] += $row['SUM'];
$list[$index] = $item;
$isFound = true;
}
if (!$isFound)
{
$list[] = $row;
}
}
if (!empty($this->sourceId))
{
$sourceIds = is_array($this->sourceId) ? $this->sourceId : [$this->sourceId];
$listTmp = $list;
$list = [];
foreach ($listTmp as $item)
{
$sourceId = $item['TRACKING_SOURCE_ID'] ?? null;
if (in_array($sourceId, $sourceIds))
{
$list[] = $item;
}
}
}
if (!$this->isGroupedByTrackingSource())
{
$summary = [
'CNT' => 0,
'SUM' => 0,
'ASSIGNED_BY_ID' => null,
'TRACKING_SOURCE_ID' => 'summary',
];
foreach ($list as $row)
{
$summary['CNT'] += (int) $row['CNT'];
$summary['SUM'] += (int) $row['SUM'];
}
$list = [$summary];
}
return $list;
}