• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/merger/requisitemerginghelper.php
  • Класс: Bitrix\Crm\Merger\RequisiteMergingHelper
  • Вызов: RequisiteMergingHelper::isRequisiteNoConflicts
protected function isRequisiteNoConflicts(array $targRequisite, array $seedRequisite)
{
	$result = false;
	$seedPresetId = isset($seedRequisite['PRESET_ID']) ? (int)$seedRequisite['PRESET_ID'] : 0;
	$targPresetId = isset($targRequisite['PRESET_ID']) ? (int)$targRequisite['PRESET_ID'] : 0;

	if ($seedPresetId > 0 && $seedPresetId === $targPresetId)
	{
		$presetId = $seedPresetId;

		if (is_array($this->presetList[$presetId]) && is_array($this->presetList[$presetId]['FIELDS'])
			&& !empty($this->presetList[$presetId]['FIELDS']))
		{
			$result = true;
			$resultModified = false;
			foreach ($this->presetList[$presetId]['FIELDS'] as $fieldName)
			{
				$seedValue = isset($seedRequisite[$fieldName]) ? $seedRequisite[$fieldName] : null;
				$targValue = isset($targRequisite[$fieldName]) ? $targRequisite[$fieldName] : null;
				if ($fieldName === Crm\EntityRequisite::ADDRESS)
				{
					$isSeedHasAddresses = (is_array($seedValue) && !empty($seedValue));
					$isTargHasAddresses = (is_array($targValue) && !empty($targValue));
					if ($isSeedHasAddresses && $isTargHasAddresses)
					{
						foreach ($seedValue as $seedAddrTypeId => $seedAddr)
						{
							foreach ($targValue as $targAddrTypeId => $targAddr)
							{
								if ($seedAddrTypeId === $targAddrTypeId)
								{
									if (!Crm\RequisiteAddress::areEquals($seedAddr, $targAddr))
									{
										$result = false;
										$resultModified = true;
										break;
									}
								}
							}
							if ($resultModified)
								break;
						}
					}
				}
				else
				{
					$isSeedValueEmpty = ($seedValue === null
						|| (is_string($seedValue) ? $seedValue == '' : empty($seedValue)));
					$isTargValueEmpty = ($targValue === null
						|| (is_string($targValue) ? $targValue == '' : empty($targValue)));
					if (!$isSeedValueEmpty && !$isTargValueEmpty && $seedValue != $targValue)
					{
						$result = false;
						$resultModified = true;
					}
				}
				if ($resultModified)
					break;
			}
		}
	}

	return $result;
}