• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/volume/invoice.php
  • Класс: Bitrix\Crm\Volume\Invoice
  • Вызов: Invoice::measureEvent
public function measureEvent($additionEventFilter = array())
{
	self::loadTablesInformation();

	$querySql = $this->prepareEventRelationQuerySql(array(
		'EVENT_DATE_CREATE' => 'INVOICE_DATE_CREATE_SHORT',
		'INVOICE_STAGE_SEMANTIC_ID' => 'INVOICE_STAGE_SEMANTIC_ID',
	));

	if ($querySql != '')
	{
		$avgEventTableRowLength = (double)self::$tablesInformation[Crm\EventTable::getTableName()]['AVG_SIZE'];

		$querySql = "
			SELECT 
				'".static::getIndicatorId()."' as INDICATOR_TYPE,
				'".$this->getOwner()."' as OWNER_ID,
				EVENT_DATE_CREATE as DATE_CREATE,
				INVOICE_STAGE_SEMANTIC_ID, 
				(	FILE_SIZE +
					EVENT_COUNT * {$avgEventTableRowLength} ) as EVENT_SIZE,
				EVENT_COUNT as EVENT_COUNT
			FROM 
			(
				{$querySql}
			) src
		";

		Crm\VolumeTable::updateFromSelect(
			$querySql,
			array(
				'EVENT_SIZE' => 'destination.EVENT_SIZE + source.EVENT_SIZE',
				'EVENT_COUNT' => 'destination.EVENT_COUNT + source.EVENT_COUNT',
			),
			array(
				'INDICATOR_TYPE' => 'INDICATOR_TYPE',
				'OWNER_ID' => 'OWNER_ID',
				'DATE_CREATE' => 'DATE_CREATE',
				'STAGE_SEMANTIC_ID' => 'INVOICE_STAGE_SEMANTIC_ID',
			)
		);
	}

	return $this;
}