- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/search/dealsearchcontentbuilder.php
- Класс: Bitrix\Crm\Search\DealSearchContentBuilder
- Вызов: DealSearchContentBuilder::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, \CCrmDeal::GetDefaultTitleTemplate());
if($customerNumber != $entityID)
{
$map->addTextFragments($customerNumber);
}
}
$map->addField($fields, 'OPPORTUNITY');
if (!$isShortIndex)
{
$map->add(
\CCrmCurrency::GetCurrencyName(
isset($fields['CURRENCY_ID']) ? $fields['CURRENCY_ID'] : ''
)
);
if(isset($fields['ASSIGNED_BY_ID']))
{
$map->addUserByID($fields['ASSIGNED_BY_ID']);
}
}
//region Company
$companyID = isset($fields['COMPANY_ID']) ? (int)$fields['COMPANY_ID'] : 0;
if($companyID > 0)
{
$map->add(
\CCrmOwnerType::GetCaption(\CCrmOwnerType::Company, $companyID, false)
);
$map->addEntityMultiFields(
\CCrmOwnerType::Company,
$companyID,
array(\CCrmFieldMulti::PHONE, \CCrmFieldMulti::EMAIL)
);
}
//endregion
//region Contacts
$contactIDs = DealContactTable::getDealContactIDs($entityID);
foreach($contactIDs as $contactID)
{
$map->add(
\CCrmOwnerType::GetCaption(\CCrmOwnerType::Contact, $contactID, false)
);
$map->addEntityMultiFields(
\CCrmOwnerType::Contact,
$contactID,
array(\CCrmFieldMulti::PHONE, \CCrmFieldMulti::EMAIL)
);
}
//endregion
if (!$isShortIndex)
{
if(isset($fields['TYPE_ID']))
{
$map->addStatus('DEAL_TYPE', $fields['TYPE_ID']);
}
if(isset($fields['STAGE_ID']))
{
$map->add(
Crm\Category\DealCategory::getStageName(
$fields['STAGE_ID'],
isset($fields['CATEGORY_ID']) ? $fields['CATEGORY_ID'] : -1
)
);
}
if(isset($fields['BEGINDATE']))
{
$map->add($fields['BEGINDATE']);
}
if(isset($fields['CLOSEDATE']))
{
$map->add($fields['CLOSEDATE']);
}
if(isset($fields['COMMENTS']))
{
$map->addHtml($fields['COMMENTS'], 1024);
}
//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 UserFields
foreach($this->getUserFields($entityID) as $userField)
{
$map->addUserField($userField);
}
//endregion
}
return $map;
}