static function BuildSearchCard($arQuote, $bReindex = false)
{
$arStatuses = array();
$arSite = array();
$sEntityType = 'QUOTE';
$sTitle = 'TITLE';
$sNumber = 'QUOTE_NUMBER';
$arSearchableFields = array(
'DATE_CREATE' => GetMessage('CRM_QUOTE_SEARCH_FIELD_DATE_CREATE'),
'STATUS_ID' => GetMessage('CRM_QUOTE_SEARCH_FIELD_STATUS_ID_MSGVER_1'),
'BEGINDATE' => GetMessage('CRM_QUOTE_SEARCH_FIELD_BEGINDATE'),
'CLOSEDATE' => GetMessage('CRM_QUOTE_SEARCH_FIELD_CLOSEDATE'),
'OPPORTUNITY' => GetMessage('CRM_QUOTE_SEARCH_FIELD_OPPORTUNITY'),
'COMMENTS' => GetMessage('CRM_QUOTE_SEARCH_FIELD_COMMENTS'),
'CLIENT_TITLE' => GetMessage('CRM_QUOTE_SEARCH_FIELD_CLIENT_TITLE'),
'CLIENT_ADDR' => GetMessage('CRM_QUOTE_SEARCH_FIELD_CLIENT_ADDR'),
'CLIENT_CONTACT' => GetMessage('CRM_QUOTE_SEARCH_FIELD_CLIENT_CONTACT'),
'CLIENT_EMAIL' => GetMessage('CRM_QUOTE_SEARCH_FIELD_CLIENT_EMAIL'),
'CLIENT_PHONE' => GetMessage('CRM_QUOTE_SEARCH_FIELD_CLIENT_PHONE'),
'CLIENT_TP_ID' => GetMessage('CRM_QUOTE_SEARCH_FIELD_TP_ID'),
'CLIENT_TPA_ID' => GetMessage('CRM_QUOTE_SEARCH_FIELD_TPA_ID')
);
$sBody = $arQuote[$sNumber].', '.$arQuote[$sTitle]."\n";
$arField2status = array(
'STATUS_ID' => 'QUOTE_STATUS'
);
$site = new CSite();
foreach (array_keys($arSearchableFields) as $k)
{
if (!isset($arQuote[$k]))
continue;
$v = $arQuote[$k];
if($k === 'COMMENTS')
{
$v = CSearch::KillTags($v);
}
$v = trim($v);
if ($k === 'DATE_CREATE' || $k === 'BEGINDATE' || $k === 'CLOSEDATE')
{
$dateFormatShort = $site->GetDateFormat('SHORT');
if (!CheckDateTime($v, $dateFormatShort))
{
$v = ConvertTimeStamp(strtotime($v), 'SHORT');
}
if (CheckDateTime($v, $dateFormatShort))
{
$v = FormatDate('SHORT', MakeTimeStamp($v, $dateFormatShort));
}
else
{
$v = null;
}
}
if (isset($arField2status[$k]))
{
if (!isset($arStatuses[$k]))
$arStatuses[$k] = CCrmStatus::GetStatusList($arField2status[$k]);
$v = $arStatuses[$k][$v];
}
if ($k === 'OPPORTUNITY')
$v = number_format(doubleval($v), 2, '.', '');
if (!empty($v) && (!is_numeric($v) || $k === 'OPPORTUNITY') && $v != 'N' && $v != 'Y')
$sBody .= $arSearchableFields[$k].": $v\n";
}
if ((isset($arQuote['ASSIGNED_BY_NAME']) && !empty($arQuote['ASSIGNED_BY_NAME']))
|| (isset($arQuote['ASSIGNED_BY_LAST_NAME']) && !empty($arQuote['ASSIGNED_BY_LAST_NAME']))
|| (isset($arQuote['ASSIGNED_BY_SECOND_NAME']) && !empty($arQuote['ASSIGNED_BY_SECOND_NAME'])))
{
$responsibleInfo = CUser::FormatName(
$site->GetNameFormat(null, $arQuote['LID'] ?? null),
array(
'LOGIN' => '',
'NAME' => isset($arQuote['ASSIGNED_BY_NAME']) ? $arQuote['ASSIGNED_BY_NAME'] : '',
'LAST_NAME' => isset($arQuote['ASSIGNED_BY_LAST_NAME']) ? $arQuote['ASSIGNED_BY_LAST_NAME'] : '',
'SECOND_NAME' => isset($arQuote['ASSIGNED_BY_SECOND_NAME']) ? $arQuote['ASSIGNED_BY_SECOND_NAME'] : ''
),
false, false
);
if (isset($arQuote['ASSIGNED_BY_EMAIL']) && !empty($arQuote['ASSIGNED_BY_EMAIL']))
$responsibleInfo .= ', '.$arQuote['ASSIGNED_BY_EMAIL'];
if (isset($arQuote['ASSIGNED_BY_WORK_POSITION']) && !empty($arQuote['ASSIGNED_BY_WORK_POSITION']))
$responsibleInfo .= ', '.$arQuote['ASSIGNED_BY_WORK_POSITION'];
if (!empty($responsibleInfo) && !is_numeric($responsibleInfo) && $responsibleInfo != 'N' && $responsibleInfo != 'Y')
$sBody .= GetMessage('CRM_QUOTE_SEARCH_FIELD_ASSIGNED_BY_INFO').": $responsibleInfo\n";
}
$sDetailURL = CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_'.mb_strtolower($sEntityType).'_show'),
array(
mb_strtolower($sEntityType).'_id' => $arQuote['ID']
)
);
$_arAttr = \Bitrix\Crm\Security\Manager::resolveController($sEntityType)
->getPermissionAttributes($sEntityType, [$arQuote['ID']])
;
if (empty($arSite))
{
$rsSite = $site->GetList();
while ($_arSite = $rsSite->Fetch())
$arSite[] = $_arSite['ID'];
}
unset($site);
$sattr_d = '';
$sattr_s = '';
$sattr_u = '';
$sattr_o = '';
$sattr2 = '';
$arAttr = array();
if (!isset($_arAttr[$arQuote['ID']]))
$_arAttr[$arQuote['ID']] = array();
$arAttr[] = $sEntityType; // for perm X
foreach ($_arAttr[$arQuote['ID']] as $_s)
{
if ($_s[0] == 'U')
$sattr_u = $_s;
else if ($_s[0] == 'D')
$sattr_d = $_s;
else if ($_s[0] == 'S')
$sattr_s = $_s;
else if ($_s[0] == 'O')
$sattr_o = $_s;
$arAttr[] = $sEntityType.'_'.$_s;
}
$sattr = $sEntityType.'_'.$sattr_u;
if (!empty($sattr_d))
{
$sattr .= '_'.$sattr_d;
$arAttr[] = $sattr;
}
if (!empty($sattr_s))
{
$sattr2 = $sattr.'_'.$sattr_s;
$arAttr[] = $sattr2;
$arAttr[] = $sEntityType.'_'.$sattr_s; // for perm X in status
}
if (!empty($sattr_o))
{
$sattr .= '_'.$sattr_o;
$sattr3 = $sattr2.'_'.$sattr_o;
$arAttr[] = $sattr3;
$arAttr[] = $sattr;
}
$arSitePath = array();
foreach ($arSite as $sSite)
$arSitePath[$sSite] = $sDetailURL;
$arResult = Array(
'LAST_MODIFIED' => $arQuote['DATE_MODIFY'],
'DATE_FROM' => $arQuote['DATE_CREATE'],
'TITLE' => GetMessage('CRM_'.$sEntityType).': '.$arQuote[$sNumber].', '.$arQuote[$sTitle],
'PARAM1' => $sEntityType,
'PARAM2' => $arQuote['ID'],
'SITE_ID' => $arSitePath,
'PERMISSIONS' => $arAttr,
'BODY' => $sBody,
'TAGS' => 'crm,'.mb_strtolower($sEntityType).','.GetMessage('CRM_'.$sEntityType)
);
if ($bReindex)
$arResult['ID'] = $sEntityType.'.'.$arQuote['ID'];
return $arResult;
}