• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/order/matcher/fieldsynchronizer.php
  • Класс: Bitrix\Crm\Order\Matcher\FieldSynchronizer
  • Вызов: FieldSynchronizer::extractMatchProperties
static function extractMatchProperties(&$itemFields)
{
	$entityName = $itemFields['ENTITY_NAME'];
	unset($itemFields['ENTITY_NAME']);
	$matchEntityFieldCode = $itemFields['ENTITY_FIELD_CODE'];
	unset($itemFields['ENTITY_FIELD_CODE']);
	$requisitePresetId = (int)$itemFields['RQ_PRESET_ID'];
	unset($itemFields['RQ_PRESET_ID']);
	$bankDetail = $itemFields['RQ_BANK_DETAIL'];
	unset($itemFields['RQ_BANK_DETAIL']);
	$address = $itemFields['RQ_ADDR'];
	unset($itemFields['RQ_ADDR']);
	$addressType = $itemFields['RQ_ADDR_TYPE'];
	unset($itemFields['RQ_ADDR_TYPE']);

	if (empty($entityName) || $entityName === \CCrmOwnerType::OrderName)
	{
		return [];
	}

	if (\CCrmFieldMulti::IsSupportedType($matchEntityFieldCode))
	{
		$multiFieldType = $itemFields['MULTI_FIELD_TYPE'];
		unset($itemFields['MULTI_FIELD_TYPE']);

		$fieldType = BaseEntityMatcher::MULTI_FIELD_TYPE;
		$fieldCode = $matchEntityFieldCode.'_'.$multiFieldType;
		$settings = [];
	}
	elseif ($requisitePresetId)
	{
		$presets = static::getRequisitePresetsInfo();

		if ($bankDetail === 'Y')
		{
			$fieldType = BaseEntityMatcher::BANK_DETAIL_FIELD_TYPE;
			$fieldCode = $matchEntityFieldCode;
			$settings = [
				'RQ_NAME' => $presets[$requisitePresetId],
				'RQ_PRESET_ID' => $requisitePresetId,
				'BD_NAME' => Loc::getMessage('CRM_ORDER_MATCHER_BANK_DETAIL'),
				'BD_COUNTRY_ID' => static::getDefaultCountryId()
			];
		}
		elseif ($address === 'Y')
		{
			$fieldType = BaseEntityMatcher::REQUISITE_FIELD_TYPE;
			$fieldCode = 'RQ_ADDR';
			$settings = [
				'RQ_NAME' => $presets[$requisitePresetId],
				'RQ_PRESET_ID' => $requisitePresetId,
				'RQ_ADDR_TYPE' => $addressType,
				'RQ_ADDR_CODE' => $matchEntityFieldCode
			];
		}
		else
		{
			$fieldType = BaseEntityMatcher::REQUISITE_FIELD_TYPE;
			$fieldCode = $matchEntityFieldCode;
			$settings = [
				'RQ_NAME' => $presets[$requisitePresetId],
				'RQ_PRESET_ID' => $requisitePresetId
			];
		}
	}
	else
	{
		$fieldType = BaseEntityMatcher::GENERAL_FIELD_TYPE;
		$fieldCode = $matchEntityFieldCode;
		$settings = [];
	}

	return [
		'CRM_ENTITY_TYPE' => \CCrmOwnerType::ResolveID($entityName),
		'CRM_FIELD_TYPE' => $fieldType,
		'CRM_FIELD_CODE' => $fieldCode,
		'SETTINGS' => $settings
	];
}