- Модуль: 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
];
}