• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/integration/report/view/salesdynamicsgraph.php
  • Класс: Bitrix\Crm\Integration\Report\View\SalesDynamicsGraph
  • Вызов: SalesDynamicsGraph::handlerFinallyBeforePassToView
public function handlerFinallyBeforePassToView($calculatedPerformedData)
{
	$result = parent::handlerFinallyBeforePassToView($calculatedPerformedData);
	$baseCurrency = \CCrmCurrency::GetAccountCurrencyID();
	$sums = [
		1 => 0,
		2 => 0
	];

	if(is_array($result['dataProvider']))
	{
		$result['categoryAxis']['autoGridCount'] = true;
		$result['categoryAxis']['minHorizontalGap'] = 0;
		$result['categoryAxis']['labelFrequency'] = ceil(count($result['dataProvider']) / 10);
		//$result['categoryAxis']['labelFrequency'] = 1;

		$isFirst = true;
		$amountInitialPrev = 0;
		$amountReturnPrev = 0;
		$amountTotalPrev = 0;
		foreach ($result['dataProvider'] as $k => $item)
		{
			if(!isset($result['dataProvider'][$k]['value_1']))
			{
				$result['dataProvider'][$k]['value_1'] = 0;
			}
			if(!isset($result['dataProvider'][$k]['value_2']))
			{
				$result['dataProvider'][$k]['value_2'] = 0;
			}
			if(!isset($result['dataProvider'][$k]['balloon']['amountInitial']))
			{
				$result['dataProvider'][$k]['balloon']['amountInitial'] = 0;
			}
			if(!isset($result['dataProvider'][$k]['balloon']['amountReturn']))
			{
				$result['dataProvider'][$k]['balloon']['amountReturn'] = 0;
			}

			$sums[1] += $result['dataProvider'][$k]['value_1'];
			$sums[2] += $result['dataProvider'][$k]['value_2'];

			$amountInitial = $result['dataProvider'][$k]['balloon']['amountInitial'];
			$amountReturn = $result['dataProvider'][$k]['balloon']['amountReturn'];
			$amountTotal = $amountInitial + $amountReturn;


			$result['dataProvider'][$k]['balloon']['amountTotal'] = $amountTotal;
			$result['dataProvider'][$k]['balloon']['amountInitialFormatted'] = \CCrmCurrency::MoneyToString($amountInitial, $baseCurrency);
			$result['dataProvider'][$k]['balloon']['amountReturnFormatted'] = \CCrmCurrency::MoneyToString($amountReturn, $baseCurrency);
			$result['dataProvider'][$k]['balloon']['amountTotalFormatted'] = \CCrmCurrency::MoneyToString($amountTotal, $baseCurrency);

			if($isFirst)
			{
				$isFirst = false;
			}
			else
			{
				$result['dataProvider'][$k]['balloon']['amountInitialPrev'] = $amountInitialPrev;
				$result['dataProvider'][$k]['balloon']['amountReturnPrev'] = $amountReturnPrev;
				$result['dataProvider'][$k]['balloon']['amountTotalPrev'] = $amountTotalPrev;
			}

			$amountInitialPrev = $amountInitial;
			$amountReturnPrev = $amountReturn;
			$amountTotalPrev = $amountTotal;
		}
	}

	if(is_array($result['graphs']))
	{
		foreach ($result['graphs'] as $k => $graph)
		{
			$result['graphs'][$k]["balloonFunction"] = "BX.Crm.Report.Dashboard.Content.SalesDynamics.renderBalloon";
			$result['graphs'][$k]["balloon"]["borderThickness"] = 0;
		}

		$totalAmountFormatted_1 = \CCrmCurrency::MoneyToString($sums[1], $baseCurrency);
		$totalAmountFormatted_1 = str_replace(" ", " ", $totalAmountFormatted_1);
		$totalAmountFormatted_2 = \CCrmCurrency::MoneyToString($sums[2], $baseCurrency);
		$totalAmountFormatted_2 = str_replace(" ", " ", $totalAmountFormatted_2);

		if (!isset($result['graphs'][0]['title']))
		{
			$result['graphs'][0]['title'] = '';
		}
		$result['graphs'][0]['title'] .= " (" . $totalAmountFormatted_1 . ")";
		if (!isset($result['graphs'][1]['title']))
		{
			$result['graphs'][1]['title'] = '';
		}
		$result['graphs'][1]['title'] .= " (" . $totalAmountFormatted_2 . ")";
	}

	$result['legend']['valueText'] = '';


	return $result;
}