• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/component/entitydetails/factorybased.php
  • Класс: Bitrix\Crm\Component\EntityDetails\FactoryBased
  • Вызов: FactoryBased::compatibleAction
public function compatibleAction(int $entityTypeId, int $entityId): ?Json
{
	$requestData = $this->request->toArray();
	$action = $requestData['ACTION'];
	if ($action === 'GET_FORMATTED_SUM')
	{
		$sum = (float)$requestData['SUM'];
		$currencyId = (string)$requestData['CURRENCY_ID'];

		return new Json([
			'FORMATTED_SUM' => Money::formatWithCustomTemplate($sum, $currencyId),
			'FORMATTED_SUM_WITH_CURRENCY' => Money::format($sum, $currencyId),
		]);
	}
	if($action === 'SAVE')
	{
		// it would be better to use signedParameters, but processing is encapsulated in Engine\Controller
		$this->arParams['ENTITY_TYPE_ID'] = $entityTypeId;
		$this->arParams['ENTITY_ID'] = $entityId;

		$data = array_intersect_key($requestData, [
			Item::FIELD_NAME_TITLE => true,

			Item::FIELD_NAME_ASSIGNED => true,

			Item::FIELD_NAME_OBSERVERS => true,

			EditorAdapter::FIELD_REQUISITE_ID => true,
			EditorAdapter::FIELD_BANK_DETAIL_ID => true,
			Item::FIELD_NAME_MYCOMPANY_ID => true,
			EditorAdapter::FIELD_MY_COMPANY_REQUISITE_ID => true,
			EditorAdapter::FIELD_MY_COMPANY_BANK_DETAIL_ID => true,
		]);

		return new Json($this->saveAction($data));
	}

	return null;
}