- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_invoice.php
- Класс: \CAllCrmInvoice
- Вызов: CAllCrmInvoice::BuildSearchCard
static function BuildSearchCard($arInvoice, $bReindex = false)
{
$arStatuses = array();
$arSite = array();
$sEntityType = 'INVOICE';
$sTitle = 'ORDER_TOPIC';
$sNumber = 'ACCOUNT_NUMBER';
$arSearchableFields = array(
/*'ACCOUNT_NUMBER' => GetMessage('CRM_INVOICE_SEARCH_FIELD_ACCOUNT_NUMBER'),*/
/*'ORDER_TOPIC' => GetMessage('CRM_INVOICE_SEARCH_FIELD_ORDER_TOPIC'),*/
'STATUS_ID' => GetMessage('CRM_INVOICE_SEARCH_FIELD_STATUS_ID'),
'DATE_BILL' => GetMessage('CRM_INVOICE_SEARCH_FIELD_DATE_BILL'),
'DATE_PAY_BEFORE' => GetMessage('CRM_INVOICE_SEARCH_FIELD_DATE_PAY_BEFORE'),
'PRICE' => GetMessage('CRM_INVOICE_SEARCH_FIELD_PRICE'),
'PAY_VOUCHER_NUM' => GetMessage('CRM_INVOICE_SEARCH_FIELD_PAY_VOUCHER_NUM'),
'USER_DESCRIPTION' => GetMessage('CRM_INVOICE_SEARCH_FIELD_USER_DESCRIPTION'),
'COMMENTS' => GetMessage('CRM_INVOICE_SEARCH_FIELD_COMMENTS'),
'REASON_MARKED' => GetMessage('CRM_INVOICE_SEARCH_FIELD_REASON_MARKED')
);
$sBody = $arInvoice[$sNumber].', '.$arInvoice[$sTitle]."\n";
$arField2status = array(
'STATUS_ID' => 'INVOICE_STATUS'
);
$site = new CSite();
foreach (array_keys($arSearchableFields) as $k)
{
if (!isset($arInvoice[$k]))
continue;
$v = $arInvoice[$k];
if($k === 'COMMENTS' || $k === 'USER_DESCRIPTION')
{
$v = CSearch::KillTags($v);
}
$v = trim($v);
if ($k === 'DATE_BILL' || $k === 'DATE_PAY_BEFORE')
{
$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 (!empty($v) && (!is_numeric($v) || $k === 'PRICE') && $v != 'N' && $v != 'Y')
$sBody .= $arSearchableFields[$k].": $v\n";
}
if ((isset($arInvoice['RESPONSIBLE_NAME']) && !empty($arInvoice['RESPONSIBLE_NAME']))
|| (isset($arInvoice['RESPONSIBLE_LAST_NAME']) && !empty($arInvoice['RESPONSIBLE_LAST_NAME']))
|| (isset($arInvoice['RESPONSIBLE_SECOND_NAME']) && !empty($arInvoice['RESPONSIBLE_SECOND_NAME'])))
{
$responsibleInfo = CUser::FormatName(
$site->GetNameFormat(null, $arInvoice['LID']),
array(
'LOGIN' => '',
'NAME' => isset($arInvoice['RESPONSIBLE_NAME']) ? $arInvoice['RESPONSIBLE_NAME'] : '',
'LAST_NAME' => isset($arInvoice['RESPONSIBLE_LAST_NAME']) ? $arInvoice['RESPONSIBLE_LAST_NAME'] : '',
'SECOND_NAME' => isset($arInvoice['RESPONSIBLE_SECOND_NAME']) ? $arInvoice['RESPONSIBLE_SECOND_NAME'] : ''
),
false, false
);
if (isset($arInvoice['RESPONSIBLE_EMAIL']) && !empty($arInvoice['RESPONSIBLE_EMAIL']))
$responsibleInfo .= ', '.$arInvoice['RESPONSIBLE_EMAIL'];
if (isset($arInvoice['RESPONSIBLE_WORK_POSITION']) && !empty($arInvoice['RESPONSIBLE_WORK_POSITION']))
$responsibleInfo .= ', '.$arInvoice['RESPONSIBLE_WORK_POSITION'];
if (!empty($responsibleInfo) && !is_numeric($responsibleInfo) && $responsibleInfo != 'N' && $responsibleInfo != 'Y')
$sBody .= GetMessage('CRM_INVOICE_SEARCH_FIELD_RESPONSIBLE_INFO').": $responsibleInfo\n";
}
if (intval($arInvoice['PERSON_TYPE_ID']) > 0)
{
$arSearchableProperties = self::_getAllowedPropertiesInfo($arInvoice['LID']);
$arSearchableProperties = $arSearchableProperties[$arInvoice['PERSON_TYPE_ID']];
if (is_array($arSearchableProperties))
{
$arInvoiceProps = self::GetProperties($arInvoice['ID'], $arInvoice['PERSON_TYPE_ID']);
foreach ($arInvoiceProps as $prop)
{
$propCode = $prop['FIELDS']['CODE'];
if (array_key_exists($propCode, $arSearchableProperties))
{
$v = $prop['VALUE'];
if (!empty($v) && !is_numeric($v) && $v != 'N' && $v != 'Y')
$sBody .= $arSearchableProperties[$propCode].": $v\n";
}
}
}
}
$sDetailURL = CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_'.mb_strtolower($sEntityType).'_show'),
array(
mb_strtolower($sEntityType).'_id' => $arInvoice['ID']
)
);
$_arAttr = \Bitrix\Crm\Security\Manager::resolveController($sEntityType)
->getPermissionAttributes($sEntityType, [$arInvoice['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[$arInvoice['ID']]))
$_arAttr[$arInvoice['ID']] = array();
$arAttr[] = $sEntityType; // for perm X
foreach ($_arAttr[$arInvoice['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' => $arInvoice['DATE_UPDATE'],
'DATE_FROM' => $arInvoice['DATE_INSERT'],
'TITLE' => GetMessage('CRM_'.$sEntityType).': '.$arInvoice[$sNumber].', '.$arInvoice[$sTitle],
'PARAM1' => $sEntityType,
'PARAM2' => $arInvoice['ID'],
'SITE_ID' => $arSitePath,
'PERMISSIONS' => $arAttr,
'BODY' => $sBody,
'TAGS' => 'crm,'.mb_strtolower($sEntityType).','.GetMessage('CRM_'.$sEntityType)
);
if ($bReindex)
$arResult['ID'] = $sEntityType.'.'.$arInvoice['ID'];
return $arResult;
}