DuplicateBankDetailCriterion::prepareBulkData

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. DuplicateBankDetailCriterion
  4. prepareBulkData
  • Модуль: 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;
}

Добавить комментарий