CAllCrmQuote::BuildSearchCard

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. CAllCrmQuote
  4. BuildSearchCard
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_quote.php
  • Класс: \CAllCrmQuote
  • Вызов: CAllCrmQuote::BuildSearchCard
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;
}

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