- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/integrity/duplicatebankdetailcriterion.php
- Класс: Bitrix\Crm\Integrity\DuplicateBankDetailCriterion
- Вызов: DuplicateBankDetailCriterion::prepareBulkData
static function prepareBulkData(array $bankDetails)
{
$result = array();
$requisiteCountryMap = array();
$presetCountryMap = array();
$bdFieldsMap = self::getFieldsMap();
foreach ($bankDetails as $bankDetailFields)
{
$countryId = 0;
if (isset($bankDetailFields['REQUISITE_PRESET_COUNTRY_ID']))
{
$countryId = (int)$bankDetailFields['REQUISITE_PRESET_COUNTRY_ID'];
}
else if (isset($bankDetailFields['COUNTRY_ID']))
{
$countryId = (int)$bankDetailFields['COUNTRY_ID'];
}
else if (isset($bankDetailFields['REQUISITE_PRESET_ID']))
{
$presetId = (int)$bankDetailFields['REQUISITE_PRESET_ID'];
if ($presetId > 0)
{
if (isset($presetCountryMap[$presetId]))
{
$countryId = $presetCountryMap[$presetId];
}
else
{
$preset = new EntityPreset();
$presetInfo = $preset->getById($presetId);
if (is_array($presetInfo) && isset($presetInfo['COUNTRY_ID']))
$countryId = $presetCountryMap[$presetId] = (int)$presetInfo['COUNTRY_ID'];
}
}
unset($presetId);
}
else if (isset($bankDetailFields['ENTITY_TYPE_ID']) && isset($bankDetailFields['ENTITY_ID']))
{
$entityTypeId = (int)$bankDetailFields['ENTITY_TYPE_ID'];
$entityId = (int)$bankDetailFields['ENTITY_ID'];
if ($entityTypeId === \CCrmOwnerType::Requisite && $entityId > 0)
{
$requisite = self::getRequisite();
if (isset($requisiteCountryMap[$entityId]))
{
$countryId = $requisiteCountryMap[$entityId];
}
else
{
$res = $requisite->getList(
array(
'select' => array('PRESET_COUNTRY_ID' => 'PRESET.COUNTRY_ID'),
'filter' => array('=ID' => $entityId)
)
);
if ($row = $res->fetch())
{
if (isset($row['PRESET_COUNTRY_ID']) && $row['PRESET_COUNTRY_ID'] > 0)
$countryId = $requisiteCountryMap[$entityId] = (int)$row['PRESET_COUNTRY_ID'];
}
unset($res);
}
}
}
if ($countryId > 0)
{
if (is_array($bdFieldsMap[$countryId] ?? null))
{
foreach ($bdFieldsMap[$countryId] as $bdFieldName)
{
if (isset($bankDetailFields[$bdFieldName]) && !empty($bankDetailFields[$bdFieldName]))
{
if (!is_array($result[$countryId] ?? null))
$result[$countryId] = [];
if (!is_array($result[$countryId][$bdFieldName] ?? null))
$result[$countryId][$bdFieldName] = [];
$result[$countryId][$bdFieldName][] = $bankDetailFields[$bdFieldName];
}
}
}
}
}
return $result;
}