• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/entitybankdetail.php
  • Класс: Bitrix\Crm\EntityBankDetail
  • Вызов: EntityBankDetail::getByOwners
static function getByOwners($entityTypeId, $ownerIds, $ownerList = array())
{
	$result = array();

	if (self::checkEntityType($entityTypeId) && is_array($ownerIds) && !empty($ownerIds))
	{
		// load bank detail fields map
		$countryMap = array();
		$bankDetailFieldsMap = array();
		$bankDetail = self::getSingleInstance();
		$selectMap = array('ID' => true, 'ENTITY_ID' => true, 'COUNTRY_ID' => true);
		$res = $bankDetail->getList(
			array(
				'order' => array('ENTITY_ID', 'SORT', 'ID'),
				'filter' => array(
					'=ENTITY_TYPE_ID' => $entityTypeId,
					'@ENTITY_ID' => $ownerIds
				),
				'select' => array('ID', 'ENTITY_ID', 'COUNTRY_ID')
			)
		);
		while ($row = $res->fetch())
		{
			$bankDetailId = (int)$row['ID'];
			$ownerId = (int)$row['ENTITY_ID'];
			$countryId = (int)$row['COUNTRY_ID'];
			if ($countryId <= 0 && $ownerId > 0 && is_array($ownerList[$ownerId])
				&& isset($ownerList[$ownerId]['PRESET_COUNTRY_ID']))
			{
				$countryId = (int)$ownerList[$ownerId]['PRESET_COUNTRY_ID'];
			}
			if ($bankDetailId > 0 && $ownerId > 0 && $countryId > 0)
			{
				if (!isset($result[$ownerId][$bankDetailId]))
					$result[$ownerId][$bankDetailId] = array(
						'ID' => $bankDetailId,
						'ENTITY_TYPE_ID' => CCrmOwnerType::Requisite,
						'ENTITY_ID' => $ownerId,
						'COUNTRY_ID' => $countryId
					);
				if (!isset($countryMap[$countryId]))
					$countryMap[$countryId] = array();
			}
		}
		foreach ($bankDetail->getRqFieldByCountry() as $countryId => $fields)
		{
			$fields[] = 'COMMENTS';
			if (isset($countryMap[$countryId]))
			{
				foreach ($fields as $fieldName)
				{
					if (!isset($selectMap[$fieldName]))
						$selectMap[$fieldName] = true;
				}
				if (!isset($bankDetailFieldsMap[$countryId]))
					$bankDetailFieldsMap[$countryId] = $fields;
			}
		}
		unset($countryMap);

		// load bank details
		$bankDetailBasicFields = array_keys(self::getBasicFieldsInfo());
		foreach ($bankDetailBasicFields as $fieldName)
		{
			if (!isset($selectMap[$fieldName]))
				$selectMap[$fieldName] = true;
		}
		$res = $bankDetail->getList(
			array(
				'order' => array('ENTITY_ID', 'SORT', 'ID'),
				'filter' => array(
					'=ENTITY_TYPE_ID' => $entityTypeId,
					'@ENTITY_ID' => $ownerIds
				),
				'select' => array_keys($selectMap)
			)
		);
		while ($row = $res->fetch())
		{
			$ownerId = (int)$row['ENTITY_ID'];
			$bankDetailId = (int)$row['ID'];
			if (is_array($result[$ownerId][$bankDetailId]))
			{
				foreach ($bankDetailBasicFields as $fieldName)
				{
					if (!isset($result[$ownerId][$bankDetailId][$fieldName]))
						$result[$ownerId][$bankDetailId][$fieldName] = $row[$fieldName];
				}
				foreach ($bankDetailFieldsMap[$result[$ownerId][$bankDetailId]['COUNTRY_ID']] as $fieldName)
					$result[$ownerId][$bankDetailId][$fieldName] = $row[$fieldName];
			}
		}
	}

	return $result;
}