• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/timeline/storedocumentcontroller.php
  • Класс: Bitrix\Crm\Timeline\StoreDocumentController
  • Вызов: StoreDocumentController::onTotalModify
private function onTotalModify($documentId, $updatedFields, $oldFields, $bindings)
{
	$historyEntryID = null;

	if (!isset($updatedFields['TOTAL']) && !isset($updatedFields['CURRENCY']))
	{
		return;
	}

	$oldTotal = $oldFields['TOTAL'];
	$newTotal = $updatedFields['TOTAL'];
	$oldCurrency = $oldFields['CURRENCY'];
	$newCurrency = $updatedFields['CURRENCY'];

	if ((float)$oldTotal === (float)$newTotal && $oldCurrency === $newCurrency)
	{
		return;
	}

	if (!isset($newTotal, $newCurrency))
	{
		$documentInfo = StoreDocumentTable::getList(['select' => ['TOTAL', 'CURRENCY'], 'filter' => ['=ID' => $documentId], 'limit' => 1])->fetch();
		if (!isset($newCurrency))
		{
			$newCurrency = $documentInfo['CURRENCY'];
		}
		if (!isset($newTotal))
		{
			$newTotal = $documentInfo['TOTAL'];
		}
	}

	$authorID = self::resolveEditorID($updatedFields);

	$historyEntryID = StoreDocumentEntry::create(
		[
			'TYPE_CATEGORY_ID' => TimelineType::MODIFICATION,
			'ENTITY_TYPE_ID' => \CCrmOwnerType::StoreDocument,
			'ENTITY_ID' => $documentId,
			'AUTHOR_ID' => $authorID,
			'SETTINGS' => [
				'FIELD' => 'TOTAL',
				'TOTAL' => $newTotal,
				'CURRENCY' => $newCurrency,
			],
			'BINDINGS' => $bindings
		]
	);

	foreach ($bindings as $binding)
	{
		$this->sendPullEventOnAdd(
			new \Bitrix\Crm\ItemIdentifier($binding['ENTITY_TYPE_ID'], $binding['ENTITY_ID']),
			$historyEntryID
		);
	}
}