- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/requisite/conversion/psrequisiteconverter.php
- Класс: Bitrix\Crm\Requisite\Conversion\PSRequisiteConverter
- Вызов: PSRequisiteConverter::saveRequisiteBankDetail
static function saveRequisiteBankDetail(&$info)
{
if (self::$psEntityTreeMap === null)
self::$psEntityTreeMap = array();
$presetCountryId = isset($info['PRESET_COUNTRY_ID']) ? (int)$info['PRESET_COUNTRY_ID'] : 0;
if (isset($info['ID']) && $info['ID'] > 0
&& isset($info['CO_ID']) && $info['CO_ID'] > 0
&& $presetCountryId > 0
&& is_array($info['BD']) && is_array($info['BD']) && !empty($info['BD'])
&& is_array(self::$convFieldSets['BD'][$presetCountryId])
&& !empty(self::$convFieldSets['BD'][$presetCountryId]))
{
// prepare hashes of existing bank details
$bdHashList = array();
if (isset($info['IS_NEW']) && $info['IS_NEW'] === 'N')
{
$bankDetail = new EntityBankDetail();
$rqFieldsByCountry = $bankDetail->getRqFieldByCountry();
$rqFieldsByCountry = isset($rqFieldsByCountry[$presetCountryId]) ?
$rqFieldsByCountry[$presetCountryId] : array();
$res = $bankDetail->getList(
array(
'order' => array('SORT' => 'ASC', 'ID' => 'ASC'),
'filter' => array(
'=ENTITY_TYPE_ID' => \CCrmOwnerType::Requisite,
'=ENTITY_ID' => (int)$info['ID'],
'=COUNTRY_ID' => $presetCountryId
),
'select' => array_merge(array('ID'), $rqFieldsByCountry)
)
);
while ($row = $res->fetch())
{
$bankDetailId = isset($row['ID']) ? (int)$row['ID'] : 0;
if ($bankDetailId > 0 && $presetCountryId > 0)
{
$hashData = '|'.$presetCountryId;
foreach (array_keys(self::$convFieldSets['BD'][$presetCountryId]) as $fieldName)
{
$value = isset($row[$fieldName]) ? trim(strval($row[$fieldName])) : '';
$hashData .= '|'.$value;
}
$bdHashList[md5($hashData)] = $bankDetailId;
}
}
unset($res, $row, $hashData, $value, $bankDetailId);
}
// add bank details
foreach ($info['BD'] as $bdHash => &$bdInfo)
{
$bdInfo['CO_ID'] = (int)$info['CO_ID'];
$bdInfo['RQ_ID'] = (int)$info['ID'];
$bdInfo['COUNTRY_ID'] = $presetCountryId;
$bankDetailId = isset($bdHashList[$bdHash]) ?
(int)$bdHashList[$bdHash] : 0;
if ($bankDetailId > 0)
{
$bdInfo['IS_NEW'] = 'N';
}
else
{
$bankDetailId = self::addBankDetail($bdInfo);
$bdInfo['IS_NEW'] = 'Y';
}
$bdInfo['ID'] = $bankDetailId;
if ($bankDetailId > 0 && is_array($info['PS']))
{
if (is_array($bdInfo['PS']))
{
foreach ($bdInfo['PS'] as $psId)
{
self::$psEntityTreeMap[$psId] = array(
'CO' => $bdInfo['CO_ID'],
'RQ' => $bdInfo['RQ_ID'],
'BD' => $bankDetailId
);
}
}
}
}
unset($rqInfo);
}
}