• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/statistics/entity/dealinvoicestatistics.php
  • Класс: Bitrix\Crm\Statistics\Entity\DealInvoiceStatisticsTable
  • Вызов: DealInvoiceStatisticsTable::synchronize
static function synchronize($ownerID, array $data)
{
	if(!is_int($ownerID))
	{
		$ownerID = (int)$ownerID;
	}

	if($ownerID <= 0)
	{
		throw new Main\ArgumentException('Owner ID must be greater than zero.', 'ownerID');
	}

	$connection = Main\Application::getConnection();
	$sqlHelper = $connection->getSqlHelper();

	$dateField = new DatetimeField('D');
	$start = $sqlHelper->convertToDb(isset($data['START_DATE']) ? $data['START_DATE'] : null, $dateField);
	$end = $sqlHelper->convertToDb(isset($data['END_DATE']) ? $data['END_DATE'] : null, $dateField);

	$userID = isset($data['RESPONSIBLE_ID']) ? (int)$data['RESPONSIBLE_ID'] : 0;

	$isLost = isset($data['IS_LOST']) ? $sqlHelper->forSql($data['IS_LOST'], 1) : '';
	$semanticID = isset($data['STAGE_SEMANTIC_ID']) ? $sqlHelper->forSql($data['STAGE_SEMANTIC_ID'], 3) : '';
	$stageID = isset($data['STAGE_ID']) ? $sqlHelper->forSql($data['STAGE_ID'], 50) : '';
	$totalSum = isset($data['TOTAL_SUM']) ? (double)$data['TOTAL_SUM'] : 0.0;

	$connection->queryExecute(
		"UPDATE b_crm_deal_inv_stat
			SET START_DATE = {$start}, END_DATE = {$end}, RESPONSIBLE_ID = {$userID},
			STAGE_SEMANTIC_ID = '{$semanticID}', STAGE_ID = '{$stageID}', IS_LOST = '{$isLost}',
			TOTAL_SUM = {$totalSum}, TOTAL_OWED = ({$totalSum} - TOTAL_INVOICE_SUM)
		WHERE OWNER_ID = {$ownerID}"
	);
}