- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/integration/report/handler/managers/ratinggraph.php
- Класс: Bitrix\Crm\Integration\Report\Handler\Managers\RatingGraph
- Вызов: RatingGraph::getMultipleGroupedData
public function getMultipleGroupedData()
{
$calculatedData = $this->getCalculatedData();
$baseCurrency = \CCrmCurrency::GetAccountCurrencyID();
$normalizedData = [];
$userIds = [];
foreach ($calculatedData as $row)
{
[$userId, $countWon, $countTotal, $amountWon, $amountWonPrev] = [$row['USER_ID'], $row['COUNT_WON'], $row['COUNT_TOTAL'], $row['AMOUNT_WON'], $row['AMOUNT_WON_PREV']];
if(!$normalizedData[$userId])
{
$normalizedData[$userId] = [
'userId' => $userId,
'countWon' => 0,
'countTotal' => 0,
'amountWon' => 0,
'amountWonPrev' => 0,
];
}
$normalizedData[$userId]['countWon'] += $countWon;
$normalizedData[$userId]['countTotal'] += $countTotal;
$normalizedData[$userId]['amountWon'] += $amountWon;
$normalizedData[$userId]['amountWonPrev'] += $amountWonPrev;
$userIds[] = $userId;
}
$items = [];
$labels = [];
$this->preloadUserInfo($userIds);
foreach ($normalizedData as $key => $fields)
{
$userId = $key;
$userInfo = $this->getUserInfo($userId, ['avatarWidth' => 60, 'avatarHeight' => 60]);
$items[] = [
'groupBy' => $key,
'value' => $fields['amountWon'],
'balloon' => [
'userName' => $userInfo['name'],
'amountWon' => $fields['amountWon'],
'amountWonPrev' => $fields['amountWonPrev'],
'amountWonFormatted' => \CCrmCurrency::MoneyToString($fields['amountWon'], $baseCurrency),
'amountWonPrevFormatted' => \CCrmCurrency::MoneyToString($fields['amountWonPrev'], $baseCurrency),
'avgWonAvgAmountFormatted' => \CCrmCurrency::MoneyToString($fields['countWon'] ? $fields['amountWon'] / $fields['countWon'] : 0, $baseCurrency),
'countWon' => $fields['countWon'],
'countTotal' => $fields['countTotal'],
'icon' => $userInfo['icon']
],
'targetUrl' => $this->getTargetUrl('/crm/deal/analytics/list/', [
'ASSIGNED_BY_ID' => $userId,
'STAGE_SEMANTIC_ID' => PhaseSemantics::SUCCESS,
])
];
$labels[$userId] = $userInfo['name'];
}
$result = [
"items" => $items,
"config" => [
"groupsLabelMap" => $labels,
"reportTitle" => $this->getFormElementValue("label"),
"reportColor" => $this->getFormElementValue("color"),
"reportTitleShort" => $this->getFormElementValue("label"),
"reportTitleMedium" => $this->getFormElementValue("label"),
]
];
return $result;
}