- Модуль: salescenter
- Путь к файлу: ~/bitrix/modules/salescenter/lib/integration/crmmanager.php
- Класс: BitrixSalesCenterIntegrationCrmManager
- Вызов: CrmManager::getClientAddressList
public function getClientAddressList(int $contactId)
{
if (!Loader::includeModule('crm'))
{
return [];
}
$entityTypeId = CCrmOwnerType::Contact;
$requisite = EntityRequisite::getSingleInstance()->getList([
'select' => ['ID'],
'filter' => [
'=ENTITY_TYPE_ID' => $entityTypeId,
'=ENTITY_ID' => $contactId,
],
])->fetch();
if (!$requisite)
{
return [];
}
$result = [];
$addresses = AddressTable::getList([
'filter' => [
'ENTITY_ID' => (int)$requisite['ID'],
'ENTITY_TYPE_ID' => CCrmOwnerType::Requisite,
'>LOC_ADDR_ID' => 0,
],
])->fetchAll();
$defaultAddressTypeByCategory =
method_exists(EntityAddressType::class, 'getDefaultIdByEntityId')
? EntityAddressType::getDefaultIdByEntityId($entityTypeId, $contactId)
: EntityAddressType::Undefined
;
$defaultAddressTypeId =
EntityAddressType::isDefined($defaultAddressTypeByCategory)
? $defaultAddressTypeByCategory
: EntityAddressType::getDefaultIdByZone(EntityAddress::getZoneId())
;
$sortingMap = [
EntityAddressType::Delivery => 10,
$defaultAddressTypeId => 20,
];
foreach ($addresses as $address)
{
$result[$address['TYPE_ID']] = [
'VALUE' => (int)$address['LOC_ADDR_ID'],
'SORT' => $sortingMap[$address['TYPE_ID']] ?? 100,
];
}
uasort($result, function ($a, $b) {
return $a['SORT'] < $b['SORT'] ? -1 : 1;
});
return array_column($result, 'VALUE');
}