public function getSourceFields() { if ($this->srcFields !== null) { return $this->srcFields; } $dbResult = \CCrmQuote::GetList(array(), array('=ID' => $this->srcEntityID, 'CHECK_PERMISSIONS' => 'N'), false, false, array('*', 'UF_*')); $result = $dbResult->Fetch(); return $this->srcFields = is_array($result) ? $result : array(); }
public static function TryGetInfo($typeID, $ID, &$info, $bCheckPermissions = false) { $typeID = intval($typeID); $ID = intval($ID); if ($ID <= 0) { return array(); } $result = null; switch ($typeID) { case self::Lead: $dbRes = CCrmLead::GetListEx(array(), array('=ID' => $ID, 'CHECK_PERMISSIONS' => $bCheckPermissions ? 'Y' : 'N'), false, false, array('TITLE')); $arRes = $dbRes ? $dbRes->Fetch() : null; if (is_array($arRes)) { $info = array('CAPTION' => isset($arRes['TITLE']) ? $arRes['TITLE'] : '', 'IMAGE_ID' => 0); return true; } break; case self::Contact: $dbRes = CCrmContact::GetListEx(array(), array('=ID' => $ID, 'CHECK_PERMISSIONS' => $bCheckPermissions ? 'Y' : 'N'), false, false, array('NAME', 'SECOND_NAME', 'LAST_NAME', 'PHOTO')); $arRes = $dbRes ? $dbRes->Fetch() : null; if (is_array($arRes)) { $info = array('CAPTION' => CUser::FormatName(\Bitrix\Crm\Format\PersonNameFormatter::getFormat(), array('LOGIN' => '', 'NAME' => isset($arRes['NAME']) ? $arRes['NAME'] : '', 'SECOND_NAME' => isset($arRes['SECOND_NAME']) ? $arRes['SECOND_NAME'] : '', 'LAST_NAME' => isset($arRes['LAST_NAME']) ? $arRes['LAST_NAME'] : ''), false, false), 'IMAGE_ID' => isset($arRes['PHOTO']) ? intval($arRes['PHOTO']) : 0); return true; } break; case self::Company: $dbRes = CCrmCompany::GetListEx(array(), array('=ID' => $ID, 'CHECK_PERMISSIONS' => $bCheckPermissions ? 'Y' : 'N'), false, false, array('TITLE', 'LOGO')); $arRes = $dbRes ? $dbRes->Fetch() : null; if (is_array($arRes)) { $info = array('CAPTION' => isset($arRes['TITLE']) ? $arRes['TITLE'] : '', 'IMAGE_ID' => isset($arRes['LOGO']) ? intval($arRes['LOGO']) : 0); return true; } break; case self::Deal: $dbRes = CCrmDeal::GetListEx(array(), array('=ID' => $ID, 'CHECK_PERMISSIONS' => $bCheckPermissions ? 'Y' : 'N'), false, false, array('TITLE')); $arRes = $dbRes ? $dbRes->Fetch() : null; if (is_array($arRes)) { $info = array('CAPTION' => isset($arRes['TITLE']) ? $arRes['TITLE'] : '', 'IMAGE_ID' => 0); return true; } break; case self::Invoice: $dbRes = CCrmInvoice::GetList(array(), array('ID' => $ID), false, false, array('ORDER_TOPIC')); $arRes = $dbRes ? $dbRes->Fetch() : null; if (is_array($arRes)) { $info = array('CAPTION' => isset($arRes['ORDER_TOPIC']) ? $arRes['ORDER_TOPIC'] : '', 'IMAGE_ID' => 0); return true; } break; case self::Quote: $dbRes = CCrmQuote::GetList(array(), array('=ID' => $ID, 'CHECK_PERMISSIONS' => $bCheckPermissions ? 'Y' : 'N'), false, false, array('TITLE')); $arRes = $dbRes ? $dbRes->Fetch() : null; if (is_array($arRes)) { $info = array('CAPTION' => isset($arRes['TITLE']) ? $arRes['TITLE'] : '', 'IMAGE_ID' => 0); return true; } break; } return false; }
} $companyID = isset($arRes['COMPANY_ID']) ? intval($arRes['COMPANY_ID']) : 0; if ($companyID > 0) { $rsCompanies = CCrmCompany::GetList(array(), array('ID' => $companyID), array('TITLE'), 1); $arCompany = $rsCompanies->Fetch(); if ($arCompany) { $arResult['PHONE_GROUPS'][] = array('TITLE' => $arCompany['TITLE'], 'PHONES' => __CrmEventGetPhones('COMPANY', $companyID)); } } } } break; case 'QUOTE': $arEntityAttr = $CCrmPerms->GetEntityAttr('QUOTE', $arResult['ENTITY_ID']); if ($CCrmPerms->CheckEnityAccess('QUOTE', 'WRITE', $arEntityAttr[$arResult['ENTITY_ID']])) { $dbRes = CCrmQuote::GetList(array('TITLE' => 'ASC'), array('ID' => $arResult['ENTITY_ID'])); if ($arRes = $dbRes->Fetch()) { $arResult['ENTITY_TITLE'] = $arRes['TITLE']; $arResult['STATUS_ID'] = $arRes['STATUS_ID']; } $arResult['STATUS_LIST'] = array(); $arEventType = CCrmStatus::GetStatusList('QUOTE_STATUS'); foreach ($arEventType as $key => $value) { if ($CCrmPerms->GetPermType('QUOTE', 'WRITE', array('QUOTE_STATUS' . $key)) > BX_CRM_PERM_NONE) { $arResult['STATUS_LIST']['REFERENCE'][] = $value; $arResult['STATUS_LIST']['REFERENCE_ID'][] = $key; } } if ($arParams['EVENT_TYPE'] === 'PHONE') { $contactID = isset($arRes['CONTACT_ID']) ? intval($arRes['CONTACT_ID']) : 0; if ($contactID > 0) {
if (COption::GetOptionString('crm', '~CRM_REBUILD_QUOTE_ATTR', 'N') !== 'Y') { __CrmConfigPermsEndResonse(array('STATUS' => 'NOT_REQUIRED', 'SUMMARY' => GetMessage('CRM_CONFIG_PERMS_REBUILD_ATTR_NOT_REQUIRED_SUMMARY'))); } $progressData = COption::GetOptionString('crm', '~CRM_REBUILD_QUOTE_ATTR_PROGRESS', ''); $progressData = $progressData !== '' ? unserialize($progressData) : array(); $lastItemID = isset($progressData['LAST_ITEM_ID']) ? intval($progressData['LAST_ITEM_ID']) : 0; $processedItemQty = isset($progressData['PROCESSED_ITEMS']) ? intval($progressData['PROCESSED_ITEMS']) : 0; $totalItemQty = isset($progressData['TOTAL_ITEMS']) ? intval($progressData['TOTAL_ITEMS']) : 0; if ($totalItemQty <= 0) { $totalItemQty = CCrmQuote::GetList(array(), array('CHECK_PERMISSIONS' => 'N'), array(), false); } $filter = array('CHECK_PERMISSIONS' => 'N'); if ($lastItemID > 0) { $filter['>ID'] = $lastItemID; } $dbResult = CCrmQuote::GetList(array('ID' => 'ASC'), $filter, false, array('nTopCount' => 10), array('ID')); $itemIDs = array(); $itemQty = 0; if (is_object($dbResult)) { while ($fields = $dbResult->Fetch()) { $itemIDs[] = intval($fields['ID']); $itemQty++; } } if ($itemQty > 0) { CCrmQuote::RebuildEntityAccessAttrs($itemIDs); $progressData['TOTAL_ITEMS'] = $totalItemQty; $processedItemQty += $itemQty; $progressData['PROCESSED_ITEMS'] = $processedItemQty; $progressData['LAST_ITEM_ID'] = $itemIDs[$itemQty - 1]; COption::SetOptionString('crm', '~CRM_REBUILD_QUOTE_ATTR_PROGRESS', serialize($progressData));
$lheEditorName = isset($_POST['EDITOR_NAME']) ? $_POST['EDITOR_NAME'] : ''; CModule::IncludeModule('fileman'); $GLOBALS['APPLICATION']->RestartBuffer(); Header('Content-Type: text/html; charset=' . LANG_CHARSET); $emailEditor = new CLightHTMLEditor(); $emailEditor->Show(array('id' => $lheEditorID, 'height' => '250', 'BBCode' => false, 'bUseFileDialogs' => false, 'bFloatingToolbar' => false, 'bArisingToolbar' => false, 'bResizable' => false, 'autoResizeOffset' => 20, 'jsObjName' => $lheEditorName, 'bInitByJS' => false, 'bSaveOnBlur' => false, 'toolbarConfig' => array('Bold', 'Italic', 'Underline', 'Strike', 'BackColor', 'ForeColor', 'CreateLink', 'DeleteLink', 'InsertOrderedList', 'InsertUnorderedList', 'Outdent', 'Indent'))); __CrmQuoteShowEndHtmlResonse(); } if ($mode === 'GET_ENTITY_SIP_INFO') { $entityType = isset($_POST['ENITY_TYPE']) ? $_POST['ENITY_TYPE'] : ''; $m = null; if ($entityType === '' || preg_match('/^CRM_([A-Z]+)$/i', $entityType, $m) !== 1) { __CrmQuoteShowEndJsonResonse(array('ERROR' => 'ENITY TYPE IS NOT DEFINED!')); } $entityTypeName = isset($m[1]) ? strtoupper($m[1]) : ''; if ($entityTypeName !== CCrmOwnerType::QuoteName) { __CrmQuoteShowEndJsonResonse(array('ERROR' => 'ENITY TYPE IS NOT DEFINED IS NOT SUPPORTED IN CURRENT CONTEXT!')); } $entityID = isset($_POST['ENITY_ID']) ? intval($_POST['ENITY_ID']) : 0; if ($entityID <= 0) { __CrmQuoteShowEndJsonResonse(array('ERROR' => 'ENITY ID IS INVALID OR NOT DEFINED!')); } $dbRes = CCrmQuote::GetList(array(), array('=ID' => $entityID, 'CHECK_PERMISSIONS' => 'Y'), false, false, array('TITLE')); $arRes = $dbRes ? $dbRes->Fetch() : null; if (!$arRes) { __CrmQuoteShowEndJsonResonse(array('ERROR' => 'ENITY IS NOT FOUND!')); } else { __CrmQuoteShowEndJsonResonse(array('DATA' => array('TITLE' => isset($arRes['TITLE']) ? $arRes['TITLE'] : '', 'LEGEND' => '', 'IMAGE_URL' => '', 'SHOW_URL' => CCrmOwnerType::GetShowUrl(CCrmOwnerType::Quote, $entityID, false)))); } } die;
$arSort['contact_last_name'] = $arSort['quote_client']; $arSort['contact_name'] = $arSort['quote_client']; $arSort['company_title'] = $arSort['quote_client']; unset($arSort['quote_client']); } if (isset($arSort['quote_summary'])) { $arSort['quote_number'] = $arSort['quote_summary']; $arSort['title'] = $arSort['quote_summary']; unset($arSort['quote_summary']); } if (isset($arParams['IS_EXTERNAL_CONTEXT'])) { $arOptions['IS_EXTERNAL_CONTEXT'] = $arParams['IS_EXTERNAL_CONTEXT']; } //FIELD_OPTIONS $arSelect = array_unique($arSelect, SORT_STRING); $obRes = CCrmQuote::GetList($arSort, $arFilter, false, !$isInExportMode ? $arNavParams : false, $arSelect, $arOptions); $arResult['QUOTE'] = array(); $arResult['QUOTE_ID'] = array(); $arResult['QUOTE_UF'] = array(); $now = time() + CTimeZone::GetOffset(); while ($arQuote = $obRes->GetNext()) { $arQuote['CLOSEDATE'] = !empty($arQuote['CLOSEDATE']) ? CCrmComponentHelper::TrimDateTimeString(ConvertTimeStamp(MakeTimeStamp($arQuote['CLOSEDATE']), 'SHORT', SITE_ID)) : ''; $arQuote['BEGINDATE'] = !empty($arQuote['BEGINDATE']) ? CCrmComponentHelper::TrimDateTimeString(ConvertTimeStamp(MakeTimeStamp($arQuote['BEGINDATE']), 'SHORT', SITE_ID)) : ''; /*$arQuote['EVENT_DATE'] = !empty($arQuote['EVENT_DATE']) ? CCrmComponentHelper::TrimDateTimeString(ConvertTimeStamp(MakeTimeStamp($arQuote['EVENT_DATE']), 'SHORT', SITE_ID)) : '';*/ $arQuote['~CLOSEDATE'] = $arQuote['CLOSEDATE']; $arQuote['~BEGINDATE'] = $arQuote['BEGINDATE']; /*$arQuote['~EVENT_DATE'] = $arQuote['EVENT_DATE'];*/ $currencyID = isset($arQuote['~CURRENCY_ID']) ? $arQuote['~CURRENCY_ID'] : CCrmCurrency::GetBaseCurrencyID(); $arQuote['~CURRENCY_ID'] = $currencyID; $arQuote['CURRENCY_ID'] = htmlspecialcharsbx($currencyID); $arQuote['FORMATTED_OPPORTUNITY'] = CCrmCurrency::MoneyToString($arQuote['~OPPORTUNITY'], $arQuote['~CURRENCY_ID']);
public static function UpdateSearch($arFilter, $ENTITY_TYPE, $bOverWrite = false) { if (!CModule::IncludeModule('search')) { return false; } $limit = 1000; switch ($ENTITY_TYPE) { case 'CONTACT': $obRes = CCrmContact::GetList(array('ID' => 'ASC'), $arFilter, array(), $limit); $sTitleID = 'FULL_NAME'; break; case 'DEAL': $obRes = CCrmDeal::GetList(array('ID' => 'ASC'), $arFilter, array(), $limit); $sTitleID = 'TITLE'; break; case 'INVOICE': $obRes = CCrmInvoice::GetList(array('ID' => 'DESC'), $arFilter, false, array('nTopCount' => $limit), array('*')); $sTitleID = 'ORDER_TOPIC'; break; case 'QUOTE': $obRes = CCrmQuote::GetList(array('ID' => 'ASC'), $arFilter, false, array('nTopCount' => intval($limit)), array()); $sTitleID = 'TITLE'; break; case 'COMPANY': $obRes = CCrmCompany::GetList(array('ID' => 'ASC'), $arFilter, array(), $limit); $sTitleID = 'TITLE'; break; default: case 'LEAD': $obRes = CCrmLead::GetList(array('ID' => 'ASC'), $arFilter, array(), $limit); $sTitleID = 'TITLE'; $ENTITY_TYPE = 'LEAD'; break; } if (!isset(self::$arMess[$ENTITY_TYPE])) { self::$arMess[$ENTITY_TYPE] = __IncludeLang($_SERVER['DOCUMENT_ROOT'] . BX_ROOT . '/components/bitrix/crm.' . strtolower($ENTITY_TYPE) . '.show/lang/' . LANGUAGE_ID . '/component.php', true); } $arAllResult = array(); $qty = 0; $lastItemID = ''; if (is_object($obRes)) { while (($arRow = $obRes->Fetch()) !== false) { $elementID = $arRow['ID']; $lastItemID = $ENTITY_TYPE . '.' . $elementID; if ($ENTITY_TYPE === 'INVOICE') { $arResult = CCrmInvoice::BuildSearchCard($arRow, self::$bReIndex); } elseif ($ENTITY_TYPE === 'QUOTE') { $arResult = CCrmQuote::BuildSearchCard($arRow, self::$bReIndex); } else { $multiFields = array(); if ($ENTITY_TYPE === 'CONTACT' || $ENTITY_TYPE === 'COMPANY' || $ENTITY_TYPE === 'LEAD') { $obMultiFieldRes = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => $ENTITY_TYPE, 'ELEMENT_ID' => $elementID)); while ($multiField = $obMultiFieldRes->Fetch()) { $fieldValue = $multiField['VALUE']; $fieldTypeID = $multiField['TYPE_ID']; if ($fieldValue === '' || $fieldTypeID !== 'PHONE' && $fieldTypeID !== 'EMAIL') { continue; } if (!isset($multiFields[$fieldTypeID])) { $multiFields[$fieldTypeID] = array(); } $multiFields[$fieldTypeID][] = $fieldValue; } } $arResult = self::_buildEntityCard($arRow, $sTitleID, $ENTITY_TYPE, array('FM' => $multiFields)); } if (self::$bReIndex) { if (self::$oCallback) { $res = call_user_func(array(self::$oCallback, self::$callback_method), $arResult); if (!$res) { return $lastItemID; } } } else { CSearch::Index('crm', $ENTITY_TYPE . '.' . $arRow['ID'], $arResult, $bOverWrite); } $arAllResult[] = $arResult; $qty++; } } if (!self::$bReIndex && !empty($arFilter['ID']) && $qty === 0) { CSearch::DeleteIndex('crm', (int) $arFilter['ID']); } if (self::$bReIndex && $qty === $limit && $lastItemID !== '') { return $lastItemID; } return $arAllResult; }
unset($arResult['SELECTED'][$arRes['SID']]); $sSelected = 'Y'; } else { $sSelected = 'N'; } $clientTitle = !empty($arRes['COMPANY_TITLE']) ? $arRes['COMPANY_TITLE'] : ''; $clientTitle .= ($clientTitle !== '' && !empty($arRes['CONTACT_FULL_NAME']) ? ', ' : '') . $arRes['CONTACT_FULL_NAME']; $ar[] = array('title' => str_replace(array(';', ','), ' ', $arRes['TITLE']), 'desc' => $clientTitle, 'id' => $arRes['SID'], 'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_deal_show'), array('deal_id' => $arRes['ID'])), 'type' => 'deal', 'selected' => $sSelected); } $arResult['ELEMENT'] = array_merge($ar, $arResult['ELEMENT']); } if ($arSettings['QUOTE'] == 'Y' && isset($arSelected['QUOTE']) && !empty($arSelected['QUOTE'])) { $arQuoteStageList = CCrmStatus::GetStatusListEx('QUOTE_STAGE'); $arSelect = array('ID', 'TITLE', 'STAGE_ID', 'COMPANY_TITLE', 'CONTACT_FULL_NAME'); $ar = array(); $obRes = CCrmQuote::GetList(array('ID' => 'DESC'), array('ID' => $arSelected['QUOTE']), false, false, $arSelect); while ($arRes = $obRes->Fetch()) { $arRes['SID'] = $arResult['PREFIX'] == 'Y' ? 'D_' . $arRes['ID'] : $arRes['ID']; if (isset($arResult['SELECTED'][$arRes['SID']])) { unset($arResult['SELECTED'][$arRes['SID']]); $sSelected = 'Y'; } else { $sSelected = 'N'; } $clientTitle = !empty($arRes['COMPANY_TITLE']) ? $arRes['COMPANY_TITLE'] : ''; $clientTitle .= ($clientTitle !== '' && !empty($arRes['CONTACT_FULL_NAME']) ? ', ' : '') . $arRes['CONTACT_FULL_NAME']; $ar[] = array('title' => str_replace(array(';', ','), ' ', $arRes['TITLE']), 'desc' => $clientTitle, 'id' => $arRes['SID'], 'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_quote_show'), array('quote_id' => $arRes['ID'])), 'type' => 'quote', 'selected' => $sSelected); } $arResult['ELEMENT'] = array_merge($ar, $arResult['ELEMENT']); } if (isset($arSettings['PRODUCT']) && $arSettings['PRODUCT'] == 'Y' && isset($arSelected['PRODUCT']) && !empty($arSelected['PRODUCT'])) {
if (isset($arEntityList['CONTACT']) && !empty($arEntityList['CONTACT'])) { $dbRes = CCrmContact::GetList(array('LAST_NAME' => 'ASC', 'NAME' => 'ASC'), array('ID' => $arEntityList['CONTACT'])); while ($arRes = $dbRes->Fetch()) { $arEntityList['CONTACT'][$arRes['ID']] = array('ENTITY_TITLE' => $arRes['LAST_NAME'] . ' ' . $arRes['NAME'], 'ENTITY_LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_CONTACT_SHOW'], array('contact_id' => $arRes['ID']))); } } if (isset($arEntityList['COMPANY']) && !empty($arEntityList['COMPANY'])) { $dbRes = CCrmCompany::GetList(array('TITLE' => 'ASC'), array('ID' => $arEntityList['COMPANY'])); while ($arRes = $dbRes->Fetch()) { $arEntityList['COMPANY'][$arRes['ID']] = array('ENTITY_TITLE' => $arRes['TITLE'], 'ENTITY_LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_COMPANY_SHOW'], array('company_id' => $arRes['ID']))); } } if (isset($arEntityList['DEAL']) && !empty($arEntityList['DEAL'])) { $dbRes = CCrmDeal::GetList(array('TITLE' => 'ASC'), array('ID' => $arEntityList['DEAL'])); while ($arRes = $dbRes->Fetch()) { $arEntityList['DEAL'][$arRes['ID']] = array('ENTITY_TITLE' => $arRes['TITLE'], 'ENTITY_LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_DEAL_SHOW'], array('deal_id' => $arRes['ID']))); } } if (isset($arEntityList['QUOTE']) && !empty($arEntityList['QUOTE'])) { $dbRes = CCrmQuote::GetList(array('TITLE' => 'ASC'), array('ID' => $arEntityList['QUOTE'])); while ($arRes = $dbRes->Fetch()) { $arEntityList['QUOTE'][$arRes['ID']] = array('ENTITY_TITLE' => empty($arRes['TITLE']) ? $arRes['QUOTE_NUMBER'] : $arRes['QUOTE_NUMBER'] . ' - ' . $arRes['TITLE'], 'ENTITY_LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_QUOTE_SHOW'], array('quote_id' => $arRes['ID']))); } } foreach ($arResult['EVENT'] as $key => $ar) { $arResult['EVENT'][$key]['ENTITY_TITLE'] = htmlspecialcharsbx($arEntityList[$ar['ENTITY_TYPE']][$ar['ENTITY_ID']]['ENTITY_TITLE']); $arResult['EVENT'][$key]['ENTITY_LINK'] = $arEntityList[$ar['ENTITY_TYPE']][$ar['ENTITY_ID']]['ENTITY_LINK']; } } $this->IncludeComponentTemplate(); return $obRes->SelectedRowsCount();
protected function prepareCrmSelectorItem($ufInfo) { /** @global CUser $USER */ global $USER; $result = false; $selectorItem = array(); if (!CModule::IncludeModule('crm')) { return $result; } $CCrmPerms = new CCrmPerms($USER->GetID()); $nPermittedEntityTypes = 0; if ($ufInfo['SETTINGS']['LEAD'] == 'Y' && !$CCrmPerms->HavePerm('LEAD', BX_CRM_PERM_NONE, 'READ')) { $nPermittedEntityTypes++; } if ($ufInfo['SETTINGS']['CONTACT'] == 'Y' && !$CCrmPerms->HavePerm('CONTACT', BX_CRM_PERM_NONE, 'READ')) { $nPermittedEntityTypes++; } if ($ufInfo['SETTINGS']['COMPANY'] == 'Y' && !$CCrmPerms->HavePerm('COMPANY', BX_CRM_PERM_NONE, 'READ')) { $nPermittedEntityTypes++; } if ($ufInfo['SETTINGS']['DEAL'] == 'Y' && !$CCrmPerms->HavePerm('DEAL', BX_CRM_PERM_NONE, 'READ')) { $nPermittedEntityTypes++; } if ($ufInfo['SETTINGS']['QUOTE'] == 'Y' && !$CCrmPerms->HavePerm('QUOTE', BX_CRM_PERM_NONE, 'READ')) { $nPermittedEntityTypes++; } if ($ufInfo['SETTINGS']['PRODUCT'] == 'Y' && $CCrmPerms->HavePerm('CONFIG', BX_CRM_PERM_CONFIG, 'READ')) { $nPermittedEntityTypes++; } $usePrefix = true; /*$nPermittedEntityTypes > 1;*/ // last 50 entity $entityTypes = array(); $elements = array(); $arSettings = $ufInfo['SETTINGS']; if (isset($arSettings['LEAD']) && $arSettings['LEAD'] == 'Y') { $entityTypes[] = 'lead'; $arSelect = array('ID', 'TITLE', 'FULL_NAME', 'STATUS_ID'); $obRes = CCrmLead::GetList(array('ID' => 'DESC'), array(), $arSelect, 50); $arFiles = array(); while ($arRes = $obRes->Fetch()) { $arRes['SID'] = $usePrefix ? 'L_' . $arRes['ID'] : $arRes['ID']; $elements[] = array('title' => str_replace(array(';', ','), ' ', $arRes['TITLE']), 'desc' => $arRes['FULL_NAME'], 'id' => $arRes['SID'], 'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_lead_show'), array('lead_id' => $arRes['ID'])), 'type' => 'lead', 'selected' => 'N'); } } if (isset($arSettings['CONTACT']) && $arSettings['CONTACT'] == 'Y') { $entityTypes[] = 'contact'; $arSelect = array('ID', 'FULL_NAME', 'COMPANY_TITLE', 'PHOTO'); $obRes = CCrmContact::GetList(array('ID' => 'DESC'), array(), $arSelect, 50); while ($arRes = $obRes->Fetch()) { $strImg = ''; if (!empty($arRes['PHOTO']) && !isset($arFiles[$arRes['PHOTO']])) { if ($arFile = CFile::GetFileArray($arRes['PHOTO'])) { $arImg = CFile::ResizeImageGet($arFile, array('width' => 25, 'height' => 25), BX_RESIZE_IMAGE_EXACT); if (is_array($arImg) && isset($arImg['src'])) { $strImg = CHTTP::URN2URI($arImg['src'], '', true); } } } $arRes['SID'] = $usePrefix ? 'C_' . $arRes['ID'] : $arRes['ID']; $elements[] = array('title' => str_replace(array(';', ','), ' ', $arRes['FULL_NAME']), 'desc' => empty($arRes['COMPANY_TITLE']) ? '' : $arRes['COMPANY_TITLE'], 'id' => $arRes['SID'], 'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_contact_show'), array('contact_id' => $arRes['ID'])), 'image' => $strImg, 'type' => 'contact', 'selected' => 'N'); } } if (isset($arSettings['COMPANY']) && $arSettings['COMPANY'] == 'Y') { $entityTypes[] = 'company'; $arCompanyTypeList = CCrmStatus::GetStatusListEx('COMPANY_TYPE'); $arCompanyIndustryList = CCrmStatus::GetStatusListEx('INDUSTRY'); $arSelect = array('ID', 'TITLE', 'COMPANY_TYPE', 'INDUSTRY', 'LOGO'); $obRes = CCrmCompany::GetList(array('ID' => 'DESC'), array(), $arSelect, 50); $arFiles = array(); while ($arRes = $obRes->Fetch()) { $strImg = ''; if (!empty($arRes['LOGO']) && !isset($arFiles[$arRes['LOGO']])) { if ($arFile = CFile::GetFileArray($arRes['LOGO'])) { $arImg = CFile::ResizeImageGet($arFile, array('width' => 25, 'height' => 25), BX_RESIZE_IMAGE_EXACT); if (is_array($arImg) && isset($arImg['src'])) { $strImg = CHTTP::URN2URI($arImg['src'], '', true); } } $arFiles[$arRes['LOGO']] = $strImg; } $arRes['SID'] = $usePrefix ? 'CO_' . $arRes['ID'] : $arRes['ID']; $arDesc = array(); if (isset($arCompanyTypeList[$arRes['COMPANY_TYPE']])) { $arDesc[] = $arCompanyTypeList[$arRes['COMPANY_TYPE']]; } if (isset($arCompanyIndustryList[$arRes['INDUSTRY']])) { $arDesc[] = $arCompanyIndustryList[$arRes['INDUSTRY']]; } $elements[] = array('title' => str_replace(array(';', ','), ' ', $arRes['TITLE']), 'desc' => implode(', ', $arDesc), 'id' => $arRes['SID'], 'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_company_show'), array('company_id' => $arRes['ID'])), 'image' => $strImg, 'type' => 'company', 'selected' => 'N'); } } if (isset($arSettings['DEAL']) && $arSettings['DEAL'] == 'Y') { $entityTypes[] = 'deal'; $arDealStageList = CCrmStatus::GetStatusListEx('DEAL_STAGE'); $arSelect = array('ID', 'TITLE', 'STAGE_ID', 'COMPANY_TITLE', 'CONTACT_FULL_NAME'); $obRes = CCrmDeal::GetList(array('ID' => 'DESC'), array(), $arSelect, 50); while ($arRes = $obRes->Fetch()) { $arRes['SID'] = $usePrefix ? 'D_' . $arRes['ID'] : $arRes['ID']; $clientTitle = !empty($arRes['COMPANY_TITLE']) ? $arRes['COMPANY_TITLE'] : ''; $clientTitle .= ($clientTitle !== '' && !empty($arRes['CONTACT_FULL_NAME']) ? ', ' : '') . $arRes['CONTACT_FULL_NAME']; $elements[] = array('title' => str_replace(array(';', ','), ' ', $arRes['TITLE']), 'desc' => $clientTitle, 'id' => $arRes['SID'], 'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_deal_show'), array('deal_id' => $arRes['ID'])), 'type' => 'deal', 'selected' => 'N'); } } if (isset($arSettings['QUOTE']) && $arSettings['QUOTE'] == 'Y') { $entityTypes[] = 'quote'; $arSelect = array('ID', 'QUOTE_NUMBER', 'TITLE', 'COMPANY_TITLE', 'CONTACT_FULL_NAME'); $obRes = CCrmQuote::GetList(array('ID' => 'DESC'), array(), false, array('nTopCount' => 50), array('ID', 'QUOTE_NUMBER', 'TITLE', 'COMPANY_TITLE', 'CONTACT_FULL_NAME')); while ($arRes = $obRes->Fetch()) { $arRes['SID'] = $usePrefix ? 'Q_' . $arRes['ID'] : $arRes['ID']; $clientTitle = !empty($arRes['COMPANY_TITLE']) ? $arRes['COMPANY_TITLE'] : ''; $clientTitle .= ($clientTitle !== '' && !empty($arRes['CONTACT_FULL_NAME']) ? ', ' : '') . $arRes['CONTACT_FULL_NAME']; $quoteTitle = empty($arRes['TITLE']) ? $arRes['QUOTE_NUMBER'] : $arRes['QUOTE_NUMBER'] . ' - ' . $arRes['TITLE']; $elements[] = array('title' => empty($quoteTitle) ? '' : str_replace(array(';', ','), ' ', $quoteTitle), 'desc' => $clientTitle, 'id' => $arRes['SID'], 'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_quote_show'), array('quote_id' => $arRes['ID'])), 'type' => 'quote', 'selected' => 'N'); } } if (isset($arSettings['PRODUCT']) && $arSettings['PRODUCT'] == 'Y') { $entityTypes[] = 'product'; $arSelect = array('ID', 'NAME', 'PRICE', 'CURRENCY_ID'); $arPricesSelect = $arVatsSelect = array(); $arSelect = CCrmProduct::DistributeProductSelect($arSelect, $arPricesSelect, $arVatsSelect); $obRes = CCrmProduct::GetList(array('ID' => 'DESC'), array('ACTIVE' => 'Y'), $arSelect, 50); $arProducts = $arProductId = array(); while ($arRes = $obRes->Fetch()) { foreach ($arPricesSelect as $fieldName) { $arRes[$fieldName] = null; } foreach ($arVatsSelect as $fieldName) { $arRes[$fieldName] = null; } $arProductId[] = $arRes['ID']; $arProducts[$arRes['ID']] = $arRes; } CCrmProduct::ObtainPricesVats($arProducts, $arProductId, $arPricesSelect, $arVatsSelect); unset($arProductId, $arPricesSelect, $arVatsSelect); foreach ($arProducts as $arRes) { $arRes['SID'] = $usePrefix ? 'PROD_' . $arRes['ID'] : $arRes['ID']; $elements[] = array('title' => $arRes['NAME'], 'desc' => CCrmProduct::FormatPrice($arRes), 'id' => $arRes['SID'], 'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_product_show'), array('product_id' => $arRes['ID'])), 'type' => 'product', 'selected' => 'N'); } unset($arProducts); } $selectorItem['USER_TYPE_ID'] = $ufInfo['USER_TYPE_ID']; $selectorItem['ENTITY_ID'] = $ufInfo['ENTITY_ID']; $selectorItem['FIELD_NAME'] = $ufInfo['FIELD_NAME']; $selectorItem['PREFIX'] = $usePrefix ? 'Y' : 'N'; $selectorItem['MULTIPLE'] = 'Y'; //$ufInfo['MULTIPLE']; $selectorItem['ENTITY_TYPE'] = $entityTypes; $selectorItem['ELEMENT'] = $elements; $result = $selectorItem; return $result; }
$arParams['PATH_TO_DEAL_EDIT'] = CrmCheckPath('PATH_TO_DEAL_EDIT', $arParams['PATH_TO_DEAL_EDIT'], $APPLICATION->GetCurPage() . '?deal_id=#deal_id#&edit'); $arParams['PATH_TO_CONTACT_SHOW'] = CrmCheckPath('PATH_TO_CONTACT_SHOW', $arParams['PATH_TO_CONTACT_SHOW'], $APPLICATION->GetCurPage() . '?contact_id=#contact_id#&show'); $arParams['PATH_TO_CONTACT_EDIT'] = CrmCheckPath('PATH_TO_CONTACT_EDIT', $arParams['PATH_TO_CONTACT_EDIT'], $APPLICATION->GetCurPage() . '?contact_id=#contact_id#&edit'); $arParams['PATH_TO_COMPANY_SHOW'] = CrmCheckPath('PATH_TO_COMPANY_SHOW', $arParams['PATH_TO_COMPANY_SHOW'], $APPLICATION->GetCurPage() . '?company_id=#company_id#&show'); $arParams['PATH_TO_COMPANY_EDIT'] = CrmCheckPath('PATH_TO_COMPANY_EDIT', $arParams['PATH_TO_COMPANY_EDIT'], $APPLICATION->GetCurPage() . '?company_id=#company_id#&edit'); $arParams['PATH_TO_LEAD_SHOW'] = CrmCheckPath('PATH_TO_LEAD_SHOW', $arParams['PATH_TO_LEAD_SHOW'], $APPLICATION->GetCurPage() . '?lead_id=#lead_id#&show'); $arParams['PATH_TO_LEAD_EDIT'] = CrmCheckPath('PATH_TO_LEAD_EDIT', $arParams['PATH_TO_LEAD_EDIT'], $APPLICATION->GetCurPage() . '?lead_id=#lead_id#&edit'); $arParams['PATH_TO_LEAD_CONVERT'] = CrmCheckPath('PATH_TO_LEAD_CONVERT', $arParams['PATH_TO_LEAD_CONVERT'], $APPLICATION->GetCurPage() . '?lead_id=#lead_id#&convert'); $arParams['PATH_TO_USER_PROFILE'] = CrmCheckPath('PATH_TO_USER_PROFILE', $arParams['PATH_TO_USER_PROFILE'], '/company/personal/user/#user_id#/'); $arParams['PATH_TO_PRODUCT_EDIT'] = CrmCheckPath('PATH_TO_PRODUCT_EDIT', $arParams['PATH_TO_PRODUCT_EDIT'], $APPLICATION->GetCurPage() . '?product_id=#product_id#&edit'); $arParams['PATH_TO_PRODUCT_SHOW'] = CrmCheckPath('PATH_TO_PRODUCT_SHOW', $arParams['PATH_TO_PRODUCT_SHOW'], $APPLICATION->GetCurPage() . '?product_id=#product_id#&show'); $arParams['NAME_TEMPLATE'] = empty($arParams['NAME_TEMPLATE']) ? CSite::GetNameFormat(false) : str_replace(array("#NOBR#", "#/NOBR#"), array("", ""), $arParams["NAME_TEMPLATE"]); $bTaxMode = CCrmTax::isTaxMode(); global $USER_FIELD_MANAGER; $CCrmUserType = new CCrmUserType($USER_FIELD_MANAGER, CCrmQuote::$sUFEntityID); $obFields = CCrmQuote::GetList(array(), array('ID' => $arParams['ELEMENT_ID'])); $arFields = $obFields->GetNext(); $arFields['CONTACT_FM'] = array(); if (isset($arFields['CONTACT_ID']) && intval($arFields['CONTACT_ID']) > 0) { $dbResMultiFields = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => 'CONTACT', 'ELEMENT_ID' => $arFields['CONTACT_ID'])); while ($arMultiFields = $dbResMultiFields->Fetch()) { $arFields['CONTACT_FM'][$arMultiFields['TYPE_ID']][$arMultiFields['ID']] = array('VALUE' => $arMultiFields['VALUE'], 'VALUE_TYPE' => $arMultiFields['VALUE_TYPE']); } } $arFields['COMPANY_FM'] = array(); if (isset($arFields['COMPANY_ID']) && intval($arFields['COMPANY_ID']) > 0) { $dbResMultiFields = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => 'COMPANY', 'ELEMENT_ID' => $arFields['COMPANY_ID'])); while ($arMultiFields = $dbResMultiFields->Fetch()) { $arFields['COMPANY_FM'][$arMultiFields['TYPE_ID']][$arMultiFields['ID']] = array('VALUE' => $arMultiFields['VALUE'], 'VALUE_TYPE' => $arMultiFields['VALUE_TYPE']); } }
while ($arDeal = $dbRes->Fetch()) { if (isset($arDealList[$arDeal['ID']]) && is_array($arDealList[$arDeal['ID']]) && count($arDealList[$arDeal['ID']]) > 0) { foreach ($arDealList[$arDeal['ID']] as $invoiceId) { $arResult['INVOICE'][$invoiceId]['DEAL_TITLE'] = $arDeal['TITLE']; $arResult['INVOICE'][$invoiceId]['DEAL_LINK_HTML'] = CCrmViewHelper::PrepareEntityBaloonHtml(array('ENTITY_TYPE_ID' => CCrmOwnerType::Deal, 'ENTITY_ID' => $arDeal['ID'], 'PREFIX' => uniqid("crm_deal_link_"), 'TITLE' => $arDeal['TITLE'], 'CLASS_NAME' => '')); } unset($invoiceId); } } unset($arDeal); } unset($dbRes); } if (count($arQuoteList) > 0) { $quoteTitle = ''; $dbRes = CCrmQuote::GetList(array(), array('ID' => array_keys($arQuoteList)), false, false, array('QUOTE_NUMBER', 'TITLE')); if ($dbRes) { $arQuote = array(); while ($arQuote = $dbRes->Fetch()) { if (isset($arQuoteList[$arQuote['ID']]) && is_array($arQuoteList[$arQuote['ID']]) && count($arQuoteList[$arQuote['ID']]) > 0) { foreach ($arQuoteList[$arQuote['ID']] as $invoiceId) { $quoteTitle = empty($arRes['TITLE']) ? $arRes['QUOTE_NUMBER'] : $arRes['QUOTE_NUMBER'] . ' - ' . $arRes['TITLE']; $quoteTitle = empty($quoteTitle) ? '' : str_replace(array(';', ','), ' ', $quoteTitle); $arResult['INVOICE'][$invoiceId]['QUOTE_TITLE'] = $quoteTitle; $arResult['INVOICE'][$invoiceId]['QUOTE_LINK_HTML'] = CCrmViewHelper::PrepareEntityBaloonHtml(array('ENTITY_TYPE_ID' => CCrmOwnerType::Quote, 'ENTITY_ID' => $arQuote['ID'], 'PREFIX' => uniqid("crm_quote_link_"), 'TITLE' => $quoteTitle, 'CLASS_NAME' => '')); } unset($invoiceId); } } unset($arQuote); }
ShowError(GetMessage('CRM_MODULE_NOT_INSTALLED')); return; } if (!CModule::IncludeModule('sale')) { ShowError(GetMessage('CRM_MODULE_NOT_INSTALLED_SALE')); return; } $CCrmQuote = new CCrmQuote(); if ($CCrmQuote->cPerms->HavePerm('QUOTE', BX_CRM_PERM_NONE, 'READ')) { ShowError(GetMessage('CRM_PERMISSION_DENIED')); return; } global $APPLICATION; $APPLICATION->RestartBuffer(); $quoteID = intval($arParams["QUOTE_ID"]); $dbResult = CCrmQuote::GetList(array(), array('ID' => $quoteID, 'CHECK_PERMISSIONS' => 'N'), false, false, array('*', 'UF_*')); $arQuote = is_object($dbResult) ? $dbResult->Fetch() : null; $paymentData = is_array($arQuote) ? CCrmQuote::PrepareSalePaymentData($arQuote) : null; $paySystemID = isset($_REQUEST['PAY_SYSTEM_ID']) ? intval($_REQUEST['PAY_SYSTEM_ID']) : 0; if (is_array($paymentData) && $paySystemID > 0) { $dbPaySysAction = CSalePaySystemAction::GetList(array(), array("PAY_SYSTEM_ID" => $paySystemID, "PERSON_TYPE_ID" => $arQuote["PERSON_TYPE_ID"]), false, false, array("ACTION_FILE", "PARAMS", "ENCODING")); if ($arPaySysAction = $dbPaySysAction->Fetch()) { if (strlen($arPaySysAction["ACTION_FILE"]) > 0) { CSalePaySystemAction::InitParamArrays($paymentData["ORDER"], 0, $arPaySysAction["PARAMS"], array("PROPERTIES" => $paymentData["PROPERTIES"], "BASKET_ITEMS" => $paymentData["CART_ITEMS"], "TAX_LIST" => $paymentData["TAX_LIST"])); $pathToAction = $_SERVER["DOCUMENT_ROOT"] . $arPaySysAction["ACTION_FILE"]; $pathToAction = str_replace("\\", "/", $pathToAction); while (substr($pathToAction, strlen($pathToAction) - 1, 1) == "/") { $pathToAction = substr($pathToAction, 0, strlen($pathToAction) - 1); } if (file_exists($pathToAction)) { if (is_dir($pathToAction)) {
public static function GetByID($ID, $bCheckPerms = true) { $arFilter = array('=ID' => intval($ID)); if (!$bCheckPerms) { $arFilter['CHECK_PERMISSIONS'] = 'N'; } $dbRes = CCrmQuote::GetList(array(), $arFilter); return $dbRes->Fetch(); }
} else { if (preg_match('/(.*)\\[(\\d+?)\\]/i' . BX_UTF_PCRE_MODIFIER, $search, $arMatches)) { $arFilter['ID'] = (int) $arMatches[2]; $arFilter['%TITLE'] = trim($arMatches[1]); $arFilter['LOGIC'] = 'OR'; } else { $arFilter['%QUOTE_NUMBER'] = $search; $arFilter['%TITLE'] = $search; $arFilter['LOGIC'] = 'OR'; } } $arQuoteStatusList = CCrmStatus::GetStatusListEx('QUOTE_STATUS'); $arSelect = array('ID', 'QUOTE_NUMBER', 'TITLE', 'STATUS_ID', 'COMPANY_TITLE', 'CONTACT_FULL_NAME'); $arOrder = array('TITLE' => 'ASC'); $arData = array(); $obRes = CCrmQuote::GetList($arOrder, $arFilter, false, $nPageTop === false ? false : array('nTopCount' => intval($nPageTop)), $arSelect); $arFiles = array(); while ($arRes = $obRes->Fetch()) { $clientTitle = !empty($arRes['COMPANY_TITLE']) ? $arRes['COMPANY_TITLE'] : ''; $clientTitle .= ($clientTitle !== '' && !empty($arRes['CONTACT_FULL_NAME']) ? ', ' : '') . $arRes['CONTACT_FULL_NAME']; $quoteTitle = empty($arRes['TITLE']) ? $arRes['QUOTE_NUMBER'] : $arRes['QUOTE_NUMBER'] . ' - ' . $arRes['TITLE']; $arData[] = array('id' => $multi ? CCrmQuote::OWNER_TYPE . '_' . $arRes['ID'] : $arRes['ID'], 'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_quote_show'), array('quote_id' => $arRes['ID'])), 'title' => empty($quoteTitle) ? '' : str_replace(array(';', ','), ' ', $quoteTitle), 'desc' => $clientTitle, 'type' => 'quote'); } Header('Content-Type: application/x-javascript; charset=' . LANG_CHARSET); echo CUtil::PhpToJsObject($arData); die; } elseif (isset($_REQUEST['ACTION']) && $_REQUEST['ACTION'] === 'SAVE_PROGRESS') { $ID = isset($_REQUEST['ID']) ? intval($_REQUEST['ID']) : 0; $typeName = isset($_REQUEST['TYPE']) ? $_REQUEST['TYPE'] : ''; $statusID = isset($_REQUEST['VALUE']) ? $_REQUEST['VALUE'] : ''; $targetTypeName = CCrmOwnerType::ResolveName(CCrmOwnerType::Quote);
public static function PreparePopupItems($entityTypeNames, $addPrefix = true, $nameFormat = '', $count = 50) { if (!is_array($entityTypeNames)) { $entityTypeNames = array(strval($entityTypeNames)); } $addPrefix = (bool) $addPrefix; $count = intval($count); if ($count <= 0) { $count = 50; } $arItems = array(); $i = 0; foreach ($entityTypeNames as $typeName) { $typeName = strtoupper(strval($typeName)); if ($typeName === 'CONTACT') { $contactTypes = CCrmStatus::GetStatusList('CONTACT_TYPE'); $contactIndex = array(); $obRes = CCrmContact::GetListEx(array('ID' => 'DESC'), array(), false, array('nTopCount' => $count), array('ID', 'HONORIFIC', 'NAME', 'SECOND_NAME', 'LAST_NAME', 'COMPANY_TITLE', 'PHOTO', 'TYPE_ID')); while ($arRes = $obRes->Fetch()) { $arImg = array(); if (!empty($arRes['PHOTO']) && !isset($arFiles[$arRes['PHOTO']])) { if (intval($arRes['PHOTO']) > 0) { $arImg = CFile::ResizeImageGet($arRes['PHOTO'], array('width' => 25, 'height' => 25), BX_RESIZE_IMAGE_EXACT); } } $arRes['SID'] = $addPrefix ? 'C_' . $arRes['ID'] : $arRes['ID']; // advanced info $advancedInfo = array(); if (isset($arRes['TYPE_ID']) && $arRes['TYPE_ID'] != '' && isset($contactTypes[$arRes['TYPE_ID']])) { $advancedInfo['contactType'] = array('id' => $arRes['TYPE_ID'], 'name' => $contactTypes[$arRes['TYPE_ID']]); } $arItems[$i] = array('title' => CCrmContact::PrepareFormattedName(array('HONORIFIC' => isset($arRes['HONORIFIC']) ? $arRes['HONORIFIC'] : '', 'NAME' => isset($arRes['NAME']) ? $arRes['NAME'] : '', 'SECOND_NAME' => isset($arRes['SECOND_NAME']) ? $arRes['SECOND_NAME'] : '', 'LAST_NAME' => isset($arRes['LAST_NAME']) ? $arRes['LAST_NAME'] : ''), $nameFormat), 'desc' => empty($arRes['COMPANY_TITLE']) ? "" : $arRes['COMPANY_TITLE'], 'id' => $arRes['SID'], 'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_contact_show'), array('contact_id' => $arRes['ID'])), 'image' => $arImg['src'], 'type' => 'contact', 'selected' => 'N'); if (!empty($advancedInfo)) { $arItems[$i]['advancedInfo'] = $advancedInfo; } unset($advancedInfo); $contactIndex[$arRes['ID']] =& $arItems[$i]; $i++; } // advanced info - phone number, e-mail $obRes = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => 'CONTACT', 'ELEMENT_ID' => array_keys($contactIndex))); while ($arRes = $obRes->Fetch()) { if (isset($contactIndex[$arRes['ELEMENT_ID']]) && ($arRes['TYPE_ID'] === 'PHONE' || $arRes['TYPE_ID'] === 'EMAIL')) { $item =& $contactIndex[$arRes['ELEMENT_ID']]; if (!is_array($item['advancedInfo'])) { $item['advancedInfo'] = array(); } if (!is_array($item['advancedInfo']['multiFields'])) { $item['advancedInfo']['multiFields'] = array(); } $item['advancedInfo']['multiFields'][] = array('ID' => $arRes['ID'], 'TYPE_ID' => $arRes['TYPE_ID'], 'VALUE_TYPE' => $arRes['VALUE_TYPE'], 'VALUE' => $arRes['VALUE']); unset($item); } } unset($contactIndex); } elseif ($typeName === 'COMPANY') { $companyIndex = array(); $arCompanyTypeList = CCrmStatus::GetStatusListEx('COMPANY_TYPE'); $arCompanyIndustryList = CCrmStatus::GetStatusListEx('INDUSTRY'); $obRes = CCrmCompany::GetListEx(array('ID' => 'DESC'), array(), false, array('nTopCount' => $count), array('ID', 'TITLE', 'COMPANY_TYPE', 'INDUSTRY', 'LOGO')); $arFiles = array(); while ($arRes = $obRes->Fetch()) { $arImg = array(); if (!empty($arRes['LOGO']) && !isset($arFiles[$arRes['LOGO']])) { if (intval($arRes['LOGO']) > 0) { $arImg = CFile::ResizeImageGet($arRes['LOGO'], array('width' => 25, 'height' => 25), BX_RESIZE_IMAGE_EXACT); } $arFiles[$arRes['LOGO']] = $arImg['src']; } $arRes['SID'] = $addPrefix ? 'CO_' . $arRes['ID'] : $arRes['ID']; $arDesc = array(); if (isset($arCompanyTypeList[$arRes['COMPANY_TYPE']])) { $arDesc[] = $arCompanyTypeList[$arRes['COMPANY_TYPE']]; } if (isset($arCompanyIndustryList[$arRes['INDUSTRY']])) { $arDesc[] = $arCompanyIndustryList[$arRes['INDUSTRY']]; } $arItems[$i] = array('title' => str_replace(array(';', ','), ' ', $arRes['TITLE']), 'desc' => implode(', ', $arDesc), 'id' => $arRes['SID'], 'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_company_show'), array('company_id' => $arRes['ID'])), 'image' => $arImg['src'], 'type' => 'company', 'selected' => 'N'); $companyIndex[$arRes['ID']] =& $arItems[$i]; $i++; } // advanced info - phone number, e-mail $obRes = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => 'COMPANY', 'ELEMENT_ID' => array_keys($companyIndex))); while ($arRes = $obRes->Fetch()) { if (isset($companyIndex[$arRes['ELEMENT_ID']]) && ($arRes['TYPE_ID'] === 'PHONE' || $arRes['TYPE_ID'] === 'EMAIL')) { $item =& $companyIndex[$arRes['ELEMENT_ID']]; if (!is_array($item['advancedInfo'])) { $item['advancedInfo'] = array(); } if (!is_array($item['advancedInfo']['multiFields'])) { $item['advancedInfo']['multiFields'] = array(); } $item['advancedInfo']['multiFields'][] = array('ID' => $arRes['ID'], 'TYPE_ID' => $arRes['TYPE_ID'], 'VALUE_TYPE' => $arRes['VALUE_TYPE'], 'VALUE' => $arRes['VALUE']); unset($item); } } unset($companyIndex); } elseif ($typeName === 'LEAD') { $leadIndex = array(); $obRes = CCrmLead::GetListEx(array('ID' => 'DESC'), array(), false, array('nTopCount' => $count), array('ID', 'TITLE', 'NAME', 'SECOND_NAME', 'LAST_NAME', 'STATUS_ID')); while ($arRes = $obRes->Fetch()) { $arRes['SID'] = $addPrefix ? 'L_' . $arRes['ID'] : $arRes['ID']; $arItems[$i] = array('title' => isset($arRes['TITLE']) ? $arRes['TITLE'] : '', 'desc' => CCrmLead::PrepareFormattedName(array('HONORIFIC' => isset($arRes['HONORIFIC']) ? $arRes['HONORIFIC'] : '', 'NAME' => isset($arRes['NAME']) ? $arRes['NAME'] : '', 'SECOND_NAME' => isset($arRes['SECOND_NAME']) ? $arRes['SECOND_NAME'] : '', 'LAST_NAME' => isset($arRes['LAST_NAME']) ? $arRes['LAST_NAME'] : ''), $nameFormat), 'id' => $arRes['SID'], 'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_lead_show'), array('lead_id' => $arRes['ID'])), 'type' => 'lead', 'selected' => 'N'); $leadIndex[$arRes['ID']] =& $arItems[$i]; $i++; } // advanced info - phone number, e-mail $obRes = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => 'LEAD', 'ELEMENT_ID' => array_keys($leadIndex))); while ($arRes = $obRes->Fetch()) { if (isset($leadIndex[$arRes['ELEMENT_ID']]) && ($arRes['TYPE_ID'] === 'PHONE' || $arRes['TYPE_ID'] === 'EMAIL')) { $item =& $leadIndex[$arRes['ELEMENT_ID']]; if (!is_array($item['advancedInfo'])) { $item['advancedInfo'] = array(); } if (!is_array($item['advancedInfo']['multiFields'])) { $item['advancedInfo']['multiFields'] = array(); } $item['advancedInfo']['multiFields'][] = array('ID' => $arRes['ID'], 'TYPE_ID' => $arRes['TYPE_ID'], 'VALUE_TYPE' => $arRes['VALUE_TYPE'], 'VALUE' => $arRes['VALUE']); unset($item); } } unset($leadIndex); } elseif ($typeName === 'DEAL') { $obRes = CCrmDeal::GetListEx(array('ID' => 'DESC'), array(), false, array('nTopCount' => $count), array('ID', 'TITLE', 'STAGE_ID', 'COMPANY_TITLE', 'CONTACT_FULL_NAME')); while ($arRes = $obRes->Fetch()) { $arRes['SID'] = $addPrefix ? 'D_' . $arRes['ID'] : $arRes['ID']; $clientTitle = !empty($arRes['COMPANY_TITLE']) ? $arRes['COMPANY_TITLE'] : ''; $clientTitle .= ($clientTitle !== '' && !empty($arRes['CONTACT_FULL_NAME']) ? ', ' : '') . $arRes['CONTACT_FULL_NAME']; $arItems[] = array('title' => isset($arRes['TITLE']) ? str_replace(array(';', ','), ' ', $arRes['TITLE']) : '', 'desc' => $clientTitle, 'id' => $arRes['SID'], 'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_deal_show'), array('deal_id' => $arRes['ID'])), 'type' => 'deal', 'selected' => 'N'); } } elseif ($typeName === 'QUOTE') { $obRes = CCrmQuote::GetList(array('ID' => 'DESC'), array(), false, array('nTopCount' => $count), array('ID', 'QUOTE_NUMBER', 'TITLE', 'COMPANY_TITLE', 'CONTACT_FULL_NAME')); while ($arRes = $obRes->Fetch()) { $arRes['SID'] = $addPrefix ? CCrmQuote::OWNER_TYPE . '_' . $arRes['ID'] : $arRes['ID']; $clientTitle = !empty($arRes['COMPANY_TITLE']) ? $arRes['COMPANY_TITLE'] : ''; $clientTitle .= ($clientTitle !== '' && !empty($arRes['CONTACT_FULL_NAME']) ? ', ' : '') . $arRes['CONTACT_FULL_NAME']; $quoteTitle = empty($arRes['TITLE']) ? $arRes['QUOTE_NUMBER'] : $arRes['QUOTE_NUMBER'] . ' - ' . $arRes['TITLE']; $arItems[] = array('title' => empty($quoteTitle) ? '' : str_replace(array(';', ','), ' ', $quoteTitle), 'desc' => $clientTitle, 'id' => $arRes['SID'], 'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_quote_show'), array('quote_id' => $arRes['ID'])), 'type' => 'quote', 'selected' => 'N'); } } } unset($typeName); return $arItems; }
$CCrmPerms = new CCrmPerms($USER->GetID()); if (!$USER->IsAuthorized() || $CCrmPerms->HavePerm('QUOTE', BX_CRM_PERM_NONE)) { return; } $arResult = array(); $_GET['USER_ID'] = preg_replace('/^(CONTACT|COMPANY|LEAD|DEAL|QUOTE)_/i' . BX_UTF_PCRE_MODIFIER, '', $_GET['USER_ID']); $iQuoteId = (int) $_GET['USER_ID']; if ($iQuoteId > 0) { __IncludeLang(dirname(__FILE__) . '/lang/' . LANGUAGE_ID . '/' . basename(__FILE__)); global $APPLICATION; $arParams['PATH_TO_QUOTE_SHOW'] = CrmCheckPath('PATH_TO_QUOTE_SHOW', $arParams['PATH_TO_QUOTE_SHOW'], $APPLICATION->GetCurPage() . '?quote_id=#quote_id#&show'); $arParams['PATH_TO_QUOTE_EDIT'] = CrmCheckPath('PATH_TO_QUOTE_EDIT', $arParams['PATH_TO_QUOTE_EDIT'], $APPLICATION->GetCurPage() . '?quote_id=#quote_id#&edit'); $arParams['PATH_TO_CONTACT_SHOW'] = CrmCheckPath('PATH_TO_CONTACT_SHOW', $arParams['PATH_TO_CONTACT_SHOW'], $APPLICATION->GetCurPage() . '?contact_id=#contact_id#&show'); $arParams['PATH_TO_COMPANY_SHOW'] = CrmCheckPath('PATH_TO_COMPANY_SHOW', $arParams['PATH_TO_COMPANY_SHOW'], $APPLICATION->GetCurPage() . '?company_id=#company_id#&show'); $arResult['STATUS_LIST'] = CCrmStatus::GetStatusListEx('QUOTE_STATUS'); $obRes = CCrmQuote::GetList(array(), array('ID' => $iQuoteId)); $arQuote = $obRes->Fetch(); if ($arQuote == false) { return; } $res = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => 'QUOTE', 'ELEMENT_ID' => $iQuoteId)); while ($ar = $res->Fetch()) { if (empty($arQuote[$ar['COMPLEX_ID']])) { $arQuote[$ar['COMPLEX_ID']] = CCrmFieldMulti::GetTemplateByComplex($ar['COMPLEX_ID'], $ar['VALUE']); } } $arQuote['PATH_TO_QUOTE_SHOW'] = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_QUOTE_SHOW'], array('quote_id' => $iQuoteId)); $arQuote['PATH_TO_QUOTE_EDIT'] = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_QUOTE_EDIT'], array('quote_id' => $iQuoteId)); $arQuote['PATH_TO_CONTACT_SHOW'] = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_CONTACT_SHOW'], array('contact_id' => $arQuote['CONTACT_ID'])); $arQuote['PATH_TO_COMPANY_SHOW'] = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_COMPANY_SHOW'], array('company_id' => $arQuote['COMPANY_ID'])); $arQuote['CONTACT_NAME'] = CUser::FormatName(\Bitrix\Crm\Format\PersonNameFormatter::getFormat(), array('NAME' => $arQuote['NAME'], 'LAST_NAME' => $arQuote['LAST_NAME'], 'SECOND_NAME' => $arQuote['SECOND_NAME']), true, false);
$arParams['ELEMENT_ID'] = (int) $arParams['ELEMENT_ID']; if (!empty($arParams['ELEMENT_ID'])) { $bEdit = true; } if (!empty($_REQUEST['copy'])) { $bCopy = true; $bEdit = false; } /*$bConvert = isset($arParams['CONVERT']) && $arParams['CONVERT'];*/ $arPersonTypes = $arResult['PERSON_TYPE_IDS'] = CCrmPaySystem::getPersonTypeIDs(); $bTaxMode = CCrmTax::isTaxMode(); $arResult['TAX_MODE'] = $bTaxMode ? 'Y' : 'N'; $arFields = null; if ($bEdit || $bCopy) { $arFilter = array('ID' => $arParams['ELEMENT_ID'], 'PERMISSION' => 'WRITE'); $obFields = CCrmQuote::GetList(array(), $arFilter); $arFields = $obFields->GetNext(); if ($arFields === false) { $bEdit = false; $bCopy = false; } else { $arEntityAttr = $CCrmQuote->cPerms->GetEntityAttr('QUOTE', array($arParams['ELEMENT_ID'])); } if ($bCopy) { if (isset($arFields['QUOTE_NUMBER'])) { unset($arFields['QUOTE_NUMBER']); } if (isset($arFields['~QUOTE_NUMBER'])) { unset($arFields['~QUOTE_NUMBER']); } if (isset($arFields['LEAD_ID'])) {
if (isset($arResult['SELECTED'][$arRes['SID']])) { unset($arResult['SELECTED'][$arRes['SID']]); $sSelected = 'Y'; } else { $sSelected = 'N'; } $clientTitle = !empty($arRes['COMPANY_TITLE']) ? $arRes['COMPANY_TITLE'] : ''; $clientTitle .= ($clientTitle !== '' && !empty($arRes['CONTACT_FULL_NAME']) ? ', ' : '') . $arRes['CONTACT_FULL_NAME']; $ar[] = array('title' => str_replace(array(';', ','), ' ', $arRes['TITLE']), 'desc' => $clientTitle, 'id' => $arRes['SID'], 'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_deal_show'), array('deal_id' => $arRes['ID'])), 'type' => 'deal', 'selected' => $sSelected); } $arResult['ELEMENT'] = array_merge($ar, $arResult['ELEMENT']); } if ($arParams['arUserField']['SETTINGS']['QUOTE'] == 'Y' && isset($arSelected['QUOTE']) && !empty($arSelected['QUOTE'])) { $arQuoteStageList = CCrmStatus::GetStatusListEx('QUOTE_STAGE'); $ar = array(); $obRes = CCrmQuote::GetList(array('ID' => 'DESC'), array('ID' => $arSelected['QUOTE']), false, false, array('ID', 'QUOTE_NUMBER', 'TITLE', 'COMPANY_TITLE', 'CONTACT_FULL_NAME')); while ($arRes = $obRes->Fetch()) { $arRes['SID'] = $arResult['PREFIX'] == 'Y' ? 'D_' . $arRes['ID'] : $arRes['ID']; if (isset($arResult['SELECTED'][$arRes['SID']])) { unset($arResult['SELECTED'][$arRes['SID']]); $sSelected = 'Y'; } else { $sSelected = 'N'; } $clientTitle = !empty($arRes['COMPANY_TITLE']) ? $arRes['COMPANY_TITLE'] : ''; $clientTitle .= ($clientTitle !== '' && !empty($arRes['CONTACT_FULL_NAME']) ? ', ' : '') . $arRes['CONTACT_FULL_NAME']; $quoteTitle = empty($arRes['TITLE']) ? $arRes['QUOTE_NUMBER'] : $arRes['QUOTE_NUMBER'] . ' - ' . $arRes['TITLE']; $ar[] = array('title' => empty($quoteTitle) ? '' : str_replace(array(';', ','), ' ', $quoteTitle), 'desc' => $clientTitle, 'id' => $arRes['SID'], 'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_quote_show'), array('quote_id' => $arRes['ID'])), 'type' => 'quote', 'selected' => $sSelected); } $arResult['ELEMENT'] = array_merge($ar, $arResult['ELEMENT']); }