• Модуль: 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;
}