- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/entitybankdetail.php
- Класс: Bitrix\Crm\EntityBankDetail
- Вызов: EntityBankDetail::getByOwners
static function getByOwners($entityTypeId, $ownerIds, $ownerList = array())
{
$result = array();
if (self::checkEntityType($entityTypeId) && is_array($ownerIds) && !empty($ownerIds))
{
// load bank detail fields map
$countryMap = array();
$bankDetailFieldsMap = array();
$bankDetail = self::getSingleInstance();
$selectMap = array('ID' => true, 'ENTITY_ID' => true, 'COUNTRY_ID' => true);
$res = $bankDetail->getList(
array(
'order' => array('ENTITY_ID', 'SORT', 'ID'),
'filter' => array(
'=ENTITY_TYPE_ID' => $entityTypeId,
'@ENTITY_ID' => $ownerIds
),
'select' => array('ID', 'ENTITY_ID', 'COUNTRY_ID')
)
);
while ($row = $res->fetch())
{
$bankDetailId = (int)$row['ID'];
$ownerId = (int)$row['ENTITY_ID'];
$countryId = (int)$row['COUNTRY_ID'];
if ($countryId <= 0 && $ownerId > 0 && is_array($ownerList[$ownerId])
&& isset($ownerList[$ownerId]['PRESET_COUNTRY_ID']))
{
$countryId = (int)$ownerList[$ownerId]['PRESET_COUNTRY_ID'];
}
if ($bankDetailId > 0 && $ownerId > 0 && $countryId > 0)
{
if (!isset($result[$ownerId][$bankDetailId]))
$result[$ownerId][$bankDetailId] = array(
'ID' => $bankDetailId,
'ENTITY_TYPE_ID' => CCrmOwnerType::Requisite,
'ENTITY_ID' => $ownerId,
'COUNTRY_ID' => $countryId
);
if (!isset($countryMap[$countryId]))
$countryMap[$countryId] = array();
}
}
foreach ($bankDetail->getRqFieldByCountry() as $countryId => $fields)
{
$fields[] = 'COMMENTS';
if (isset($countryMap[$countryId]))
{
foreach ($fields as $fieldName)
{
if (!isset($selectMap[$fieldName]))
$selectMap[$fieldName] = true;
}
if (!isset($bankDetailFieldsMap[$countryId]))
$bankDetailFieldsMap[$countryId] = $fields;
}
}
unset($countryMap);
// load bank details
$bankDetailBasicFields = array_keys(self::getBasicFieldsInfo());
foreach ($bankDetailBasicFields as $fieldName)
{
if (!isset($selectMap[$fieldName]))
$selectMap[$fieldName] = true;
}
$res = $bankDetail->getList(
array(
'order' => array('ENTITY_ID', 'SORT', 'ID'),
'filter' => array(
'=ENTITY_TYPE_ID' => $entityTypeId,
'@ENTITY_ID' => $ownerIds
),
'select' => array_keys($selectMap)
)
);
while ($row = $res->fetch())
{
$ownerId = (int)$row['ENTITY_ID'];
$bankDetailId = (int)$row['ID'];
if (is_array($result[$ownerId][$bankDetailId]))
{
foreach ($bankDetailBasicFields as $fieldName)
{
if (!isset($result[$ownerId][$bankDetailId][$fieldName]))
$result[$ownerId][$bankDetailId][$fieldName] = $row[$fieldName];
}
foreach ($bankDetailFieldsMap[$result[$ownerId][$bankDetailId]['COUNTRY_ID']] as $fieldName)
$result[$ownerId][$bankDetailId][$fieldName] = $row[$fieldName];
}
}
}
return $result;
}