- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_report_helper.php
- Класс: \CCrmInvoiceReportHelper
- Вызов: CCrmInvoiceReportHelper::setRuntimeFields
static function setRuntimeFields(\Bitrix\Main\Entity\Base $entity, $sqlTimeInterval)
{
global $DB;
$options = array();
Crm\InvoiceTable::processQueryOptions($options);
$entity->addField(array(
'data_type' => 'float',
'expression' => array(
'CASE WHEN %s IN '.$options['WORK_STATUS_IDS'].' THEN %s ELSE 0 END',
'STATUS_ID', 'PRICE'
),
'values' => array(0, 1)
), 'PRICE_WORK');
$entity->addField(array(
'data_type' => 'float',
'expression' => array(
'CASE WHEN %s IN '.$options['CANCEL_STATUS_IDS'].' THEN %s ELSE 0 END',
'STATUS_ID', 'PRICE'
),
'values' => array(0, 1)
), 'PRICE_CANCELED');
$entity->addField(array(
'data_type' => 'boolean',
'expression' => array(
'CASE WHEN %s IN '.$options['WORK_STATUS_IDS'].' THEN 1 ELSE 0 END',
'STATUS_ID'
),
'values' => array(0, 1)
), 'IS_WORK');
$entity->addField(array(
'data_type' => 'boolean',
'expression' => array(
'CASE WHEN %s IN '.$options['CANCEL_STATUS_IDS'].' THEN 1 ELSE 0 END',
'STATUS_ID'
),
'values' => array(0, 1)
), 'IS_CANCELED');
$datetimeNull = 'CAST(NULL AS DATETIME)';
$entity->addField(array(
'data_type' => 'datetime',
'expression' => array(
'CASE WHEN %s = \'P\' THEN '.$DB->datetimeToDateFunction($DB->IsNull('%s', '%s')).
' WHEN %s IN '.$options['CANCEL_STATUS_IDS'].' THEN '.$DB->datetimeToDateFunction($DB->IsNull('%s', '%s')).
' ELSE '.$datetimeNull.' END',
'STATUS_ID', 'PAY_VOUCHER_DATE', 'DATE_INSERT',
'STATUS_ID', 'DATE_MARKED', 'DATE_INSERT'
)
), 'DATE_FINISHED_SHORT');
self::appendBooleanUserFieldsIfNull($entity);
self::appendDateTimeUserFieldsAsShort($entity);
self::appendMoneyUserFieldsAsSeparated($entity);
self::appendTextUserFieldsAsTrimmed($entity);
self::appendUTMFields($entity);
}