• Модуль: 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;
}