• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/order/eventshandler/saleordercheckout.php
  • Класс: Bitrix\Crm\Order\EventsHandler\SaleOrderCheckout
  • Вызов: SaleOrderCheckout::onPrepareJsonData
static function onPrepareJsonData(array &$jsonData): void
{
	$properties = $jsonData['SCHEME']['PROPERTIES'] ?? null;
	if (!$properties)
	{
		return;
	}

	$session = Application::getInstance()->getSession();
	$compilationDealId = $session->get('CATALOG_CURRENT_COMPILATION_DEAL_ID');
	if (!$compilationDealId)
	{
		return;
	}

	$currentDealContactData = [];

	$contactBindings = DealContactTable::getDealBindings($compilationDealId);
	$primaryDealContactId = EntityBinding::getPrimaryEntityID(
		CCrmOwnerType::Contact,
		$contactBindings
	);

	$contactData = CCrmContact::GetByID($primaryDealContactId, false);
	$contactPhoneData = CCrmFieldMulti::GetEntityFirstField(
		CCrmOwnerType::ContactName,
		$primaryDealContactId,
		CCrmFieldMulti::PHONE
	);
	$contactEmailData = CCrmFieldMulti::GetEntityFirstField(
		CCrmOwnerType::ContactName,
		$primaryDealContactId,
		CCrmFieldMulti::EMAIL
	);

	$currentDealContactData['NAME'] = $contactData['FULL_NAME'];
	$currentDealContactData['PHONE'] = $contactPhoneData['VALUE'];
	$currentDealContactData['EMAIL'] = $contactEmailData['VALUE'];

	foreach ($properties as $propertyKey => $property)
	{
		$propertyType = $property['TYPE'] ?? null;
		$currentDealContactValue = $currentDealContactData[$propertyType] ?? null;

		if ($currentDealContactValue !== null)
		{
			$properties[$propertyKey]['VALUE'] = $currentDealContactValue;
		}
	}

	$jsonData['SCHEME']['PROPERTIES'] = $properties;
}