• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/requisite/conversion/entityaddressconverter.php
  • Класс: Bitrix\Crm\Requisite\Conversion\EntityAddressConverter
  • Вызов: EntityAddressConverter::setEntityAddresses
protected function setEntityAddresses(int $id, array $addresses)
{
	if(!empty($addresses))
	{
		list($requisiteAddressMap, $requisitePresetMap) = $this->getEntityRequisiteMaps($id);
		$advancedRequisiteId = 0;
		foreach ($addresses as $addressTypeId => $address)
		{
			$isFound = false;
			$isRegistered = false;
			if ($advancedRequisiteId <= 0)
			{
				$isFound = $this->matchRequisiteAddressAndSetDef(
					$addressTypeId,
					$address,
					$requisiteAddressMap
				);
				if (!$isFound)
				{
					if (count($requisiteAddressMap) === 1)
					{
						$requisiteAddresses = reset($requisiteAddressMap);
						$requisiteId = key($requisiteAddressMap);
					}
					else
					{
						$requisiteId = $this->getEntityDefaultRequisiteId($id, $requisiteAddressMap);
					}
					if ($requisiteId > 0)
					{
						if (!isset($requisiteAddresses[$addressTypeId])
							|| EntityAddress::isEmpty($requisiteAddresses[$addressTypeId]))
						{
							EntityAddress::register(
								CCrmOwnerType::Requisite,
								$requisiteId,
								$addressTypeId,
								$address
							);
							/*$this->logInfo(
								'EntityAddress::register('.CCrmOwnerType::Requisite.', '.$addressTypeId.', '.
								$requisiteId.')'
							);*/
							$isRegistered = true;
						}
					}
				}
			}
			if (!$isFound && !$isRegistered)
			{
				if ($advancedRequisiteId <= 0)
				{
					$advancedRequisiteId = $this->addEntityRequisite(
						$id,
						$requisiteAddressMap,
						$requisitePresetMap
					);
				}
				if($advancedRequisiteId > 0)
				{
					EntityAddress::register(
						CCrmOwnerType::Requisite,
						$advancedRequisiteId,
						$addressTypeId,
						$address
					);
					/*$this->logInfo(
						'EntityAddress::register('.\CCrmOwnerType::Requisite.', '.$advancedRequisiteId.', '.
						$addressTypeId.')'
					);*/
				}
				else
				{
					throw new EntityAddressConverterException(
						$this->entityTypeId,
						$this->defaultPresetId,
						EntityAddressConverterException::CREATION_FAILED
					);
				}
			}
		}
	}
}