• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/requisite/importhelper.php
  • Класс: Bitrix\Crm\Requisite\ImportHelper
  • Вызов: ImportHelper::getParsedRequisiteDupParams
public function getParsedRequisiteDupParams($requisiteDupControlFieldMap)
{
	$result = array(
		'DUP_PARAM_LIST' => array(),
		'DUP_PARAM_FIELDS' => array()
	);

	if (!$this->isReady())
		return $result;

	$dupParamList = $dupParamFieldMap = array();
	$rqIndex = 0;
	foreach ($this->getParsedRequisites() as $requisiteFields)
	{
		if ($this->assocPreset)
		{
			$presetId = isset($requisiteFields['PRESET_ID']) ? (int)$requisiteFields['PRESET_ID'] : 0;
			if ($presetId <= 0 && $this->useDefPreset && $this->defPresetId > 0)
			{
				$presetId = $this->defPresetId;
			}
		}
		else if ($this->defPresetId > 0)
		{
			$presetId = $this->defPresetId;
		}
		$presetInfo = self::getCachedPresetInfo($presetId);
		if (is_array($presetInfo) && isset($presetInfo['COUNTRY_ID']))
		{
			$countryId = (int)$presetInfo['COUNTRY_ID'];
			$rqDupParams = null;
			if (is_array($requisiteDupControlFieldMap['requisite'][$countryId])
				&& !empty($requisiteDupControlFieldMap['requisite'][$countryId]))
			{
				foreach (array_keys($requisiteDupControlFieldMap['requisite'][$countryId]) as $fieldName)
				{
					if (isset($requisiteFields[$fieldName])
						&& ((is_string($requisiteFields[$fieldName])
								&& $requisiteFields[$fieldName] <> '')
							|| !empty($requisiteFields[$fieldName])))
					{
						if ($rqDupParams === null)
						{
							$rqDupParams = array(
								'ID' => 'n'.$rqIndex++,
								'PRESET_ID' => $presetId,
								'PRESET_COUNTRY_ID' => $countryId
							);
						}
						$rqDupParams[$fieldName] = $requisiteFields[$fieldName];
						$dupParamFieldMap['RQ.'.$fieldName.'|'.$countryId] = true;
					}
				}
			}
			if (is_array($requisiteFields['BANK_DETAILS']))
			{
				$bdIndex = 0;
				foreach ($requisiteFields['BANK_DETAILS'] as $bankDetailFields)
				{
					$bdDupParams = null;
					if (is_array($requisiteDupControlFieldMap['bankDetail'][$countryId])
						&& !empty($requisiteDupControlFieldMap['bankDetail'][$countryId]))
					{
						foreach (array_keys($requisiteDupControlFieldMap['bankDetail'][$countryId]) as $fieldName)
						{
							if (isset($bankDetailFields[$fieldName])
								&& ((is_string($bankDetailFields[$fieldName])
										&& $bankDetailFields[$fieldName] <> '')
									|| !empty($bankDetailFields[$fieldName])))
							{
								if ($rqDupParams === null)
								{
									$rqDupParams = array(
										'ID' => 'n'.$rqIndex++,
										'PRESET_ID' => $presetId,
										'PRESET_COUNTRY_ID' => $countryId
									);
								}
								if ($bdDupParams === null)
								{
									$bdDupParams = array(
										'ID' => 'n'.$bdIndex++,
										'ENTITY_TYPE_ID' => \CCrmOwnerType::Requisite,
										'ENTITY_ID' => $rqDupParams['ID'],
										'COUNTRY_ID' => $countryId
									);
								}
								$bdDupParams[$fieldName] = $bankDetailFields[$fieldName];
								$dupParamFieldMap['RQ.BD.'.$fieldName.'|'.$countryId] = true;
							}
						}
					}
					if (is_array($bdDupParams))
					{
						if (!is_array($rqDupParams['BD']))
							$rqDupParams['BD'] = array();
						$rqDupParams['BD'][$bdDupParams['ID']] = $bdDupParams;
					}
				}
			}
			if (is_array($rqDupParams))
			{
				$dupParamList[$rqDupParams['ID']] = $rqDupParams;
			}
		}
	}

	if (!empty($dupParamList))
		$result['DUP_PARAM_LIST'] = $dupParamList;
	if (!empty($dupParamFieldMap))
		$result['DUP_PARAM_FIELDS'] = array_keys($dupParamFieldMap);

	return $result;
}