- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/requisite/conversion/psrequisiteconverter.php
- Класс: Bitrix\Crm\Requisite\Conversion\PSRequisiteConverter
- Вызов: PSRequisiteConverter::addRequisite
static function addRequisite($info)
{
$requisiteId = 0;
$preset = new EntityPreset();
$requisite = new EntityRequisite();
$psId = isset($info['PS'][0]) ? (int)$info['PS'][0] : 0;
$companyId = isset($info['CO_ID']) ? (int)$info['CO_ID'] : 0;
$presetCountryId = isset($info['PRESET_COUNTRY_ID']) ? (int)$info['PRESET_COUNTRY_ID'] : 0;
if ($psId > 0 && $companyId > 0 && $presetCountryId > 0 && is_array($info['RQ']) && !empty($info['RQ']))
{
if (!isset(self::$presetCache[$presetCountryId]))
{
$countryCode = EntityPreset::getCountryCodeById($presetCountryId);
if (!empty($countryCode))
{
$presetXmlId = '#CRM_REQUISITE_PRESET_'.$countryCode.'_SELLER#';
$res = $preset->getList(
array(
'filter' => array('=XML_ID' => $presetXmlId, '=COUNTRY_ID' => $presetCountryId),
'select' => array('ID'),
'limit' => 1
)
);
if ($row = $res->fetch())
{
if (is_array($row) && isset($row['ID']))
self::$presetCache[$presetCountryId] = (int)$row['ID'];
}
unset($res, $row);
}
}
$presetId = isset(self::$presetCache[$presetCountryId]) ? self::$presetCache[$presetCountryId] : 0;
$psName = isset(self::$paySystemData[$psId]['PS_NAME']) ? self::$paySystemData[$psId]['PS_NAME'] : '';
if ($presetId > 0 && !empty($psName))
{
// sort value
$sort = 500;
$res = $requisite->getList(
array(
'order' => array('SORT' => 'DESC', 'ID' => 'DESC'),
'filter' => array(
'=ENTITY_TYPE_ID' => \CCrmOwnerType::Company,
'=ENTITY_ID' => $companyId
),
'select' => array('SORT'),
'limit' => 1
)
);
if ($row = $res->fetch())
{
if (isset($row['SORT']))
$sort = (int)$row['SORT'];
}
unset($res, $row);
$sort = $sort - ($sort % 10) + 10;
$fields = array(
'ENTITY_TYPE_ID' => \CCrmOwnerType::Company,
'ENTITY_ID' => $companyId,
'PRESET_ID' => $presetId,
'NAME' => $psName,
'ACTIVE' => 'Y',
'SORT' => $sort
);
foreach ($info['RQ'] as $rqName => $rqValue)
{
if ($rqName === EntityRequisite::ADDRESS)
{
$addrType = RequisiteAddress::Registered;
$addrValue = array($addrType => array());
$addrFields = array_keys($requisite->getAddressFieldMap(RequisiteAddress::Primary));
foreach ($addrFields as $addrFieldName)
{
if ($addrFieldName === 'ADDRESS_1')
$addrValue[$addrType][$addrFieldName] = $rqValue;
else
$addrValue[$addrType][$addrFieldName] = '';
}
$fields[$rqName] = $addrValue;
}
else
{
$fields[$rqName] = $rqValue;
}
}
$result = $requisite->add($fields);
if ($result->isSuccess())
$requisiteId = $result->getId();
}
}
return $requisiteId;
}