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