- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/volume/invoice.php
- Класс: Bitrix\Crm\Volume\Invoice
- Вызов: Invoice::measureActivity
public function measureActivity($additionActivityFilter = array())
{
self::loadTablesInformation();
$querySql = $this->prepareActivityRelationQuerySql(array(
'DATE_CREATE' => 'DATE_CREATED_SHORT',
'INVOICE_STAGE_SEMANTIC' => 'STAGE_SEMANTIC_ID',
));
if ($querySql != '')
{
$avgActivityTableRowLength = (double)self::$tablesInformation[Crm\ActivityTable::getTableName()]['AVG_SIZE'];
$avgBindingTableRowLength = (double)self::$tablesInformation[Crm\ActivityBindingTable::getTableName()]['AVG_SIZE'];
$querySql = "
SELECT
'".static::getIndicatorId()."' as INDICATOR_TYPE,
'".$this->getOwner()."' as OWNER_ID,
DATE_CREATE,
INVOICE_STAGE_SEMANTIC,
( FILE_SIZE +
ACTIVITY_COUNT * {$avgActivityTableRowLength} +
BINDINGS_COUNT * {$avgBindingTableRowLength} ) as ACTIVITY_SIZE,
ACTIVITY_COUNT
FROM
(
{$querySql}
) src
";
Crm\VolumeTable::updateFromSelect(
$querySql,
array(
'ACTIVITY_SIZE' => 'destination.ACTIVITY_SIZE + source.ACTIVITY_SIZE',
'ACTIVITY_COUNT' => 'destination.ACTIVITY_COUNT + source.ACTIVITY_COUNT',
),
array(
'INDICATOR_TYPE' => 'INDICATOR_TYPE',
'OWNER_ID' => 'OWNER_ID',
'DATE_CREATE' => 'DATE_CREATE',
'STAGE_SEMANTIC_ID' => 'INVOICE_STAGE_SEMANTIC',
)
);
}
return $this;
}