$arResult['TYPE'] = $arParams['TYPE']; $arResult['BUTTONS'] = array(); $arFields = array(); $arParams['ELEMENT_ID'] = intval($arParams['ELEMENT_ID']); if ($arParams['TYPE'] == 'list') { $bRead = !$CrmPerms->HavePerm('INVOICE', BX_CRM_PERM_NONE, 'READ'); $bExport = !$CrmPerms->HavePerm('INVOICE', BX_CRM_PERM_NONE, 'EXPORT'); $bImport = !$CrmPerms->HavePerm('INVOICE', BX_CRM_PERM_NONE, 'IMPORT'); $bAdd = !$CrmPerms->HavePerm('INVOICE', BX_CRM_PERM_NONE, 'ADD'); $bWrite = !$CrmPerms->HavePerm('INVOICE', BX_CRM_PERM_NONE, 'WRITE'); $bDelete = false; } else { $arFields = CCrmInvoice::GetByID($arParams['ELEMENT_ID']); $arEntityAttr[$arParams['ELEMENT_ID']] = array(); if ($arFields !== false) { $arEntityAttr = $CrmPerms->GetEntityAttr('INVOICE', array($arParams['ELEMENT_ID'])); } $bRead = $arFields !== false; $bExport = false; $bImport = false; $bAdd = !$CrmPerms->HavePerm('INVOICE', BX_CRM_PERM_NONE, 'ADD'); $bWrite = $CrmPerms->CheckEnityAccess('INVOICE', 'WRITE', $arEntityAttr[$arParams['ELEMENT_ID']]); $bDelete = $CrmPerms->CheckEnityAccess('INVOICE', 'DELETE', $arEntityAttr[$arParams['ELEMENT_ID']]); } if (!$bRead && !$bAdd && !$bWrite) { return false; } if ($arParams['TYPE'] === 'list') { if ($bAdd) { $arResult['BUTTONS'][] = array('TEXT' => GetMessage('INVOICE_ADD'), 'TITLE' => GetMessage('INVOICE_ADD_TITLE'), 'LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_INVOICE_EDIT'], array('invoice_id' => 0)), 'HIGHLIGHT' => true); }
$res = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => 'CONTACT', 'ELEMENT_ID' => $arResult['CONTACT_ID'])); while ($ar = $res->Fetch()) { if (!$isInExportMode) { $arFmList[$ar['ELEMENT_ID']][$ar['COMPLEX_ID']][] = CCrmFieldMulti::GetTemplateByComplex($ar['COMPLEX_ID'], $ar['VALUE']); } else { $arFmList[$ar['ELEMENT_ID']][$ar['COMPLEX_ID']][] = $ar['VALUE']; } $arResult['CONTACT'][$ar['ELEMENT_ID']]['~' . $ar['COMPLEX_ID']][] = $ar['VALUE']; } foreach ($arFmList as $elementId => $arFM) { foreach ($arFM as $complexId => $arComplexName) { $arResult['CONTACT'][$elementId][$complexId] = implode(', ', $arComplexName); } } // checkig access for operation $arContactAttr = CCrmPerms::GetEntityAttr('CONTACT', $arResult['CONTACT_ID']); foreach ($arResult['CONTACT_ID'] as $iContactId) { $arResult['CONTACT'][$iContactId]['EDIT'] = $CCrmPerms->CheckEnityAccess('CONTACT', 'WRITE', $arContactAttr[$iContactId]); $arResult['CONTACT'][$iContactId]['DELETE'] = $CCrmPerms->CheckEnityAccess('CONTACT', 'DELETE', $arContactAttr[$iContactId]); $arResult['CONTACT'][$iContactId]['BIZPROC_LIST'] = array(); foreach ($arBPData as $arBP) { if (!CBPDocument::CanUserOperateDocument(CBPCanUserOperateOperation::StartWorkflow, $userID, array('crm', 'CCrmDocumentContact', 'CONTACT_' . $arResult['CONTACT'][$iContactId]['ID']), array('UserGroups' => $CCrmBizProc->arCurrentUserGroups, 'DocumentStates' => $arDocumentStates, 'WorkflowTemplateId' => $arBP['ID'], 'CreatedBy' => $arResult['CONTACT'][$iContactId]['ASSIGNED_BY'], 'UserIsAdmin' => $isAdmin, 'CRMEntityAttr' => $arContactAttr[$iContactId]))) { continue; } $arBP['PATH_TO_BIZPROC_START'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_CONTACT_SHOW'], array('contact_id' => $arResult['CONTACT'][$iContactId]['ID'])), array('workflow_template_id' => $arBP['ID'], 'bizproc_start' => 1, 'sessid' => $arResult['SESSION_ID'], 'CRM_CONTACT_SHOW_V12_active_tab' => 'tab_bizproc', 'back_url' => $arParams['PATH_TO_CONTACT_LIST'])); $arResult['CONTACT'][$iContactId]['BIZPROC_LIST'][] = $arBP; } } } if (!$isInExportMode) { $arResult['NEED_FOR_REBUILD_DUP_INDEX'] = false;
$res = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => 'LEAD', 'ELEMENT_ID' => $arResult['LEAD_ID'])); while ($ar = $res->Fetch()) { if ($sExportType == '') { $arFmList[$ar['ELEMENT_ID']][$ar['COMPLEX_ID']][] = CCrmFieldMulti::GetTemplateByComplex($ar['COMPLEX_ID'], $ar['VALUE']); } else { $arFmList[$ar['ELEMENT_ID']][$ar['COMPLEX_ID']][] = $ar['VALUE']; } $arResult['LEAD'][$ar['ELEMENT_ID']]['~' . $ar['COMPLEX_ID']][] = $ar['VALUE']; } foreach ($arFmList as $elementId => $arFM) { foreach ($arFM as $complexId => $arComplexName) { $arResult['LEAD'][$elementId][$complexId] = implode(', ', $arComplexName); } } // checkig access for operation $arLeadAttr = CCrmPerms::GetEntityAttr('LEAD', $arResult['LEAD_ID']); foreach ($arResult['LEAD_ID'] as $iLeadId) { if ($arResult['LEAD'][$iLeadId]['EDIT']) { $arResult['LEAD'][$iLeadId]['EDIT'] = $CCrmPerms->CheckEnityAccess('LEAD', 'WRITE', $arLeadAttr[$iLeadId]); } if ($arResult['LEAD'][$iLeadId]['DELETE']) { $arResult['LEAD'][$iLeadId]['DELETE'] = $CCrmPerms->CheckEnityAccess('LEAD', 'DELETE', $arLeadAttr[$iLeadId]); } $arResult['LEAD'][$iLeadId]['BIZPROC_LIST'] = array(); foreach ($arBPData as $arBP) { if (!CBPDocument::CanUserOperateDocument(CBPCanUserOperateOperation::StartWorkflow, $userID, array('crm', 'CCrmDocumentLead', 'LEAD_' . $arResult['LEAD'][$iLeadId]['ID']), array('UserGroups' => $CCrmBizProc->arCurrentUserGroups, 'DocumentStates' => $arDocumentStates, 'WorkflowTemplateId' => $arBP['ID'], 'CreatedBy' => $arResult['LEAD'][$iLeadId]['~ASSIGNED_BY'], 'UserIsAdmin' => $isAdmin, 'CRMEntityAttr' => $arLeadAttr[$iLeadId]))) { continue; } $arBP['PATH_TO_BIZPROC_START'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_LEAD_SHOW'], array('lead_id' => $arResult['LEAD'][$iLeadId]['ID'])), array('workflow_template_id' => $arBP['ID'], 'bizproc_start' => 1, 'sessid' => $arResult['SESSION_ID'], 'CRM_LEAD_SHOW_V12_active_tab' => 'tab_bizproc', 'back_url' => $arParams['PATH_TO_LEAD_LIST'])); $arResult['LEAD'][$iLeadId]['BIZPROC_LIST'][] = $arBP; }
public 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'), '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']), 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_' . strtolower($sEntityType) . '_show'), array(strtolower($sEntityType) . '_id' => $arQuote['ID'])); $_arAttr = CCrmPerms::GetEntityAttr($sEntityType, $arQuote['ID']); if (empty($arSite)) { $by = "sort"; $order = "asc"; $rsSite = $site->GetList($by, $order); 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,' . strtolower($sEntityType) . ',' . GetMessage('CRM_' . $sEntityType)); if ($bReindex) { $arResult['ID'] = $sEntityType . '.' . $arQuote['ID']; } return $arResult; }
if (isset($arResult['QUOTE_ID']) && !empty($arResult['QUOTE_ID'])) { // try to load product rows $arProductRows = CCrmQuote::LoadProductRows(array_keys($arResult['QUOTE_ID'])); foreach ($arProductRows as $arProductRow) { $ownerID = $arProductRow['OWNER_ID']; if (!isset($arResult['QUOTE'][$ownerID])) { continue; } $arEntity =& $arResult['QUOTE'][$ownerID]; if (!isset($arEntity['PRODUCT_ROWS'])) { $arEntity['PRODUCT_ROWS'] = array(); } $arEntity['PRODUCT_ROWS'][] = $arProductRow; } // checkig access for operation $arQuoteAttr = CCrmPerms::GetEntityAttr('QUOTE', $arResult['QUOTE_ID']); foreach ($arResult['QUOTE_ID'] as $iQuoteId) { $arResult['QUOTE'][$iQuoteId]['EDIT'] = $CCrmPerms->CheckEnityAccess('QUOTE', 'WRITE', $arQuoteAttr[$iQuoteId]); $arResult['QUOTE'][$iQuoteId]['DELETE'] = $CCrmPerms->CheckEnityAccess('QUOTE', 'DELETE', $arQuoteAttr[$iQuoteId]); /*---bizproc---$arResult['QUOTE'][$iQuoteId]['BIZPROC_LIST'] = array(); foreach ($arBPData as $arBP) { if (!CBPDocument::CanUserOperateDocument( CBPCanUserOperateOperation::StartWorkflow, $userID, array('crm', 'CCrmDocumentQuote', 'QUOTE_'.$arResult['QUOTE'][$iQuoteId]['ID']), array( 'UserGroups' => $CCrmBizProc->arCurrentUserGroups, 'DocumentStates' => $arDocumentStates, 'WorkflowTemplateId' => $arBP['ID'], 'CreatedBy' => $arResult['QUOTE'][$iQuoteId]['ASSIGNED_BY'],
$arResult['ENTITY_ID'] = intval($arParams['ENTITY_ID']); $arResult['ENTITY_TITLE'] = GetMessage('CRM_EVENT_DEFAULT_TITLE'); $arResult['EVENT_TYPE'] = $arParams['EVENT_TYPE']; $arResult['FREEZE_EVENT_ID'] = isset($arParams['FREEZE_EVENT_ID']) ? strtoupper($arParams['FREEZE_EVENT_ID']) : ''; if ($arParams['EVENT_TYPE'] === 'PHONE') { $arResult['PHONE_GROUPS'] = array(); } switch ($arParams['ENTITY_TYPE']) { case 'LEAD': $dbRes = CCrmLead::GetList(array('TITLE' => 'ASC', 'LAST_NAME' => 'ASC', 'NAME' => 'ASC'), array('ID' => $arResult['ENTITY_ID'])); if ($arRes = $dbRes->Fetch()) { $arResult['ENTITY_TITLE'] = $arRes['TITLE']; $arResult['STATUS_ID'] = $arRes['STATUS_ID']; $arResult['ENTITY_CONVERTED'] = $arRes['STATUS_ID'] == 'CONVERTED' ? 'Y' : 'N'; } $arEntityAttr = $CCrmPerms->GetEntityAttr('LEAD', $arResult['ENTITY_ID']); if ($CCrmPerms->CheckEnityAccess('LEAD', 'WRITE', $arEntityAttr[$arResult['ENTITY_ID']])) { $arResult['STATUS_LIST'] = array(); $arResult['STATUS_LIST_EX'] = CCrmStatus::GetStatusList('STATUS'); foreach ($arResult['STATUS_LIST_EX'] as $key => $value) { if ($key == 'CONVERTED') { continue; } if ($CCrmPerms->GetPermType('LEAD', 'WRITE', array('STATUS_ID' . $key)) > BX_CRM_PERM_NONE) { $arResult['STATUS_LIST']['REFERENCE'][] = $value; $arResult['STATUS_LIST']['REFERENCE_ID'][] = $key; } } $arResult['PHONE_GROUPS'][] = array('PHONES' => __CrmEventGetPhones('LEAD', $arResult['ENTITY_ID'])); } break;
protected static function _buildEntityCard($arEntity, $sTitle, $ENTITY_TYPE, $arOptions = null) { static $arEntityGroup = array(); static $arStatuses = array(); static $arSite = array(); $sBody = $arEntity[$sTitle] . "\n"; $arField2status = array('STATUS_ID' => 'STATUS', 'SOURCE_ID' => 'SOURCE', 'CURRENCY_ID' => 'CURRENCY', 'PRODUCT_ID' => 'PRODUCT', 'TYPE_ID' => 'CONTACT_TYPE', 'STAGE_ID' => 'DEAL_STAGE', 'EVENT_ID' => 'EVENT_TYPE', 'COMPANY_TYPE' => 'COMPANY_TYPE', 'EMPLOYEES' => 'EMPLOYEES', 'INDUSTRY' => 'INDUSTRY'); foreach ($arEntity as $_k => $_v) { if ($_k == $sTitle || strpos($_k, '_BY_') !== false || strpos($_k, 'DATE_') === 0 || strpos($_k, 'UF_') === 0) { continue; } if ($ENTITY_TYPE === 'CONTACT' && ($_k === 'NAME' || $_k === 'SECOND_NAME' || $_k === 'LAST_NAME')) { //Already added as title continue; } if (is_array($_v)) { continue; } if ($_k === 'COMMENTS') { $_v = CSearch::KillTags($_v); } $_v = trim($_v); if (isset($arField2status[$_k])) { if (!isset($arStatuses[$_k])) { $arStatuses[$_k] = CCrmStatus::GetStatusList($arField2status[$_k]); } $_v = $arStatuses[$_k][$_v]; } if (!empty($_v) && !is_numeric($_v) && $_v != 'N' && $_v != 'Y') { $sBody .= self::$arMess[$ENTITY_TYPE]['CRM_FIELD_' . $_k] . ": {$_v}\n"; } } if ($ENTITY_TYPE === 'CONTACT' || $ENTITY_TYPE === 'COMPANY' || $ENTITY_TYPE === 'LEAD') { $multiFields = is_array($arOptions) && isset($arOptions['FM']) ? $arOptions['FM'] : null; if (is_array($multiFields)) { foreach ($multiFields as $typeID => $multiFieldItems) { if ($typeID === 'PHONE') { $sBody .= GetMessage('CRM_PHONES') . ': ' . implode(', ', $multiFieldItems) . "\n"; } elseif ($typeID === 'EMAIL') { $sBody .= GetMessage('CRM_EMAILS') . ': ' . implode(', ', $multiFieldItems) . "\n"; } } } } $sDetailURL = CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_' . strtolower($ENTITY_TYPE) . '_show'), array(strtolower($ENTITY_TYPE) . '_id' => $arEntity['ID'])); $_arAttr = CCrmPerms::GetEntityAttr($ENTITY_TYPE, $arEntity['ID']); if (empty($arSite)) { $by = "sort"; $order = "asc"; $rsSite = CSite::GetList($by, $order); while ($_arSite = $rsSite->Fetch()) { $arSite[] = $_arSite['ID']; } } $sattr_d = ''; $sattr_s = ''; $sattr_u = ''; $sattr_o = ''; $arAttr = array(); if (!isset($_arAttr[$arEntity['ID']])) { $_arAttr[$arEntity['ID']] = array(); } $arAttr[] = $ENTITY_TYPE; // for perm X foreach ($_arAttr[$arEntity['ID']] as $_s) { if (preg_match('/^U/', $_s)) { $sattr_u = $_s; } elseif (preg_match('/^D/', $_s)) { $sattr_d = $_s; } elseif (preg_match('/^S/', $_s)) { $sattr_s = $_s; } elseif (preg_match('/^O/', $_s)) { $sattr_o = $_s; } $arAttr[] = "{$ENTITY_TYPE}_{$_s}"; } if (!empty($sattr_s)) { $arAttr[] = "{$ENTITY_TYPE}_{$sattr_s}"; // for perm X in status if (!empty($sattr_u)) { $arAttr[] = "{$ENTITY_TYPE}_{$sattr_u}_{$sattr_s}"; } if (!empty($sattr_d)) { $arAttr[] = "{$ENTITY_TYPE}_{$sattr_d}_{$sattr_s}"; } if (!empty($sattr_o)) { $arAttr[] = "{$ENTITY_TYPE}_{$sattr_o}_{$sattr_s}"; } } $arSitePath = array(); foreach ($arSite as $sSite) { $arSitePath[$sSite] = $sDetailURL; } $arResult = array('LAST_MODIFIED' => $arEntity['DATE_MODIFY'], 'DATE_FROM' => $arEntity['DATE_CREATE'], 'TITLE' => GetMessage('CRM_' . $ENTITY_TYPE) . ': ' . $arEntity[$sTitle], 'PARAM1' => $ENTITY_TYPE, 'PARAM2' => $arEntity['ID'], 'SITE_ID' => $arSitePath, 'PERMISSIONS' => $arAttr, 'BODY' => $sBody, 'TAGS' => 'crm,' . strtolower($ENTITY_TYPE) . ',' . GetMessage('CRM_' . $ENTITY_TYPE)); if (self::$bReIndex) { $arResult['ID'] = $ENTITY_TYPE . '.' . $arEntity['ID']; } return $arResult; }
if (isset($arResult['DEAL_ID']) && !empty($arResult['DEAL_ID'])) { // try to load product rows $arProductRows = CCrmDeal::LoadProductRows(array_keys($arResult['DEAL_ID'])); foreach ($arProductRows as $arProductRow) { $ownerID = $arProductRow['OWNER_ID']; if (!isset($arResult['DEAL'][$ownerID])) { continue; } $arEntity =& $arResult['DEAL'][$ownerID]; if (!isset($arEntity['PRODUCT_ROWS'])) { $arEntity['PRODUCT_ROWS'] = array(); } $arEntity['PRODUCT_ROWS'][] = $arProductRow; } // checkig access for operation $arDealAttr = CCrmPerms::GetEntityAttr('DEAL', $arResult['DEAL_ID']); foreach ($arResult['DEAL_ID'] as $iDealId) { $arResult['DEAL'][$iDealId]['EDIT'] = $CCrmPerms->CheckEnityAccess('DEAL', 'WRITE', $arDealAttr[$iDealId]); $arResult['DEAL'][$iDealId]['DELETE'] = $CCrmPerms->CheckEnityAccess('DEAL', 'DELETE', $arDealAttr[$iDealId]); $arResult['DEAL'][$iDealId]['BIZPROC_LIST'] = array(); foreach ($arBPData as $arBP) { if (!CBPDocument::CanUserOperateDocument(CBPCanUserOperateOperation::StartWorkflow, $userID, array('crm', 'CCrmDocumentDeal', 'DEAL_' . $arResult['DEAL'][$iDealId]['ID']), array('UserGroups' => $CCrmBizProc->arCurrentUserGroups, 'DocumentStates' => $arDocumentStates, 'WorkflowTemplateId' => $arBP['ID'], 'CreatedBy' => $arResult['DEAL'][$iDealId]['ASSIGNED_BY'], 'UserIsAdmin' => $isAdmin, 'CRMEntityAttr' => $arDealAttr[$iDealId]))) { continue; } $arBP['PATH_TO_BIZPROC_START'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_DEAL_SHOW'], array('deal_id' => $arResult['DEAL'][$iDealId]['ID'])), array('workflow_template_id' => $arBP['ID'], 'bizproc_start' => 1, 'sessid' => $arResult['SESSION_ID'], 'CRM_DEAL_SHOW_V12_active_tab' => 'tab_bizproc', 'back_url' => $arParams['PATH_TO_DEAL_LIST'])); $arResult['DEAL'][$iDealId]['BIZPROC_LIST'][] = $arBP; } } } if (!$isInExportMode) { $arResult['NEED_FOR_REBUILD_DEAL_ATTRS'] = $arResult['NEED_FOR_REBUILD_DEAL_STATISTICS'] = false;
public static function BuildSearchCard($arInvoice, $bReindex = false) { $arStatuses = array(); $arSite = array(); $sEntityType = 'INVOICE'; $sTitle = 'ORDER_TOPIC'; $sNumber = 'ACCOUNT_NUMBER'; $arSearchableFields = array('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(); $arSearchableProperties = $arSearchableProperties[$arInvoice['PERSON_TYPE_ID']]; $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_' . strtolower($sEntityType) . '_show'), array(strtolower($sEntityType) . '_id' => $arInvoice['ID'])); $_arAttr = CCrmPerms::GetEntityAttr($sEntityType, $arInvoice['ID']); if (empty($arSite)) { $by = "sort"; $order = "asc"; $rsSite = $site->GetList($by, $order); 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,' . strtolower($sEntityType) . ',' . GetMessage('CRM_' . $sEntityType)); if ($bReindex) { $arResult['ID'] = $sEntityType . '.' . $arInvoice['ID']; } return $arResult; }
} if (array_key_exists('QUOTE_LINK_HTML', $arInvoice)) { unset($arInvoice['QUOTE_LINK_HTML']); } } unset($arInvoice); $CCrmUserType->ListAddEnumFieldsValue($arResult, $arResult['INVOICE'], $arResult['INVOICE_UF'], $sExportType != '' ? ', ' : '<br />', $sExportType != '', array('FILE_URL_TEMPLATE' => '/bitrix/components/bitrix/crm.invoice.show/show_file.php?ownerId=#owner_id#&fieldName=#field_name#&fileId=#file_id#')); $arResult['TOOLBAR_LABEL_TEXT'] = GetMessage('CRM_INVOICE_LIST_TB_LABEL_TEXT', array('#num#' => $totalPaidNumber, '#sum#' => CCrmCurrency::MoneyToString(round($totalPaidSum, 2), $totalPaidCurrencyId))); $arResult['ROWS_COUNT'] = $obRes->SelectedRowsCount(); $arResult['DB_LIST'] = $obRes; $arResult['DB_FILTER'] = $arFilter; if (isset($arResult['INVOICE_ID']) && !empty($arResult['INVOICE_ID'])) { // try to load product rows $arProductRows = array(); // checkig access for operation $arInvoiceAttr = CCrmPerms::GetEntityAttr('INVOICE', $arResult['INVOICE_ID']); foreach ($arResult['INVOICE_ID'] as $iInvoiceId) { $arResult['INVOICE'][$iInvoiceId]['EDIT'] = $CCrmPerms->CheckEnityAccess('INVOICE', 'WRITE', $arInvoiceAttr[$iInvoiceId]); $arResult['INVOICE'][$iInvoiceId]['DELETE'] = $CCrmPerms->CheckEnityAccess('INVOICE', 'DELETE', $arInvoiceAttr[$iInvoiceId]); } } if ($sExportType == '') { $arResult['NEED_FOR_REBUILD_INVOICE_ATTRS'] = false; if (!$bInternal && CCrmPerms::IsAdmin() && COption::GetOptionString('crm', '~CRM_REBUILD_INVOICE_ATTR', 'N') === 'Y') { $arResult['PATH_TO_PRM_LIST'] = CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_perm_list')); $arResult['NEED_FOR_REBUILD_INVOICE_ATTRS'] = true; } $this->IncludeComponentTemplate(); include_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/components/bitrix/crm.invoice/include/nav.php'; return $arResult['ROWS_COUNT']; } else {
$res = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => 'COMPANY', 'ELEMENT_ID' => $arResult['COMPANY_ID'])); while ($ar = $res->Fetch()) { if (!$isInExportMode) { $arFmList[$ar['ELEMENT_ID']][$ar['COMPLEX_ID']][] = CCrmFieldMulti::GetTemplateByComplex($ar['COMPLEX_ID'], $ar['VALUE']); } else { $arFmList[$ar['ELEMENT_ID']][$ar['COMPLEX_ID']][] = $ar['VALUE']; } $arResult['COMPANY'][$ar['ELEMENT_ID']]['~' . $ar['COMPLEX_ID']][] = $ar['VALUE']; } foreach ($arFmList as $elementId => $arFM) { foreach ($arFM as $complexId => $arComplexName) { $arResult['COMPANY'][$elementId][$complexId] = implode(', ', $arComplexName); } } // checkig access for operation $arCompanyAttr = CCrmPerms::GetEntityAttr('COMPANY', $arResult['COMPANY_ID']); foreach ($arResult['COMPANY_ID'] as $iCompanyId) { $arResult['COMPANY'][$iCompanyId]['EDIT'] = $CCrmCompany->cPerms->CheckEnityAccess('COMPANY', 'WRITE', $arCompanyAttr[$iCompanyId]); $arResult['COMPANY'][$iCompanyId]['DELETE'] = $CCrmCompany->cPerms->CheckEnityAccess('COMPANY', 'DELETE', $arCompanyAttr[$iCompanyId]); $arResult['COMPANY'][$iCompanyId]['BIZPROC_LIST'] = array(); foreach ($arBPData as $arBP) { if (!CBPDocument::CanUserOperateDocument(CBPCanUserOperateOperation::StartWorkflow, $userID, array('crm', 'CCrmDocumentCompany', 'COMPANY_' . $arResult['COMPANY'][$iCompanyId]['ID']), array('UserGroups' => $CCrmBizProc->arCurrentUserGroups, 'DocumentStates' => $arDocumentStates, 'WorkflowTemplateId' => $arBP['ID'], 'CreatedBy' => $arResult['COMPANY'][$iCompanyId]['~ASSIGNED_BY'], 'UserIsAdmin' => $isAdmin, 'CRMEntityAttr' => $arCompanyAttr[$iCompanyId]))) { continue; } $arBP['PATH_TO_BIZPROC_START'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_COMPANY_SHOW'], array('company_id' => $arResult['COMPANY'][$iCompanyId]['ID'])), array('workflow_template_id' => $arBP['ID'], 'bizproc_start' => 1, 'sessid' => $arResult['SESSION_ID'], 'CRM_COMPANY_SHOW_V12_active_tab' => 'tab_bizproc', 'back_url' => $arParams['PATH_TO_COMPANY_LIST'])); $arResult['COMPANY'][$iCompanyId]['BIZPROC_LIST'][] = $arBP; } } } if (!$isInExportMode) { $arResult['NEED_FOR_REBUILD_DUP_INDEX'] = false;