- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/search/leadsearchcontentbuilder.php
- Класс: Bitrix\Crm\Search\LeadSearchContentBuilder
- Вызов: LeadSearchContentBuilder::prepareSearchMap
protected function prepareSearchMap(array $fields, array $options = null)
{
$map = new SearchMap();
$entityID = isset($fields['ID']) ? (int)$fields['ID'] : 0;
if($entityID <= 0)
{
return $map;
}
$isShortIndex = ($options['isShortIndex'] ?? false);
if (!$isShortIndex)
{
$map->add($entityID);
}
$title = isset($fields['TITLE']) ? $fields['TITLE'] : '';
if($title !== '')
{
$map->addText($title);
$map->addText(SearchEnvironment::prepareSearchContent($title));
$customerNumber = $this->parseCustomerNumber($title, \CCrmLead::GetDefaultTitleTemplate());
if($customerNumber != $entityID)
{
$map->addTextFragments($customerNumber);
}
}
$map->addField($fields, 'LAST_NAME');
$map->addField($fields, 'NAME');
$map->addField($fields, 'SECOND_NAME');
if (!$isShortIndex)
{
$map->addField($fields, 'COMPANY_TITLE');
$map->addField($fields, 'OPPORTUNITY');
$map->add(
\CCrmCurrency::GetCurrencyName(
isset($fields['CURRENCY_ID']) ? $fields['CURRENCY_ID'] : ''
)
);
if(isset($fields['ASSIGNED_BY_ID']))
{
$map->addUserByID($fields['ASSIGNED_BY_ID']);
}
}
$multiFields = $this->getEntityMultiFields($entityID);
if(isset($multiFields[\CCrmFieldMulti::PHONE]))
{
foreach($multiFields[\CCrmFieldMulti::PHONE] as $multiField)
{
if(isset($multiField['VALUE']))
{
$map->addPhone($multiField['VALUE']);
}
}
}
if(isset($multiFields[\CCrmFieldMulti::EMAIL]))
{
foreach($multiFields[\CCrmFieldMulti::EMAIL] as $multiField)
{
if(isset($multiField['VALUE']))
{
$map->addEmail($multiField['VALUE']);
}
}
}
if (!$isShortIndex)
{
//region Status
if(isset($fields['STATUS_ID']))
{
$map->addStatus('STATUS', $fields['STATUS_ID']);
}
if(isset($fields['STATUS_DESCRIPTION']))
{
$map->addText($fields['STATUS_DESCRIPTION'], 1024);
}
//endregion
//region Source
if(isset($fields['SOURCE_ID']))
{
$map->addStatus('SOURCE', $fields['SOURCE_ID']);
}
if(isset($fields['SOURCE_DESCRIPTION']))
{
$map->addText($fields['SOURCE_DESCRIPTION'], 1024);
}
//endregion
//region Address
$address = preg_replace(
'/[,.]/', '',
AddressFormatter::getSingleInstance()->formatTextComma(
LeadAddress::mapEntityFields($fields)
)
);
if($address !== '')
{
$map->add($address);
}
//endregion
if(isset($fields['COMMENTS']))
{
$map->addHtml($fields['COMMENTS'], 1024);
}
if(isset($fields['IS_RETURN_CUSTOMER']) && $fields['IS_RETURN_CUSTOMER'] === 'Y')
{
$map->add(\CCrmLead::GetFieldCaption('IS_RETURN_CUSTOMER'));
}
//region UserFields
foreach($this->getUserFields($entityID) as $userField)
{
$map->addUserField($userField);
}
//endregion
}
return $map;
}