- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/widget/numericwidget.php
- Класс: Bitrix\Crm\Widget\NumericWidget
- Вызов: NumericWidget::prepareItem
protected function prepareItem(array $params, array &$result)
{
/** @var string $name */
$name = $params['name'];
/** @var WidgetConfig $config */
$config = $params['config'];
/** @var DataSource $source */
$source = $params['source'];
if($source === null)
{
$result[$name] = array();
return;
}
$selectField = $config->getSelectField();
if($selectField === '')
{
$selectField = $name;
}
$this->filter->setExtras($config->getFilterParams());
$value = (double)$source->getFirstValue(
array(
'filter' => $this->filter,
'select' => array(array('name' => $selectField, 'aggregate' => $config->getAggregate())),
'result' => $result
),
$selectField,
0.0
);
if(!isset($result[$name]))
{
$result[$name] = array();
}
$format = $config->getFomatParams();
if(empty($format))
{
$result[$name]['value'] = $value;
}
else
{
$result[$name]['format'] = $format;
if(isset($format['enableDecimals']) && $format['enableDecimals'] == 'N')
{
$value = round($value, 2);
}
$result[$name]['value'] = $value;
if(isset($format['isCurrency']) && $format['isCurrency'] === 'Y')
{
//hack fom Currency module issue.
//$result[$name]['html'] = \CCrmCurrency::MoneyToString(strval($value), \CCrmCurrency::GetAccountCurrencyID());
$html = \CCrmCurrency::MoneyToString(strval($value), \CCrmCurrency::GetAccountCurrencyID());
$html = preg_replace('/(₽)/', '${1}', $html);
$result[$name]['html'] = $html;
}
elseif(isset($format['isPercent']) && $format['isPercent'] === 'Y')
{
$result[$name]['html'] = "{$value}%";
}
}
$detailsPageUrl = $source->getDetailsPageUrl(array('filter' => $this->filter, 'field' => $selectField));
if($detailsPageUrl !== '')
{
$result[$name]['url'] = $detailsPageUrl;
}
$display = $config->getDisplayParams();
if(!empty($display))
{
$result[$name]['display'] = $display;
}
}