• Модуль: salescenter
  • Путь к файлу: ~/bitrix/modules/salescenter/lib/controller/order.php
  • Класс: BitrixSalesCenterControllerOrder
  • Вызов: Order::tryToFillContactDeliveryAddress
private function tryToFillContactDeliveryAddress(int $contactId, int $shipmentId)
{
	/**
	 * Get existing requisite or create a new one
	 */
	$requisiteId = $this->getRequisiteId($contactId);
	if (!$requisiteId)
	{
		$requisiteId = $this->createDefaultRequisite($contactId);
	}

	if (!$requisiteId)
	{
		return;
	}

	/**
	 * Check if address is specified so that we do not overwrite it
	 */
	$existingAddress = RequisiteAddress::getByOwner(
		CrmEntityAddressType::Delivery,
		CCrmOwnerType::Requisite,
		$requisiteId
	);
	if ($existingAddress)
	{
		return;
	}

	$addressId = $this->getClientAddressId($shipmentId);
	if (!$addressId)
	{
		return;
	}

	/**
	 * Register address
	 */
	RequisiteAddress::register(
		CCrmOwnerType::Requisite,
		$requisiteId,
		CrmEntityAddressType::Delivery,
		[
			//@TODO wait for the fix on the CRM's side and get back to passing ID instead of the object
			//'LOC_ADDR_ID' => $addressId,
			'LOC_ADDR' => Address::load($addressId),
		]
	);
}