Esempio n. 1
1
 private static function ExtractCommsFromEmails($emails, $arIgnored = array())
 {
     if (!is_array($emails)) {
         $emails = array($emails);
     }
     if (count($emails) === 0) {
         return array();
     }
     $arFilter = array();
     foreach ($emails as $email) {
         //Process valid emails only
         if (!($email !== '' && CCrmMailHelper::IsEmail($email))) {
             continue;
         }
         if (in_array($email, $arIgnored, true)) {
             continue;
         }
         $arFilter[] = array('=VALUE' => $email);
     }
     if (empty($arFilter)) {
         return array();
     }
     $dbFieldMulti = CCrmFieldMulti::GetList(array(), array('ENTITY_ID' => 'LEAD|CONTACT|COMPANY', 'TYPE_ID' => 'EMAIL', 'FILTER' => $arFilter));
     $result = array();
     while ($arFieldMulti = $dbFieldMulti->Fetch()) {
         $entityTypeID = CCrmOwnerType::ResolveID($arFieldMulti['ENTITY_ID']);
         $entityID = intval($arFieldMulti['ELEMENT_ID']);
         $result[] = self::CreateComm($entityTypeID, $entityID, $arFieldMulti['VALUE']);
     }
     return $result;
 }
Esempio n. 2
1
 public static function GetDocument($documentId)
 {
     $arDocumentID = self::GetDocumentInfo($documentId);
     if (empty($arDocumentID)) {
         throw new CBPArgumentNullException('documentId');
     }
     $arResult = null;
     switch ($arDocumentID['TYPE']) {
         case 'CONTACT':
             $dbDocumentList = CCrmContact::GetListEx(array(), array('ID' => $arDocumentID['ID'], "CHECK_PERMISSIONS" => "N"), false, false, array('*', 'UF_*'));
             break;
         case 'COMPANY':
             $dbDocumentList = CCrmCompany::GetListEx(array(), array('ID' => $arDocumentID['ID'], 'CHECK_PERMISSIONS' => 'N'), false, false, array('*', 'UF_*'));
             break;
         case 'DEAL':
             $dbDocumentList = CCrmDeal::GetListEx(array(), array('ID' => $arDocumentID['ID'], "CHECK_PERMISSIONS" => "N"), false, false, array('*', 'UF_*'));
             break;
         case 'LEAD':
             $dbDocumentList = CCrmLead::GetListEx(array(), array('ID' => $arDocumentID['ID'], "CHECK_PERMISSIONS" => "N"), false, false, array('*', 'UF_*'));
             break;
     }
     if (($objDocument = $dbDocumentList->Fetch()) !== false) {
         $assignedByID = isset($objDocument['ASSIGNED_BY_ID']) ? intval($objDocument['ASSIGNED_BY_ID']) : 0;
         if ($assignedByID > 0) {
             $dbUsers = CUser::GetList($sortBy = 'id', $sortOrder = 'asc', array('ID' => $assignedByID), array('SELECT' => array('EMAIL')));
             $arUser = is_object($dbUsers) ? $dbUsers->Fetch() : null;
             $objDocument['ASSIGNED_BY_EMAIL'] = is_array($arUser) ? $arUser['EMAIL'] : '';
         }
         $arUserField = array('CREATED_BY', 'CREATED_BY_ID', 'MODIFY_BY', 'MODIFY_BY_ID', 'ASSIGNED_BY', 'ASSIGNED_BY_ID');
         foreach ($arUserField as $sField) {
             if (isset($objDocument[$sField])) {
                 $objDocument[$sField] = 'user_' . $objDocument[$sField];
             }
         }
         if (COption::GetOptionString('crm', 'bp_version', 2) == 2) {
             $userFieldsList = null;
             switch ($arDocumentID['TYPE']) {
                 case 'CONTACT':
                     $userFieldsList = CCrmContact::GetUserFields();
                     break;
                 case 'COMPANY':
                     $userFieldsList = CCrmCompany::GetUserFields();
                     break;
                 case 'DEAL':
                     $userFieldsList = CCrmDeal::GetUserFields();
                     break;
                 case 'LEAD':
                     $userFieldsList = CCrmLead::GetUserFields();
                     break;
             }
             if (is_array($userFieldsList)) {
                 foreach ($userFieldsList as $userFieldName => $userFieldParams) {
                     $fieldTypeID = isset($userFieldParams['USER_TYPE']) ? $userFieldParams['USER_TYPE']['USER_TYPE_ID'] : '';
                     $isFieldMultiple = isset($userFieldParams['MULTIPLE']) && $userFieldParams['MULTIPLE'] === 'Y';
                     $fieldSettings = isset($userFieldParams['SETTINGS']) ? $userFieldParams['SETTINGS'] : array();
                     if (isset($objDocument[$userFieldName])) {
                         $fieldValue = $objDocument[$userFieldName];
                     } elseif (isset($fieldSettings['DEFAULT_VALUE'])) {
                         $fieldValue = $fieldSettings['DEFAULT_VALUE'];
                     } else {
                         $objDocument[$userFieldName] = $objDocument[$userFieldName . '_PRINTABLE'] = '';
                         continue;
                     }
                     if ($fieldTypeID == 'employee') {
                         if (!$isFieldMultiple) {
                             $objDocument[$userFieldName] = 'user_' . $fieldValue;
                         } else {
                             $objDocument[$userFieldName] = array();
                             foreach ($fieldValue as $value) {
                                 $objDocument[$userFieldName][] = 'user_' . $value;
                             }
                         }
                     } elseif ($fieldTypeID == 'crm') {
                         $defaultTypeName = '';
                         foreach ($fieldSettings as $typeName => $flag) {
                             if ($flag === 'Y') {
                                 $defaultTypeName = $typeName;
                                 break;
                             }
                         }
                         if (!$isFieldMultiple) {
                             $objDocument[$userFieldName . '_PRINTABLE'] = self::PrepareCrmUserTypeValueView($fieldValue, $defaultTypeName);
                         } else {
                             $views = array();
                             foreach ($fieldValue as $value) {
                                 $views[] = self::PrepareCrmUserTypeValueView($value, $defaultTypeName);
                             }
                             $objDocument[$userFieldName . '_PRINTABLE'] = $views;
                         }
                     } elseif ($fieldTypeID == 'enumeration') {
                         self::ExternalizeEnumerationField($objDocument, $userFieldName);
                     } elseif ($fieldTypeID === 'boolean') {
                         //Convert UF boolean values (1/0) in to bizproc boolean values (Y/N) is display type checkbox
                         if (isset($fieldSettings['DISPLAY']) && $fieldSettings['DISPLAY'] === 'CHECKBOX') {
                             $objDocument[$userFieldName] = $fieldValue > 0 ? 'Y' : 'N';
                         }
                         $objDocument[$userFieldName . '_PRINTABLE'] = GetMessage($fieldValue > 0 ? 'MAIN_YES' : 'MAIN_NO');
                     }
                 }
             }
         }
         $res = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => $arDocumentID['TYPE'], 'ELEMENT_ID' => $arDocumentID['ID']));
         while ($ar = $res->Fetch()) {
             if (!isset($objDocument[$ar['TYPE_ID']])) {
                 $objDocument[$ar['TYPE_ID']] = array();
             }
             $objDocument[$ar['TYPE_ID']]['n0' . $ar['ID']] = array('VALUE' => $ar['VALUE'], 'VALUE_TYPE' => $ar['VALUE_TYPE']);
             if (!isset($objDocument[$ar['TYPE_ID'] . "_" . $ar['VALUE_TYPE']])) {
                 $objDocument[$ar['TYPE_ID'] . "_" . $ar['VALUE_TYPE']] = array();
             }
             $objDocument[$ar['TYPE_ID'] . "_" . $ar['VALUE_TYPE']][] = $ar['VALUE'];
             if (!isset($objDocument[$ar['TYPE_ID'] . "_" . $ar['VALUE_TYPE'] . "_PRINTABLE"])) {
                 $objDocument[$ar['TYPE_ID'] . "_" . $ar['VALUE_TYPE'] . "_PRINTABLE"] = "";
             }
             $objDocument[$ar['TYPE_ID'] . "_" . $ar['VALUE_TYPE'] . "_PRINTABLE"] .= (strlen($objDocument[$ar['TYPE_ID'] . "_" . $ar['VALUE_TYPE'] . "_PRINTABLE"]) > 0 ? ", " : "") . $ar['VALUE'];
             if (!isset($objDocument[$ar['TYPE_ID'] . "_PRINTABLE"])) {
                 $objDocument[$ar['TYPE_ID'] . "_PRINTABLE"] = "";
             }
             $objDocument[$ar['TYPE_ID'] . "_PRINTABLE"] .= (strlen($objDocument[$ar['TYPE_ID'] . "_PRINTABLE"]) > 0 ? ", " : "") . $ar['VALUE'];
         }
         $multiFieldTypes = CCrmFieldMulti::GetEntityTypeList();
         foreach ($multiFieldTypes as $typeId => $arFields) {
             if (!isset($objDocument[$typeId])) {
                 $objDocument[$typeId] = array();
             }
             $printableFieldName = $typeId . '_PRINTABLE';
             if (!isset($objDocument[$printableFieldName])) {
                 $objDocument[$printableFieldName] = '';
             }
             foreach ($arFields as $valueType => $valueName) {
                 $fieldName = $typeId . '_' . $valueType;
                 if (!isset($objDocument[$fieldName])) {
                     $objDocument[$fieldName] = array('');
                 }
                 $printableFieldName = $fieldName . '_PRINTABLE';
                 if (!isset($objDocument[$printableFieldName])) {
                     $objDocument[$printableFieldName] = '';
                 }
             }
         }
         // Preparation of user names -->
         $nameFormat = CSite::GetNameFormat(false);
         if (isset($objDocument['ASSIGNED_BY_ID'])) {
             $objDocument['ASSIGNED_BY_PRINTABLE'] = CUser::FormatName($nameFormat, array('LOGIN' => isset($objDocument['ASSIGNED_BY_LOGIN']) ? $objDocument['ASSIGNED_BY_LOGIN'] : '', 'NAME' => isset($objDocument['ASSIGNED_BY_NAME']) ? $objDocument['ASSIGNED_BY_NAME'] : '', 'LAST_NAME' => isset($objDocument['ASSIGNED_BY_LAST_NAME']) ? $objDocument['ASSIGNED_BY_LAST_NAME'] : '', 'SECOND_NAME' => isset($objDocument['ASSIGNED_BY_SECOND_NAME']) ? $objDocument['ASSIGNED_BY_SECOND_NAME'] : ''), true, false);
         }
         if (isset($objDocument['CREATED_BY_ID'])) {
             $objDocument['CREATED_BY_PRINTABLE'] = CUser::FormatName($nameFormat, array('LOGIN' => isset($objDocument['CREATED_BY_LOGIN']) ? $objDocument['CREATED_BY_LOGIN'] : '', 'NAME' => isset($objDocument['CREATED_BY_NAME']) ? $objDocument['CREATED_BY_NAME'] : '', 'LAST_NAME' => isset($objDocument['CREATED_BY_LAST_NAME']) ? $objDocument['CREATED_BY_LAST_NAME'] : '', 'SECOND_NAME' => isset($objDocument['CREATED_BY_SECOND_NAME']) ? $objDocument['CREATED_BY_SECOND_NAME'] : ''), true, false);
         }
         // <-- Preparation of user names
         switch ($arDocumentID['TYPE']) {
             case 'DEAL':
                 CCrmDocumentDeal::PrepareDocument($objDocument);
                 break;
             case 'LEAD':
                 CCrmDocumentLead::PrepareDocument($objDocument);
                 break;
             case 'CONTACT':
                 CCrmDocumentContact::PrepareDocument($objDocument);
                 break;
         }
         return $objDocument;
     }
     return null;
 }
Esempio n. 3
0
 protected static function getEntityMultifieldValues($entityTypeID, $entityID, $typeID)
 {
     $results = array();
     $dbResult = \CCrmFieldMulti::GetList(array('ID' => 'asc'), array('TYPE_ID' => $typeID, 'ENTITY_ID' => \CCrmOwnerType::ResolveName($entityTypeID), 'ELEMENT_ID' => $entityID));
     if (is_object($dbResult)) {
         while ($fields = $dbResult->Fetch()) {
             $results[] = $fields['VALUE'];
         }
     }
     return $results;
 }
 public function getSourceMultiFields()
 {
     if ($this->srcMultiFields !== null) {
         return $this->srcMultiFields;
     }
     $this->srcMultiFields = array();
     $dbResult = \CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => 'LEAD', 'ELEMENT_ID' => $this->srcEntityID));
     while ($multiField = $dbResult->Fetch()) {
         $typeID = $multiField['TYPE_ID'];
         if (!$this->srcMultiFields[$typeID]) {
             $this->srcMultiFields[$typeID] = array();
         }
         $index = count($this->srcMultiFields[$typeID]);
         $this->srcMultiFields[$typeID]["n{$index}"] = array('VALUE' => $multiField['VALUE'], 'VALUE_TYPE' => $multiField['VALUE_TYPE']);
     }
     return $this->srcMultiFields;
 }
Esempio n. 5
0
        } elseif ($post !== '') {
            $arResult['ENTITY_LEGEND'] = $post;
        }
    }
} elseif ($entityTypeID === CCrmOwnerType::Company) {
    $dbEntity = CCrmCompany::GetListEx(array(), array('ID' => $entityID), false, false, array('TITLE', 'LOGO'));
    $entity = $dbEntity ? $dbEntity->Fetch() : null;
    if ($entity) {
        if (isset($entity['LOGO'])) {
            $arResult['ENTITY_IMAGE_ID'] = intval($entity['LOGO']);
        } else {
            $arResult['ENTITY_IMAGE_URL'] = SITE_DIR . 'bitrix/templates/mobile_app/images/crm/no_company_big.png?ver=1';
        }
        $arResult['ENTITY_TITLE'] = isset($entity['TITLE']) ? $entity['TITLE'] : '';
    }
}
$dbRes = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('TYPE_ID' => $arParams['TYPE_ID'], 'ENTITY_ID' => $entityTypeName, 'ELEMENT_ID' => $entityID));
$arResult['ITEMS'] = array();
if ($dbRes) {
    while ($item = $dbRes->Fetch()) {
        $value = $item['VALUE'];
        $url = '';
        if ($typeID === 'PHONE') {
            $url = CCrmMobileHelper::PrepareCalltoUrl($value);
        } elseif ($typeID === 'EMAIL') {
            $url = CCrmMobileHelper::PrepareMailtoUrl($value);
        }
        $arResult['ITEMS'][] = array('VALUE' => $value, 'VALUE_TYPE' => $item['VALUE_TYPE'], 'URL' => $url);
    }
}
$this->IncludeComponentTemplate();
Esempio n. 6
0
    $arResult['PATH_TO_CONTACT_ADD'] = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_CONTACT_EDIT'], array('contact_id' => 0));
    $addParams = array();
    if ($bInternal && isset($arParams['INTERNAL_CONTEXT']) && is_array($arParams['INTERNAL_CONTEXT'])) {
        $internalContext = $arParams['INTERNAL_CONTEXT'];
        if (isset($internalContext['COMPANY_ID'])) {
            $addParams['company_id'] = $internalContext['COMPANY_ID'];
        }
    }
    if (!empty($addParams)) {
        $arResult['PATH_TO_CONTACT_ADD'] = CHTTP::urlAddParams($arResult['PATH_TO_CONTACT_ADD'], $addParams);
    }
}
// adding crm multi field to result array
if (isset($arResult['CONTACT_ID']) && !empty($arResult['CONTACT_ID'])) {
    $arFmList = array();
    $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']);
Esempio n. 7
0
     }
 }
 $arSelect = array('ID', 'TITLE', 'FULL_NAME', 'STATUS_ID');
 $arOrder = array('TITLE' => 'ASC');
 $arData = array();
 $obRes = CCrmLead::GetList($arOrder, $arFilter, $arSelect, $nPageTop);
 $arFiles = array();
 $i = 0;
 $leadIndex = array();
 while ($arRes = $obRes->Fetch()) {
     $arData[$i] = array('id' => $multi ? 'L_' . $arRes['ID'] : $arRes['ID'], 'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_lead_show'), array('lead_id' => $arRes['ID'])), 'title' => str_replace(array(';', ','), ' ', $arRes['TITLE']), 'desc' => $arRes['FULL_NAME'], 'type' => 'lead');
     $leadIndex[$arRes['ID']] =& $arData[$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);
 Header('Content-Type: application/x-javascript; charset=' . LANG_CHARSET);
Esempio n. 8
0
 public static function GetCompanyFieldsByID($pid)
 {
     $arOrder = array('DATE_CREATE' => 'DESC');
     $arFilter = array('ID' => $pid);
     $arMainFields = array();
     $arAddFields = array();
     $resList = CAllCrmCompany::GetList($arOrder, $arFilter);
     if ($arRes = $resList->Fetch()) {
         $arMainFields = $arRes;
     }
     $arFilter = array('ENTITY_ID' => 'COMPANY', 'ELEMENT_ID' => $pid);
     $resmulti = CCrmFieldMulti::GetList(array(), $arFilter);
     while ($res1 = $resmulti->Fetch()) {
         $arMainFields[$res1["COMPLEX_ID"]] = $res1["VALUE"];
     }
     return $arMainFields;
 }
Esempio n. 9
0
    $sources = array_keys($arResult['SOURCE_LIST']);
    if (!empty($sources)) {
        $arFields['~SOURCE_ID'] = $sources[0];
        $arFields['SOURCE_ID'] = htmlspecialcharsbx($arFields['~SOURCE_ID']);
    }
    CCrmMobileHelper::PrepareLeadItem($arFields, $arParams, array('STATUS_LIST' => $arResult['STATUS_LIST'], 'SOURCE_LIST' => $arResult['SOURCE_LIST']));
} else {
    $arResult['MODE'] = 'UPDATE';
    $dbFields = CCrmLead::GetListEx(array(), array('ID' => $entityID));
    $arFields = $dbFields->GetNext();
    if (!$arFields) {
        ShowError(GetMessage('CRM_LEAD_EDIT_NOT_FOUND', array('#ID#' => $arParams['ENTITY_ID'])));
        return;
    }
    $arFields['FM'] = array();
    $dbMultiFields = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => 'LEAD', 'ELEMENT_ID' => $entityID));
    if ($dbMultiFields) {
        while ($arMultiField = $dbMultiFields->Fetch()) {
            $arFields['FM'][$arMultiField['TYPE_ID']][$arMultiField['ID']] = array('VALUE' => $arMultiField['VALUE'], 'VALUE_TYPE' => $arMultiField['VALUE_TYPE']);
        }
    }
    CCrmMobileHelper::PrepareLeadItem($arFields, $arParams, array('STATUS_LIST' => $arResult['STATUS_LIST'], 'SOURCE_LIST' => $arResult['SOURCE_LIST']));
}
$currencyID = $arFields['~CURRENCY_ID'];
$arResult['ENTITY'] = $arFields;
unset($arFields);
$arResult['PRODUCT_ROWS'] = $entityID > 0 ? CCrmProductRow::LoadRows('L', $entityID) : array();
foreach ($arResult['PRODUCT_ROWS'] as &$productRow) {
    $price = isset($productRow['PRICE']) ? doubleval($productRow['PRICE']) : 0.0;
    $qty = isset($productRow['QUANTITY']) ? doubleval($productRow['QUANTITY']) : 0;
    $sum = $productRow['SUM'] = $price * $qty;
Esempio n. 10
0
$arResult = array();
$_GET['USER_ID'] = preg_replace('/^(CONTACT|COMPANY|LEAD|DEAL)_/i' . BX_UTF_PCRE_MODIFIER, '', $_GET['USER_ID']);
$iDealId = (int) $_GET['USER_ID'];
if ($iDealId > 0) {
    __IncludeLang(dirname(__FILE__) . '/lang/' . LANGUAGE_ID . '/' . basename(__FILE__));
    $arParams['PATH_TO_DEAL_SHOW'] = CrmCheckPath('PATH_TO_DEAL_SHOW', $arParams['PATH_TO_DEAL_SHOW'], $APPLICATION->GetCurPage() . '?deal_id=#deal_id#&show');
    $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_COMPANY_SHOW'] = CrmCheckPath('PATH_TO_COMPANY_SHOW', $arParams['PATH_TO_COMPANY_SHOW'], $APPLICATION->GetCurPage() . '?company_id=#company_id#&show');
    $arResult['STAGE_LIST'] = CCrmStatus::GetStatusListEx('DEAL_STAGE');
    $obRes = CCrmDeal::GetList(array(), array('ID' => $iDealId));
    $arDeal = $obRes->Fetch();
    if ($arDeal == false) {
        return;
    }
    $res = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => 'DEAL', 'ELEMENT_ID' => $iDealId));
    while ($ar = $res->Fetch()) {
        if (empty($arDeal[$ar['COMPLEX_ID']])) {
            $arDeal[$ar['COMPLEX_ID']] = CCrmFieldMulti::GetTemplateByComplex($ar['COMPLEX_ID'], $ar['VALUE']);
        }
    }
    $arDeal['PATH_TO_DEAL_SHOW'] = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_DEAL_SHOW'], array('deal_id' => $iDealId));
    $arDeal['PATH_TO_DEAL_EDIT'] = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_DEAL_EDIT'], array('deal_id' => $iDealId));
    $arDeal['PATH_TO_CONTACT_SHOW'] = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_CONTACT_SHOW'], array('contact_id' => $arDeal['CONTACT_ID']));
    $arDeal['PATH_TO_COMPANY_SHOW'] = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_COMPANY_SHOW'], array('company_id' => $arDeal['COMPANY_ID']));
    $arDeal['CONTACT_NAME'] = CUser::FormatName(\Bitrix\Crm\Format\PersonNameFormatter::getFormat(), array('NAME' => $arDeal['NAME'], 'LAST_NAME' => $arDeal['LAST_NAME'], 'SECOND_NAME' => $arDeal['SECOND_NAME']), true, false);
    $strCard = '
<div class="bx-user-info-data-cont-video bx-user-info-fields" id="bx_user_info_data_cont_1">
	<div class="bx-user-info-data-name">
		<a href="' . $arDeal['PATH_TO_DEAL_SHOW'] . '">' . htmlspecialcharsbx($arDeal['TITLE']) . '</a>
	</div>
Esempio n. 11
0
 public function GetListItemChangesSinceToken($listName, $viewFields = '', $query = '', $rowLimit = 0, $changeToken = '')
 {
     global $APPLICATION, $USER;
     if (!($listName_original = self::checkGUID($listName))) {
         return new CSoapFault('Data error', 'Wrong GUID - ' . $listName);
     }
     $listName = ToUpper(self::makeGUID($listName_original));
     $arFilter = array('EXPORT' => 'Y');
     $page = 1;
     $bUpdateFields = false;
     $tsLastFieldsChange = COption::GetOptionString('crm', 'ws_contacts_last_fields_change', false);
     if (strlen($changeToken) > 0) {
         if ($pos = strpos($changeToken, ';')) {
             list($newChangeToken, $page, $last_change) = explode(';', $changeToken);
             $page++;
             $changeToken = $newChangeToken;
         }
         $arFilter['>DATE_MODIFY'] = ConvertTimeStamp($changeToken, 'FULL');
         if (!$arFilter['>DATE_MODIFY']) {
             return new CSoapFault('Params error', 'Wrong changeToken: ' . $changeToken);
         }
         if ($tsLastFieldsChange !== false && $tsLastFieldsChange > $changeToken) {
             $bUpdateFields = true;
         }
     }
     CTimeZone::Disable();
     $obContact = CCrmContact::GetListEx(array(), $arFilter, false, array('nPageSize' => $rowLimit, 'bShowAll' => false, 'iNumPage' => $page));
     CTimeZone::Enable();
     if (!isset($last_change)) {
         $last_change = 0;
     }
     $data = new CXMLCreator('listitems');
     $data->setAttribute('MinTimeBetweenSyncs', 0);
     $data->setAttribute('RecommendedTimeBetweenSyncs', 180);
     $data->setAttribute('TimeStamp', $this->__makeDateTime());
     $data->setAttribute('EffectivePermMask', 'FullMask');
     $data->addChild($obChanges = new CXMLCreator('Changes'));
     if ((!$changeToken || $bUpdateFields) && $page <= 1) {
         $arGetListResult = $this->GetList($listName);
         $obChanges->addChild($arGetListResult['GetListResult']);
     }
     $data->addChild($obData = new CXMLCreator('rs:data'));
     $counter = 0;
     $arContacts = array();
     while ($arContact = $obContact->NavNext()) {
         $counter++;
         if (isset($arContact['COMPANY_TITLE'])) {
             $arContact['COMPANY'] = $arContact['COMPANY_TITLE'];
             unset($arContact['COMPANY_TITLE']);
         } else {
             $arContact['COMPANY'] = '';
         }
         $arContacts[$arContact['ID']] = $arContact;
     }
     $arCID = array_keys($arContacts);
     if (!empty($arCID)) {
         $res = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => 'CONTACT', 'ELEMENT_ID' => $arCID));
         while ($ar = $res->Fetch()) {
             $fieldName = $ar['COMPLEX_ID'];
             if ($ar['TYPE_ID'] == 'WEB' || $ar['TYPE_ID'] == 'IM') {
                 $fieldName = $ar['TYPE_ID'];
             }
             if (empty($arContacts[$ar['ELEMENT_ID']][$fieldName])) {
                 $arContacts[$ar['ELEMENT_ID']][$fieldName] = $ar['VALUE'];
             }
         }
     }
     foreach ($arContacts as $arContact) {
         $obData->addChild($this->__getRow($arContact, $listName, $last_change));
     }
     //$last_change = time();
     $obData->setAttribute('ItemCount', $counter);
     $data->setAttribute('xmlns:rs', 'urn:schemas-microsoft-com:rowset');
     $data->setAttribute('xmlns:z', '#RowsetSchema');
     if ($bUpdateFields && $tsLastFieldsChange) {
         $last_change = $tsLastFieldsChange;
     }
     if ($last_change > 0) {
         if ($rowLimit && $obContact->NavPageCount > 1 && $obContact->NavPageCount > $page) {
             $last_change = intval($changeToken) . ';' . $page . ';' . $last_change;
             $obChanges->setAttribute('MoreChanges', 'TRUE');
         } else {
             $last_change += 1;
         }
         $obChanges->setAttribute('LastChangeToken', $last_change);
     }
     return array('GetListItemChangesSinceTokenResult' => $data);
 }
Esempio n. 12
0
function GetCrmEntityCommunications($entityType, $entityID, $communicationType)
{
    $fullNameFormat = \Bitrix\Crm\Format\PersonNameFormatter::getFormat();
    if ($entityType === 'LEAD') {
        $data = array('ownerEntityType' => 'LEAD', 'ownerEntityId' => $entityID, 'entityType' => 'LEAD', 'entityId' => $entityID, 'entityTitle' => "{$entityType}_{$entityID}", 'entityDescription' => '', 'tabId' => 'main', 'communications' => array());
        $entity = CCrmLead::GetByID($entityID);
        if (!$entity) {
            return array('ERROR' => 'Invalid data');
        }
        // Prepare title
        $name = isset($entity['NAME']) ? $entity['NAME'] : '';
        $secondName = isset($entity['SECOND_NAME']) ? $entity['SECOND_NAME'] : '';
        $lastName = isset($entity['LAST_NAME']) ? $entity['LAST_NAME'] : '';
        if ($name !== '' || $secondName !== '' || $lastName !== '') {
            $data['entityTitle'] = CUser::FormatName($fullNameFormat, array('LOGIN' => '', 'NAME' => $name, 'SECOND_NAME' => $secondName, 'LAST_NAME' => $lastName), false, false);
            $data['entityDescription'] = isset($entity['TITLE']) ? $entity['TITLE'] : '';
        } else {
            $data['entityTitle'] = isset($entity['TITLE']) ? $entity['TITLE'] : '';
            $data['entityDescription'] = '';
        }
        // Try to load entity communications
        if (!CCrmActivity::CheckReadPermission(CCrmOwnerType::ResolveID($entityType), $entityID)) {
            return array('ERROR' => GetMessage('CRM_PERMISSION_DENIED'));
        }
        if ($communicationType !== '') {
            $dbResFields = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => $entityType, 'ELEMENT_ID' => $entityID, 'TYPE_ID' => $communicationType));
            while ($arField = $dbResFields->Fetch()) {
                if (empty($arField['VALUE'])) {
                    continue;
                }
                $comm = array('type' => $communicationType, 'value' => $arField['VALUE']);
                $data['communications'][] = $comm;
            }
        }
        return array('DATA' => array('TABS' => array(array('id' => 'lead', 'title' => GetMessage('CRM_COMMUNICATION_TAB_LEAD'), 'active' => true, 'items' => array($data)))));
    } elseif ($entityType === 'DEAL') {
        $entity = CCrmDeal::GetByID($entityID);
        if (!$entity) {
            return array('ERROR' => 'Invalid data');
        }
        $dealData = array();
        // Prepare company data
        $entityCompanyData = null;
        $entityCompanyID = isset($entity['COMPANY_ID']) ? intval($entity['COMPANY_ID']) : 0;
        $entityCompany = $entityCompanyID > 0 ? CCrmCompany::GetByID($entityCompanyID) : null;
        if (is_array($entityCompany)) {
            $entityCompanyData = array('ownerEntityType' => 'DEAL', 'ownerEntityId' => $entityID, 'entityType' => 'COMPANY', 'entityId' => $entityCompanyID, 'entityTitle' => isset($entityCompany['TITLE']) ? $entityCompany['TITLE'] : '', 'entityDescription' => '', 'communications' => array());
            if ($communicationType !== '') {
                $entityCompanyComms = CCrmActivity::PrepareCommunications('COMPANY', $entityCompanyID, $communicationType);
                foreach ($entityCompanyComms as &$entityCompanyComm) {
                    $comm = array('type' => $entityCompanyComm['TYPE'], 'value' => $entityCompanyComm['VALUE']);
                    $entityCompanyData['communications'][] = $comm;
                }
                unset($entityCompanyComm);
            }
        }
        // Try to get contact of deal
        $entityContactID = isset($entity['CONTACT_ID']) ? intval($entity['CONTACT_ID']) : 0;
        if ($entityContactID > 0) {
            $entityContact = CCrmContact::GetByID($entityContactID);
            if (is_array($entityContact)) {
                $item = array('ownerEntityType' => 'DEAL', 'ownerEntityId' => $entityID, 'entityType' => 'CONTACT', 'entityId' => $entityContactID, 'entityTitle' => CUser::FormatName($fullNameFormat, array('LOGIN' => '', 'NAME' => $entityContact['NAME'], 'LAST_NAME' => $entityContact['LAST_NAME'], 'SECOND_NAME' => $entityContact['SECOND_NAME']), false, false), 'tabId' => 'deal', 'communications' => array());
                $entityCompany = isset($entityContact['COMPANY_ID']) ? CCrmCompany::GetByID($entityContact['COMPANY_ID']) : null;
                if ($entityCompany && isset($entityCompany['TITLE'])) {
                    $item['entityDescription'] = $entityCompany['TITLE'];
                }
                if ($communicationType !== '') {
                    $entityContactComms = CCrmActivity::PrepareCommunications('CONTACT', $entityContactID, $communicationType);
                    foreach ($entityContactComms as &$entityContactComm) {
                        $comm = array('type' => $entityContactComm['TYPE'], 'value' => $entityContactComm['VALUE']);
                        $item['communications'][] = $comm;
                    }
                    unset($entityContactComm);
                }
                if ($communicationType === '' || !empty($item['communications'])) {
                    $dealData["CONTACT_{$entityContactID}"] = $item;
                }
            }
        }
        if ($entityCompanyData && !empty($entityCompanyData['communications'])) {
            $dealData['COMPANY_' . $entityCompanyID] = $entityCompanyData;
            $dealData['COMPANY_' . $entityCompanyID]['tabId'] = 'deal';
        }
        // Try to get previous communications
        $entityComms = CCrmActivity::GetCommunicationsByOwner('DEAL', $entityID, $communicationType);
        foreach ($entityComms as &$entityComm) {
            CCrmActivity::PrepareCommunicationInfo($entityComm);
            $key = "{$entityComm['ENTITY_TYPE']}_{$entityComm['ENTITY_ID']}";
            if (!isset($dealData[$key])) {
                $dealData[$key] = array('ownerEntityType' => 'DEAL', 'ownerEntityId' => $entityID, 'entityType' => CCrmOwnerType::ResolveName($entityComm['ENTITY_TYPE_ID']), 'entityId' => $entityComm['ENTITY_ID'], 'entityTitle' => isset($entityComm['TITLE']) ? $entityComm['TITLE'] : '', 'entityDescription' => isset($entityComm['DESCRIPTION']) ? $entityComm['DESCRIPTION'] : '', 'tabId' => 'deal', 'communications' => array());
            }
            if ($communicationType !== '') {
                $commFound = false;
                foreach ($dealData[$key]['communications'] as &$comm) {
                    if ($comm['value'] === $entityComm['VALUE']) {
                        $commFound = true;
                        break;
                    }
                }
                unset($comm);
                if ($commFound) {
                    continue;
                }
                $comm = array('type' => $entityComm['TYPE'], 'value' => $entityComm['VALUE']);
                $dealData[$key]['communications'][] = $comm;
            }
        }
        unset($entityComm);
        $companyData = array();
        // Try to get contacts of company
        if ($entityCompany > 0) {
            $entityComms = CCrmActivity::GetCompanyCommunications($entityCompanyID, $communicationType);
            foreach ($entityComms as &$entityComm) {
                CCrmActivity::PrepareCommunicationInfo($entityComm);
                $key = "{$entityComm['ENTITY_TYPE']}_{$entityComm['ENTITY_ID']}";
                if (!isset($companyData[$key])) {
                    $companyData[$key] = array('ownerEntityType' => 'DEAL', 'ownerEntityId' => $entityID, 'entityType' => CCrmOwnerType::ResolveName($entityComm['ENTITY_TYPE_ID']), 'entityId' => $entityComm['ENTITY_ID'], 'entityTitle' => isset($entityComm['TITLE']) ? $entityComm['TITLE'] : '', 'entityDescription' => isset($entityComm['DESCRIPTION']) ? $entityComm['DESCRIPTION'] : '', 'tabId' => 'company', 'communications' => array());
                }
                if ($communicationType !== '') {
                    $comm = array('type' => $entityComm['TYPE'], 'value' => $entityComm['VALUE']);
                    $companyData[$key]['communications'][] = $comm;
                }
            }
            unset($entityComm);
        }
        if ($entityCompanyData && !empty($entityCompanyData['communications'])) {
            $companyData['COMPANY_' . $entityCompanyID] = $entityCompanyData;
            $companyData['COMPANY_' . $entityCompanyID]['tabId'] = 'company';
        }
        return array('DATA' => array('TABS' => array(array('id' => 'deal', 'title' => GetMessage('CRM_COMMUNICATION_TAB_DEAL'), 'active' => true, 'items' => array_values($dealData)), array('id' => 'company', 'title' => GetMessage('CRM_COMMUNICATION_TAB_COMPANY'), 'items' => array_values($companyData)))));
    } elseif ($entityType === 'COMPANY') {
        $companyData = array();
        $entity = CCrmCompany::GetByID($entityID);
        if (!$entity) {
            return array('ERROR' => 'Invalid data');
        }
        $companyItem = array('ownerEntityType' => 'COMPANY', 'ownerEntityId' => $entityID, 'entityType' => 'COMPANY', 'entityId' => $entityID, 'entityTitle' => isset($entity['TITLE']) ? $entity['TITLE'] : "{$entityType}_{$entityID}", 'entityDescription' => '', 'tabId' => 'company', 'communications' => array());
        // Try to load entity communications
        if (!CCrmActivity::CheckReadPermission(CCrmOwnerType::ResolveID($entityType), $entityID)) {
            return array('ERROR' => GetMessage('CRM_PERMISSION_DENIED'));
        }
        if ($communicationType !== '') {
            $dbResFields = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => $entityType, 'ELEMENT_ID' => $entityID, 'TYPE_ID' => $communicationType));
            while ($arField = $dbResFields->Fetch()) {
                if (empty($arField['VALUE'])) {
                    continue;
                }
                $comm = array('type' => $communicationType, 'value' => $arField['VALUE']);
                $companyItem['communications'][] = $comm;
            }
        }
        $companyData["{$entityType}_{$entityID}"] = $companyItem;
        if ($communicationType !== '') {
            $entityComms = CCrmActivity::GetCompanyCommunications($entityID, $communicationType, 50);
            foreach ($entityComms as &$entityComm) {
                CCrmActivity::PrepareCommunicationInfo($entityComm);
                $key = "{$entityComm['ENTITY_TYPE']}_{$entityComm['ENTITY_ID']}";
                if (!isset($companyData[$key])) {
                    $companyData[$key] = array('ownerEntityType' => 'COMPANY', 'ownerEntityId' => $entityID, 'entityType' => $entityComm['ENTITY_TYPE'], 'entityId' => $entityComm['ENTITY_ID'], 'entityTitle' => isset($entityComm['TITLE']) ? $entityComm['TITLE'] : '', 'entityDescription' => isset($entityComm['DESCRIPTION']) ? $entityComm['DESCRIPTION'] : '', 'tabId' => 'company', 'communications' => array());
                }
                $comm = array('type' => $entityComm['TYPE'], 'value' => $entityComm['VALUE']);
                $companyData[$key]['communications'][] = $comm;
            }
            unset($entityComm);
        }
        return array('DATA' => array('TABS' => array(array('id' => 'company', 'title' => GetMessage('CRM_COMMUNICATION_TAB_COMPANY'), 'active' => true, 'items' => array_values($companyData)))));
    } elseif ($entityType === 'CONTACT') {
        $contactData = array();
        $entity = CCrmContact::GetByID($entityID);
        if (!$entity) {
            return array('ERROR' => 'Invalid data');
        }
        $entityCompany = isset($entity['COMPANY_ID']) ? CCrmCompany::GetByID($entity['COMPANY_ID']) : null;
        $contactItem = array('ownerEntityType' => 'CONTACT', 'ownerEntityId' => $entityID, 'entityType' => 'CONTACT', 'entityId' => $entityID, 'entityTitle' => CUser::FormatName($fullNameFormat, array('LOGIN' => '', 'NAME' => $entity['NAME'], 'LAST_NAME' => $entity['LAST_NAME'], 'SECOND_NAME' => $entity['SECOND_NAME']), false, false), 'entityDescription' => $entityCompany && isset($entityCompany['TITLE']) ? $entityCompany['TITLE'] : '', 'tabId' => 'contact', 'communications' => array());
        // Try to load entity communications
        if (!CCrmActivity::CheckReadPermission(CCrmOwnerType::ResolveID($entityType), $entityID)) {
            return array('ERROR' => GetMessage('CRM_PERMISSION_DENIED'));
        }
        if ($communicationType !== '') {
            $dbResFields = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => $entityType, 'ELEMENT_ID' => $entityID, 'TYPE_ID' => $communicationType));
            while ($arField = $dbResFields->Fetch()) {
                if (empty($arField['VALUE'])) {
                    continue;
                }
                $comm = array('type' => $communicationType, 'value' => $arField['VALUE']);
                $contactItem['communications'][] = $comm;
            }
        }
        $contactData["{$entityType}_{$entityID}"] = $contactItem;
        return array('DATA' => array('TABS' => array(array('id' => 'contact', 'title' => GetMessage('CRM_COMMUNICATION_TAB_CONTACT'), 'active' => true, 'items' => array_values($contactData)))));
    }
    return array('ERROR' => 'Invalid data');
}
Esempio n. 13
0
 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;
 }
Esempio n. 14
0
        }
        unset($result);
    } else {
        $entity = CCrmContact::GetByID($ownerID, false);
        if (!is_array($entity)) {
            ShowError(GetMessage('M_CRM_COMM_SELECTOR_OWNER_NOT_FOUND'));
            return;
        }
        $info = array('ENTITY_TYPE_ID' => CCrmOwnerType::Contact, 'ENTITY_ID' => $ownerID);
        if (CCrmActivity::PrepareCommunicationInfo($info, $entity)) {
            $item = array('OWNER_ID' => $ownerID, 'OWNER_TYPE_ID' => CCrmOwnerType::Contact, 'TITLE' => $info['TITLE'], 'DESCRIPTION' => $info['DESCRIPTION'], 'IMAGE_URL' => CCrmMobileHelper::PrepareContactImageUrl($entity, array('WIDTH' => 40, 'HEIGHT' => 40)), 'COMMUNICATIONS' => array());
            if ($commType === 'PERSON') {
                $items["CONTACT_{$ownerID}"] =& $item;
                unset($item);
            } else {
                $dbMultiFields = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => CCrmOwnerType::ContactName, 'ELEMENT_ID' => $ownerID, 'TYPE_ID' => $commType));
                while ($multiField = $dbMultiFields->Fetch()) {
                    if (empty($multiField['VALUE'])) {
                        continue;
                    }
                    $item['COMMUNICATIONS'][] = array('TYPE' => $commType, 'VALUE' => $multiField['VALUE']);
                }
                if (!empty($item['COMMUNICATIONS'])) {
                    $items["CONTACT_{$ownerID}"] =& $item;
                }
                unset($item);
            }
        }
    }
} elseif ($ownerTypeID === CCrmOwnerType::Invoice) {
    if (!CCrmActivity::CheckReadPermission(CCrmOwnerType::Invoice, $ownerID)) {
Esempio n. 15
0
        $sBodyEvent .= GetMessage('CRM_SUBSCRIBE_FROM') . ': ' . $arFields['FROM_FIELD'] . "\n\r";
        $sBodyEvent .= GetMessage('CRM_SUBSCRIBE_TO') . ': ' . $arFields['BCC_FIELD'] . "\n\r\n\r";
        $sBodyEvent .= $_POST['COMMENTS'];
        if (!empty($arEntity)) {
            $CCrmEvent->Add(array('ENTITY' => $arEntity, 'EVENT_ID' => 'MESSAGE', 'EVENT_TEXT_1' => $sBodyEvent, 'FILES' => !empty($_FILES['ATTACH']) ? $_FILES['ATTACH'] : array()));
        }
        // Try add event to entity of context
        if ($arResult['FORM_ENTITY_TYPE'] !== $arResult['ENTITY_TYPE'] && $arResult['FORM_ENTITY_ID'] !== $arResult['ENTITY_ID']) {
            $CCrmEvent->Add(array('ENTITY' => array($arResult['FORM_ENTITY_ID'] => array('ENTITY_TYPE' => $arResult['FORM_ENTITY_TYPE'], 'ENTITY_ID' => $arResult['FORM_ENTITY_ID'])), 'EVENT_ID' => 'MESSAGE', 'EVENT_TEXT_1' => $sBodyEvent, 'FILES' => !empty($_FILES['ATTACH']) ? $_FILES['ATTACH'] : array()));
        }
    }
    $arResult['EVENT_PAGE'] = CHTTP::urlAddParams($_POST['EVENT_PAGE'], array('CRM_' . trim($arResult['FORM_ENTITY_TYPE']) . '_' . trim($arParams['FORM_TYPE']) . '_active_tab' => !empty($_REQUEST['TAB_ID']) ? $_REQUEST['TAB_ID'] : 'tab_event'));
}
// check if only one is selected form the entity of a choice on which mailbox to send
$arResult['EMAIL'] = array();
if (count($arResult['ENTITY_ID']) == 1 && $arResult['ENTITY_ID'][0] > 0) {
    $arFilter = array('ENTITY_ID' => $arResult['ENTITY_TYPE'], 'TYPE_ID' => 'EMAIL', 'ELEMENT_ID' => $arResult['ENTITY_ID']);
    $obRes = CCrmFieldMulti::GetList(array('COMPLEX_ID' => 'desc', 'ID' => 'asc'), $arFilter);
    while ($arRow = $obRes->Fetch()) {
        $arResult['EMAIL']['REFERENCE'][] = CCrmFieldMulti::GetEntityNameByComplex($arRow['COMPLEX_ID']) . ': ' . $arRow['VALUE'];
        $arResult['EMAIL']['REFERENCE_ID'][] = $arRow['VALUE'];
    }
    if (isset($arResult['EMAIL']['REFERENCE'])) {
        if (count($arResult['EMAIL']['REFERENCE']) == 0) {
            $arResult['ERROR_MESSAGE'] = GetMessage('CRM_SUBSCRIBE_EMPTY_EMAIL');
        }
    } else {
        $arResult['ERROR_MESSAGE'] = GetMessage('CRM_SUBSCRIBE_EMPTY_EMAIL');
    }
}
$this->IncludeComponentTemplate();
Esempio n. 16
0
     }
     // 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']]);
     }
     $arData[$i] = array('id' => $multi ? 'C_' . $arRes['ID'] : $arRes['ID'], 'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_contact_show'), array('contact_id' => $arRes['ID'])), 'title' => 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), 'desc' => empty($arRes['COMPANY_TITLE']) ? "" : $arRes['COMPANY_TITLE'], 'image' => isset($arFiles[$photoID]['src']) ? $arFiles[$photoID]['src'] : '', 'type' => 'contact');
     if (!empty($advancedInfo)) {
         $arData[$i]['advancedInfo'] = $advancedInfo;
     }
     unset($advancedInfo);
     $contactIndex[$arRes['ID']] =& $arData[$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);
 Header('Content-Type: application/x-javascript; charset=' . LANG_CHARSET);
Esempio n. 17
0
 function __CrmQuickPanelViewLoadMultiFields($entityTypeName, $entityID)
 {
     $dbResult = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => $entityTypeName, 'ELEMENT_ID' => $entityID));
     $result = array();
     while ($arMultiFields = $dbResult->Fetch()) {
         $result[$arMultiFields['TYPE_ID']][$arMultiFields['ID']] = array('VALUE' => $arMultiFields['VALUE'], 'VALUE_TYPE' => $arMultiFields['VALUE_TYPE']);
     }
     return $result;
 }
Esempio n. 18
0
$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_DEAL_SHOW'] = CrmCheckPath('PATH_TO_DEAL_SHOW', $arParams['PATH_TO_DEAL_SHOW'], $APPLICATION->GetCurPage() . '?deal_id=#deal_id#&show');
$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_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_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"]);
global $USER_FIELD_MANAGER;
$CCrmUserType = new CCrmUserType($USER_FIELD_MANAGER, CCrmLead::$sUFEntityID);
$obFields = CCrmLead::GetListEx(array(), array('ID' => $arParams['ELEMENT_ID']));
$arFields = $obFields->GetNext();
$dbResMultiFields = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => 'LEAD', 'ELEMENT_ID' => $arParams['ELEMENT_ID']));
$arFields['FM'] = array();
while ($arMultiFields = $dbResMultiFields->Fetch()) {
    $arFields['FM'][$arMultiFields['TYPE_ID']][$arMultiFields['ID']] = array('VALUE' => $arMultiFields['VALUE'], 'VALUE_TYPE' => $arMultiFields['VALUE_TYPE']);
}
$fullNameFormat = $arParams['NAME_TEMPLATE'];
$arFields['~ASSIGNED_BY_FORMATTED_NAME'] = intval($arFields['~ASSIGNED_BY_ID']) > 0 ? CUser::FormatName($fullNameFormat, array('LOGIN' => $arFields['~ASSIGNED_BY_LOGIN'], 'NAME' => $arFields['~ASSIGNED_BY_NAME'], 'LAST_NAME' => $arFields['~ASSIGNED_BY_LAST_NAME'], 'SECOND_NAME' => $arFields['~ASSIGNED_BY_SECOND_NAME']), true, false) : GetMessage('RESPONSIBLE_NOT_ASSIGNED');
$arFields['ASSIGNED_BY_FORMATTED_NAME'] = htmlspecialcharsbx($arFields['~ASSIGNED_BY_FORMATTED_NAME']);
$arFields['~CREATED_BY_FORMATTED_NAME'] = CUser::FormatName($fullNameFormat, array('LOGIN' => $arFields['~CREATED_BY_LOGIN'], 'NAME' => $arFields['~CREATED_BY_NAME'], 'LAST_NAME' => $arFields['~CREATED_BY_LAST_NAME'], 'SECOND_NAME' => $arFields['~CREATED_BY_SECOND_NAME']), true, false);
$arFields['CREATED_BY_FORMATTED_NAME'] = htmlspecialcharsbx($arFields['~CREATED_BY_FORMATTED_NAME']);
$arFields['PATH_TO_USER_CREATOR'] = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_USER_PROFILE'], array('user_id' => $arFields['ASSIGNED_BY']));
$arFields['~MODIFY_BY_FORMATTED_NAME'] = CUser::FormatName($fullNameFormat, array('LOGIN' => $arFields['~MODIFY_BY_LOGIN'], 'NAME' => $arFields['~MODIFY_BY_NAME'], 'LAST_NAME' => $arFields['~MODIFY_BY_LAST_NAME'], 'SECOND_NAME' => $arFields['~MODIFY_BY_SECOND_NAME']), true, false);
$arFields['MODIFY_BY_FORMATTED_NAME'] = htmlspecialcharsbx($arFields['~MODIFY_BY_FORMATTED_NAME']);
$arFields['PATH_TO_USER_MODIFIER'] = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_USER_PROFILE'], array('user_id' => $arFields['MODIFY_BY']));
$name = isset($arFields['~NAME']) ? $arFields['~NAME'] : '';
$secondName = isset($arFields['~SECOND_NAME']) ? $arFields['~SECOND_NAME'] : '';
Esempio n. 19
0
$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_DEAL_SHOW'] = CrmCheckPath('PATH_TO_DEAL_SHOW', $arParams['PATH_TO_DEAL_SHOW'], $APPLICATION->GetCurPage() . '?deal_id=#deal_id#&show');
$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_USER_PROFILE'] = CrmCheckPath('PATH_TO_USER_PROFILE', $arParams['PATH_TO_USER_PROFILE'], '/company/personal/user/#user_id#/');
$arParams['NAME_TEMPLATE'] = empty($arParams['NAME_TEMPLATE']) ? CSite::GetNameFormat(false) : str_replace(array("#NOBR#", "#/NOBR#"), array("", ""), $arParams["NAME_TEMPLATE"]);
global $USER_FIELD_MANAGER;
$CCrmUserType = new CCrmUserType($USER_FIELD_MANAGER, CCrmCompany::$sUFEntityID);
$bEdit = false;
$arResult['ELEMENT_ID'] = $arParams['ELEMENT_ID'] = (int) $arParams['ELEMENT_ID'];
$obFields = CCrmCompany::GetListEx(array(), array('ID' => $arParams['ELEMENT_ID']));
$arFields = $obFields->GetNext();
if (!is_array($arFields)) {
    LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_COMPANY_LIST'], array()));
}
$arFields['FM'] = array();
$dbResMultiFields = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => 'COMPANY', 'ELEMENT_ID' => $arResult['ELEMENT_ID']));
while ($arMultiFields = $dbResMultiFields->Fetch()) {
    $arFields['FM'][$arMultiFields['TYPE_ID']][$arMultiFields['ID']] = array('VALUE' => $arMultiFields['VALUE'], 'VALUE_TYPE' => $arMultiFields['VALUE_TYPE']);
}
$fullNameFormat = $arParams['NAME_TEMPLATE'];
$arFields['~ASSIGNED_BY_FORMATTED_NAME'] = intval($arFields['~ASSIGNED_BY_ID']) > 0 ? CUser::FormatName($fullNameFormat, array('LOGIN' => $arFields['~ASSIGNED_BY_LOGIN'], 'NAME' => $arFields['~ASSIGNED_BY_NAME'], 'LAST_NAME' => $arFields['~ASSIGNED_BY_LAST_NAME'], 'SECOND_NAME' => $arFields['~ASSIGNED_BY_SECOND_NAME']), true, false) : GetMessage('RESPONSIBLE_NOT_ASSIGNED');
$arFields['ASSIGNED_BY_FORMATTED_NAME'] = htmlspecialcharsbx($arFields['~ASSIGNED_BY_FORMATTED_NAME']);
$arFields['~CREATED_BY_FORMATTED_NAME'] = CUser::FormatName($fullNameFormat, array('LOGIN' => $arFields['~CREATED_BY_LOGIN'], 'NAME' => $arFields['~CREATED_BY_NAME'], 'LAST_NAME' => $arFields['~CREATED_BY_LAST_NAME'], 'SECOND_NAME' => $arFields['~CREATED_BY_SECOND_NAME']), true, false);
$arFields['CREATED_BY_FORMATTED_NAME'] = htmlspecialcharsbx($arFields['~CREATED_BY_FORMATTED_NAME']);
$arFields['PATH_TO_USER_CREATOR'] = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_USER_PROFILE'], array('user_id' => $arFields['ASSIGNED_BY']));
$arFields['~MODIFY_BY_FORMATTED_NAME'] = CUser::FormatName($fullNameFormat, array('LOGIN' => $arFields['~MODIFY_BY_LOGIN'], 'NAME' => $arFields['~MODIFY_BY_NAME'], 'LAST_NAME' => $arFields['~MODIFY_BY_LAST_NAME'], 'SECOND_NAME' => $arFields['~MODIFY_BY_SECOND_NAME']), true, false);
$arFields['MODIFY_BY_FORMATTED_NAME'] = htmlspecialcharsbx($arFields['~MODIFY_BY_FORMATTED_NAME']);
$arFields['PATH_TO_USER_MODIFIER'] = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_USER_PROFILE'], array('user_id' => $arFields['MODIFY_BY']));
$arResult['ELEMENT'] = $arFields;
unset($arFields);
$arResult['FORM_ID'] = 'CRM_COMPANY_SHOW_V12';
Esempio n. 20
0
    die;
}
$arResult['ENTITY_ID'] = $arParams['ENTITY_ID'];
$arResult['ELEMENT_ID'] = IntVal($arParams['ELEMENT_ID']);
$arResult['TYPE_ID'] = $arParams['TYPE_ID'];
$arResult['READ_ONLY'] = isset($arParams['READ_ONLY']) ? $arParams['READ_ONLY'] : false;
$arResult['VALUES'] = array();
if (isset($arParams['VALUES'][$arParams['TYPE_ID']]) && !empty($arParams['VALUES'][$arParams['TYPE_ID']])) {
    foreach ($arParams['VALUES'][$arParams['TYPE_ID']] as $ID => $arValue) {
        if (substr($ID, 0, 1) == 'n' && $arValue['VALUE'] == '') {
            continue;
        }
        $arResult['VALUES'][$ID]['ID'] = $ID;
        $arResult['VALUES'][$ID]['VALUE'] = $arValue['VALUE'];
        $arResult['VALUES'][$ID]['VALUE_TYPE'] = $arValue['VALUE_TYPE'];
        $arResult['VALUES'][$ID]['COMPLEX_ID'] = $arParams['TYPE_ID'] . '_' . $arValue['VALUE_TYPE'];
        $arResult['VALUES'][$ID]['COMPLEX_NAME'] = CCrmFieldMulti::GetEntityNameByComplex($arParams['TYPE_ID'] . '_' . $arValue['VALUE_TYPE']);
        $arResult['VALUES'][$ID]['TEMPLATE'] = CCrmFieldMulti::GetTemplateByComplex($arParams['TYPE_ID'] . '_' . $arValue['VALUE_TYPE'], $arValue['VALUE']);
    }
} elseif ($arResult['ELEMENT_ID'] > 0) {
    $res = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => $arResult['ENTITY_ID'], 'ELEMENT_ID' => $arResult['ELEMENT_ID'], 'TYPE_ID' => $arResult['TYPE_ID']));
    while ($ar = $res->Fetch()) {
        $arResult['VALUES'][$ar['ID']]['ID'] = $ar['ID'];
        $arResult['VALUES'][$ar['ID']]['VALUE'] = $ar['VALUE'];
        $arResult['VALUES'][$ar['ID']]['VALUE_TYPE'] = $ar['VALUE_TYPE'];
        $arResult['VALUES'][$ar['ID']]['COMPLEX_ID'] = $ar['COMPLEX_ID'];
        $arResult['VALUES'][$ar['ID']]['COMPLEX_NAME'] = CCrmFieldMulti::GetEntityNameByComplex($ar['COMPLEX_ID']);
        $arResult['VALUES'][$ar['ID']]['TEMPLATE'] = CCrmFieldMulti::GetTemplateByComplex($ar['COMPLEX_ID'], $ar['VALUE']);
    }
}
$this->IncludeComponentTemplate();
 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;
 }
Esempio n. 22
0
$_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);
    $strCard = '
<div class="bx-user-info-data-cont-video bx-user-info-fields" id="bx_user_info_data_cont_1">
	<div class="bx-user-info-data-name">
		<a href="' . $arQuote['PATH_TO_QUOTE_SHOW'] . '">' . htmlspecialcharsbx(empty($arQuote['TITLE']) ? $arQuote['QUOTE_NUMBER'] : $arQuote['QUOTE_NUMBER'] . ' - ' . $arQuote['TITLE']) . '</a>
	</div>
Esempio n. 23
0
 public static function GetDefaultCommunicationValue($ownerTypeID, $ownerID, $commType)
 {
     $dbMultiFields = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => CCrmOwnerType::ResolveName($ownerTypeID), 'ELEMENT_ID' => $ownerID, 'TYPE_ID' => $commType));
     $multiField = $dbMultiFields->Fetch();
     return is_array($multiField) ? $multiField['VALUE'] : '';
 }
Esempio n. 24
0
if ($contactID > 0) {
    $arFields['CONTACT_FM'] = array();
    $dbMultiFields = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => 'CONTACT', 'ELEMENT_ID' => $contactID));
    if ($dbMultiFields) {
        while ($multiFields = $dbMultiFields->Fetch()) {
            $arFields['CONTACT_FM'][$multiFields['TYPE_ID']][] = array('VALUE' => $multiFields['VALUE'], 'VALUE_TYPE' => $multiFields['VALUE_TYPE']);
        }
    }
    $arResult['CONTACT_CALLTO'] = CCrmMobileHelper::PrepareCalltoParams(array('COMMUNICATION_LIST_URL_TEMPLATE' => $arParams['COMMUNICATION_LIST_URL_TEMPLATE'], 'ENTITY_TYPE_ID' => CCrmOwnerType::Contact, 'ENTITY_ID' => $contactID, 'FM' => $arFields['CONTACT_FM']));
    $arResult['CONTACT_MAILTO'] = CCrmMobileHelper::PrepareMailtoParams(array('COMMUNICATION_LIST_URL_TEMPLATE' => $arParams['COMMUNICATION_LIST_URL_TEMPLATE'], 'ENTITY_TYPE_ID' => CCrmOwnerType::Contact, 'ENTITY_ID' => $contactID, 'FM' => $arFields['CONTACT_FM']));
    $arFields['CONTACT_CALL_EDIT_URL'] = $arParams['ACTIVITY_EDIT_URL_TEMPLATE'] !== '' ? CCrmUrlUtil::AddUrlParams(CComponentEngine::makePathFromTemplate($arParams['ACTIVITY_EDIT_URL_TEMPLATE'], array('owner_type' => CCrmOwnerType::DealName, 'owner_id' => $entityID, 'type_id' => CCrmActivityType::Call)), array('comm' => strtolower(CCrmOwnerType::ContactName) . '_' . $contactID)) : '';
    $arFields['CONTACT_MEETING_EDIT_URL'] = $arParams['ACTIVITY_EDIT_URL_TEMPLATE'] !== '' ? CCrmUrlUtil::AddUrlParams(CComponentEngine::makePathFromTemplate($arParams['ACTIVITY_EDIT_URL_TEMPLATE'], array('owner_type' => CCrmOwnerType::DealName, 'owner_id' => $entityID, 'type_id' => CCrmActivityType::Meeting)), array('comm' => strtolower(CCrmOwnerType::ContactName) . '_' . $contactID)) : '';
    $arFields['CONTACT_EMAIL_EDIT_URL'] = $arParams['ACTIVITY_EDIT_URL_TEMPLATE'] !== '' ? CCrmUrlUtil::AddUrlParams(CComponentEngine::makePathFromTemplate($arParams['ACTIVITY_EDIT_URL_TEMPLATE'], array('owner_type' => CCrmOwnerType::DealName, 'owner_id' => $entityID, 'type_id' => CCrmActivityType::Email)), array('comm' => strtolower(CCrmOwnerType::ContactName) . '_' . $contactID)) : '';
} elseif ($companyID > 0) {
    $arFields['COMPANY_FM'] = array();
    $dbMultiFields = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => 'COMPANY', 'ELEMENT_ID' => $companyID));
    if ($dbMultiFields) {
        while ($multiFields = $dbMultiFields->Fetch()) {
            $arFields['COMPANY_FM'][$multiFields['TYPE_ID']][] = array('VALUE' => $multiFields['VALUE'], 'VALUE_TYPE' => $multiFields['VALUE_TYPE']);
        }
    }
    $arResult['COMPANY_CALLTO'] = CCrmMobileHelper::PrepareCalltoParams(array('COMMUNICATION_LIST_URL_TEMPLATE' => $arParams['COMMUNICATION_LIST_URL_TEMPLATE'], 'ENTITY_TYPE_ID' => CCrmOwnerType::Company, 'ENTITY_ID' => $companyID, 'FM' => $arFields['COMPANY_FM']));
    $arResult['COMPANY_MAILTO'] = CCrmMobileHelper::PrepareMailtoParams(array('COMMUNICATION_LIST_URL_TEMPLATE' => $arParams['COMMUNICATION_LIST_URL_TEMPLATE'], 'ENTITY_TYPE_ID' => CCrmOwnerType::Company, 'ENTITY_ID' => $companyID, 'FM' => $arFields['COMPANY_FM']));
    $arFields['COMPANY_CALL_EDIT_URL'] = $arParams['ACTIVITY_EDIT_URL_TEMPLATE'] !== '' ? CCrmUrlUtil::AddUrlParams(CComponentEngine::makePathFromTemplate($arParams['ACTIVITY_EDIT_URL_TEMPLATE'], array('owner_type' => CCrmOwnerType::DealName, 'owner_id' => $entityID, 'type_id' => CCrmActivityType::Call)), array('comm' => strtolower(CCrmOwnerType::CompanyName) . '_' . $companyID)) : '';
    $arFields['COMPANY_MEETING_EDIT_URL'] = $arParams['ACTIVITY_EDIT_URL_TEMPLATE'] !== '' ? CCrmUrlUtil::AddUrlParams(CComponentEngine::makePathFromTemplate($arParams['ACTIVITY_EDIT_URL_TEMPLATE'], array('owner_type' => CCrmOwnerType::DealName, 'owner_id' => $entityID, 'type_id' => CCrmActivityType::Meeting)), array('comm' => strtolower(CCrmOwnerType::CompanyName) . '_' . $companyID)) : '';
    $arFields['COMPANY_EMAIL_EDIT_URL'] = $arParams['ACTIVITY_EDIT_URL_TEMPLATE'] !== '' ? CCrmUrlUtil::AddUrlParams(CComponentEngine::makePathFromTemplate($arParams['ACTIVITY_EDIT_URL_TEMPLATE'], array('owner_type' => CCrmOwnerType::DealName, 'owner_id' => $entityID, 'type_id' => CCrmActivityType::Email)), array('comm' => strtolower(CCrmOwnerType::CompanyName) . '_' . $companyID)) : '';
}
$arFields['CONTACT_SHOW_URL'] = $contactID > 0 ? CComponentEngine::makePathFromTemplate($arParams['CONTACT_SHOW_URL_TEMPLATE'], array('contact_id' => $contactID)) : '';
$arFields['COMPANY_SHOW_URL'] = $companyID > 0 ? CComponentEngine::makePathFromTemplate($arParams['COMPANY_SHOW_URL_TEMPLATE'], array('company_id' => $companyID)) : '';
$arFields['~STAGE_TEXT'] = isset($arFields['~STAGE_ID']) && isset($arResult['STAGE_LIST'][$arFields['~STAGE_ID']]) ? $arResult['STAGE_LIST'][$arFields['~STAGE_ID']] : '';
$arFields['STAGE_TEXT'] = htmlspecialcharsbx($arFields['~STAGE_TEXT']);
Esempio n. 25
0
     } else {
         $dupIDs = array_intersect($dupIDs, $dup->getEntityIDsByType(CCrmOwnerType::Lead));
     }
 }
 unset($dup);
 if (!empty($dupIDs)) {
     $isDuplicate = true;
     if ($dupCtrlType !== 'SKIP') {
         $dupItems = array();
         $dbResult = CCrmLead::GetListEx(array(), array('@ID' => $dupIDs, 'CHECK_PERMISSIONS' => 'Y'), false, false, array('*', 'UF_*'));
         $loadMultiFields = !empty($mappedMultiFields);
         if (is_object($dbResult)) {
             while ($fields = $dbResult->Fetch()) {
                 if ($loadMultiFields) {
                     $fields['FM'] = array();
                     $dbMultiFields = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => CCrmOwnerType::LeadName, 'ELEMENT_ID' => $fields['ID']));
                     while ($multiFields = $dbMultiFields->Fetch()) {
                         $fields['FM'][$multiFields['TYPE_ID']][$multiFields['ID']] = array('VALUE' => $multiFields['VALUE'], 'VALUE_TYPE' => $multiFields['VALUE_TYPE']);
                     }
                 }
                 $dupItems[] =& $fields;
                 unset($fields);
             }
         }
         //Preparing multifieds
         $multiFieldValues = array();
         $multiFields = isset($arLead['FM']) ? $arLead['FM'] : array();
         if (!empty($multiFields)) {
             foreach ($mappedMultiFields as $type => &$valueTypes) {
                 if (!isset($multiFields[$type])) {
                     continue;
Esempio n. 26
0
 public static function RebuildDuplicateIndex($IDs)
 {
     if (!is_array($IDs)) {
         $IDs = array($IDs);
     }
     $dbResult = self::GetListEx(array(), array('@ID' => $IDs, 'CHECK_PERMISSIONS' => 'N'), false, false, array('ID', 'TITLE', 'COMPANY_TITLE', 'NAME', 'SECOND_NAME', 'LAST_NAME', 'ADDRESS', 'DATE_MODIFY'));
     if (!is_object($dbResult)) {
         return;
     }
     $emails = array();
     $phones = array();
     $dbResultMultiFields = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('=ENTITY_ID' => CCrmOwnerType::LeadName, '@TYPE_ID' => array('EMAIL', 'PHONE'), '@ELEMENT_ID' => $IDs));
     if (is_object($dbResultMultiFields)) {
         while ($multiFields = $dbResultMultiFields->Fetch()) {
             $elementID = isset($multiFields['ELEMENT_ID']) ? $multiFields['ELEMENT_ID'] : '';
             $typeID = isset($multiFields['TYPE_ID']) ? $multiFields['TYPE_ID'] : '';
             $value = isset($multiFields['VALUE']) ? $multiFields['VALUE'] : '';
             if ($elementID === '' || $typeID === '' || $value === '') {
                 continue;
             }
             if ($typeID === 'EMAIL') {
                 if (!isset($emails[$elementID])) {
                     $emails[$elementID] = array();
                 }
                 $emails[$elementID][] = $value;
             } elseif ($typeID === 'PHONE') {
                 if (!isset($phones[$elementID])) {
                     $phones[$elementID] = array();
                 }
                 $phones[$elementID][] = $value;
             }
         }
     }
     while ($fields = $dbResult->Fetch()) {
         $ID = intval($fields['ID']);
         $companyTitle = isset($fields['COMPANY_TITLE']) ? $fields['COMPANY_TITLE'] : '';
         if ($companyTitle !== '') {
             \Bitrix\Crm\Integrity\DuplicateOrganizationCriterion::register(CCrmOwnerType::Lead, $ID, $companyTitle);
         }
         $lastName = isset($fields['LAST_NAME']) ? $fields['LAST_NAME'] : '';
         if ($lastName !== '') {
             \Bitrix\Crm\Integrity\DuplicatePersonCriterion::register(CCrmOwnerType::Lead, $ID, $lastName, isset($fields['NAME']) ? $fields['NAME'] : '', isset($fields['SECOND_NAME']) ? $fields['SECOND_NAME'] : '');
         }
         $key = strval($ID);
         if (isset($emails[$key])) {
             \Bitrix\Crm\Integrity\DuplicateCommunicationCriterion::register(CCrmOwnerType::Lead, $ID, 'EMAIL', $emails[$key]);
         }
         if (isset($phones[$key])) {
             \Bitrix\Crm\Integrity\DuplicateCommunicationCriterion::register(CCrmOwnerType::Lead, $ID, 'PHONE', $phones[$key]);
         }
         \Bitrix\Crm\Integrity\DuplicateEntityRanking::registerEntityStatistics(CCrmOwnerType::Lead, $ID, $fields);
     }
 }
Esempio n. 27
0
     $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'])) {
         unset($arFields['LEAD_ID']);
     }
     if (isset($arFields['~LEAD_ID'])) {
         unset($arFields['~LEAD_ID']);
     }
     $res = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => 'QUOTE', 'ELEMENT_ID' => $arParams['ELEMENT_ID']));
     $arResult['ELEMENT']['FM'] = array();
     while ($ar = $res->Fetch()) {
         $arFields['FM'][$ar['TYPE_ID']]['n0' . $ar['ID']] = array('VALUE' => $ar['VALUE'], 'VALUE_TYPE' => $ar['VALUE_TYPE']);
         $arFields['FM'][$ar['TYPE_ID']]['n0' . $ar['ID']] = array('VALUE' => $ar['VALUE'], 'VALUE_TYPE' => $ar['VALUE_TYPE']);
     }
     // read product row settings
     $productRowSettings = array();
     $arQuoteProductRowSettings = CCrmProductRow::LoadSettings(CCrmQuote::OWNER_TYPE, $arParams['ELEMENT_ID']);
     if (is_array($arQuoteProductRowSettings)) {
         $productRowSettings['ENABLE_DISCOUNT'] = isset($arQuoteProductRowSettings['ENABLE_DISCOUNT']) ? $arQuoteProductRowSettings['ENABLE_DISCOUNT'] : false;
         $productRowSettings['ENABLE_TAX'] = isset($arQuoteProductRowSettings['ENABLE_TAX']) ? $arQuoteProductRowSettings['ENABLE_TAX'] : false;
     }
     unset($arQuoteProductRowSettings);
 }
 if (is_array($arFields)) {
Esempio n. 28
0
 protected function getEntityMultiFields($entityID, $roleID)
 {
     $results = array();
     $dbResult = \CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => $this->getEntityTypeName(), 'ELEMENT_ID' => $entityID));
     if (is_object($dbResult)) {
         while ($fields = $dbResult->Fetch()) {
             $results[$fields['TYPE_ID']][$fields['ID']] = array('VALUE' => $fields['VALUE'], 'VALUE_TYPE' => $fields['VALUE_TYPE']);
         }
     }
     return $results;
 }
 private function SaveOrderDataCompany($arOrder)
 {
     if (!isset($arOrder["CONTRACTOR"]) || !is_array($arOrder["CONTRACTOR"])) {
         return false;
     }
     $companyId = 0;
     $companyXmlId = $arOrder["CONTRACTOR"]["ID"];
     if (isset($arOrder["CONTRACTOR"]["INN"]) && $arOrder["CONTRACTOR"]["INN"] != "") {
         $companyXmlId .= "|" . $arOrder["CONTRACTOR"]["INN"];
     }
     $dbCompany = CCrmCompany::GetList(array(), array("ORIGINATOR_ID" => $this->externalSaleId, "ORIGIN_ID" => $companyXmlId, "CHECK_PERMISSIONS" => "N"));
     if ($arCompany = $dbCompany->Fetch()) {
         $companyId = $arCompany["ID"];
     }
     $arFields = array('ORIGINATOR_ID' => $this->externalSaleId, 'ORIGIN_ID' => $companyXmlId, 'COMPANY_TYPE' => 'CUSTOMER');
     if (isset($arOrder["CONTRACTOR"]["OFFICIAL_NAME"]) && $arOrder["CONTRACTOR"]["OFFICIAL_NAME"] != "") {
         $arFields['TITLE'] = $arOrder["CONTRACTOR"]["OFFICIAL_NAME"];
     } elseif (isset($arOrder["CONTRACTOR"]["NAME"]) && $arOrder["CONTRACTOR"]["NAME"] != "") {
         $arFields['TITLE'] = $arOrder["CONTRACTOR"]["NAME"];
     }
     if (is_array($arOrder["CONTRACTOR"]["ADDRESS"])) {
         foreach ($arOrder["CONTRACTOR"]["ADDRESS"] as $key => $val) {
             if ($key == "VIEW") {
                 continue;
             }
             if (!empty($arFields["ADDRESS"])) {
                 $arFields["ADDRESS"] .= ", ";
             }
             $arFields["ADDRESS"] .= $val;
         }
         if (isset($arOrder["CONTRACTOR"]["ADDRESS"]["VIEW"])) {
             if (!empty($arFields["ADDRESS"])) {
                 $arFields["ADDRESS"] .= "\n";
             }
             $arFields["ADDRESS"] .= $arOrder["CONTRACTOR"]["ADDRESS"]["VIEW"];
         }
     }
     if (is_array($arOrder["CONTRACTOR"]["LEGAL_ADDRESS"])) {
         foreach ($arOrder["CONTRACTOR"]["LEGAL_ADDRESS"] as $key => $val) {
             if ($key == "VIEW") {
                 continue;
             }
             if (!empty($arFields["ADDRESS_LEGAL"])) {
                 $arFields["ADDRESS_LEGAL"] .= ", ";
             }
             $arFields["ADDRESS_LEGAL"] .= $val;
         }
         if (isset($arOrder["CONTRACTOR"]["LEGAL_ADDRESS"]["VIEW"])) {
             if (!empty($arFields["ADDRESS_LEGAL"])) {
                 $arFields["ADDRESS_LEGAL"] .= "\n";
             }
             $arFields["ADDRESS_LEGAL"] .= $arOrder["CONTRACTOR"]["LEGAL_ADDRESS"]["VIEW"];
         }
     }
     if (is_array($arOrder["CONTRACTOR"]["CONTACTS"])) {
         $arFields["FM"] = array();
         if ($companyId > 0) {
             $dbCrmFieldMulti = CCrmFieldMulti::GetList(array(), array('ENTITY_ID' => 'COMPANY', 'ELEMENT_ID' => $companyId, "CHECK_PERMISSIONS" => "N"));
             while ($arCrmFieldMulti = $dbCrmFieldMulti->Fetch()) {
                 $arFields["FM"][$arCrmFieldMulti["TYPE_ID"]][$arCrmFieldMulti["ID"]] = array("VALUE_TYPE" => $arCrmFieldMulti["VALUE_TYPE"], "VALUE" => $arCrmFieldMulti["VALUE"]);
             }
         }
         $arMapTmp = array("MAIL" => "EMAIL", "E-MAIL" => "EMAIL", "WORKPHONE" => "PHONE");
         $arInc = array();
         foreach ($arOrder["CONTRACTOR"]["CONTACTS"] as $val) {
             $t = strtoupper(preg_replace("/\\s/", "", $val["TYPE"]));
             if (!isset($arMapTmp[$t])) {
                 continue;
             }
             $bFound = false;
             $tNew = $arMapTmp[$t];
             if (isset($arFields["FM"][$tNew]) && is_array($arFields["FM"][$tNew])) {
                 if (count($arFields["FM"][$tNew]) >= 50) {
                     //Disable adding new communication after threshold is exceeded
                     $bFound = true;
                 } else {
                     foreach ($arFields["FM"][$tNew] as $k => $v) {
                         if ($v["VALUE"] == $val["VALUE"]) {
                             $bFound = true;
                             break;
                         }
                     }
                 }
             }
             if (!$bFound) {
                 $arInc[$tNew]++;
                 $arFields["FM"][$tNew]["n" . $arInc[$tNew]] = array("VALUE_TYPE" => "WORK", "VALUE" => $val["VALUE"]);
             }
         }
     }
     $arMapTmp = array("INN", "KPP", "EGRPO", "OKVED", "OKDP", "OKOPF", "OKFC", "OKPO");
     foreach ($arMapTmp as $m) {
         if (isset($arOrder["CONTRACTOR"][$m])) {
             $arFields["BANKING_DETAILS"] .= $m . ": " . $arOrder["CONTRACTOR"][$m] . "\n";
         }
     }
     if (is_array($arOrder["CONTRACTOR"]["BANK_ADDRESS"])) {
         foreach ($arOrder["CONTRACTOR"]["BANK_ADDRESS"] as $key => $val) {
             if (!empty($arFields["BANKING_DETAILS"])) {
                 $arFields["BANKING_DETAILS"] .= ", ";
             }
             $arFields["BANKING_DETAILS"] .= $val;
         }
     }
     $newCompany = $companyId == 0;
     $obj = new CCrmCompany(false);
     if ($companyId == 0) {
         if (!isset($arFields['TITLE']) || strlen($arFields['TITLE']) <= 0) {
             $arFields['TITLE'] = $companyXmlId;
         }
         $res = $obj->Add($arFields, true, array('DISABLE_USER_FIELD_CHECK' => true));
         if ($res > 0) {
             $companyId = (int) $res;
             $this->arImportResult->numberOfCreatedCompanies++;
         }
     } else {
         $res = $obj->Update($companyId, $arFields, true, true, array('DISABLE_USER_FIELD_CHECK' => true));
         if ($res) {
             $this->arImportResult->numberOfUpdatedCompanies++;
         }
     }
     if (!$res) {
         if (($ex = $GLOBALS["APPLICATION"]->GetException()) !== false) {
             $this->AddError($ex->GetID(), $ex->GetString());
         } else {
             $this->AddError("CCA", "Company creation error");
         }
         if (!empty($obj->LAST_ERROR)) {
             $this->AddError("CCA", $obj->LAST_ERROR);
         }
         return false;
     }
     return array($companyId, $newCompany);
 }
Esempio n. 30
0
}
$arResult = array();
$_GET['USER_ID'] = preg_replace('/^(CONTACT|COMPANY|LEAD|DEAL)_/i' . BX_UTF_PCRE_MODIFIER, '', $_GET['USER_ID']);
$iContactId = (int) $_GET['USER_ID'];
if ($iContactId > 0) {
    __IncludeLang(dirname(__FILE__) . '/lang/' . LANGUAGE_ID . '/' . basename(__FILE__));
    $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');
    $arResult['TYPE_LIST'] = CCrmStatus::GetStatusListEx('CONTACT_TYPE');
    $obRes = CCrmContact::GetList(array(), array('ID' => $iContactId));
    $arContact = $obRes->Fetch();
    if ($arContact == false) {
        return;
    }
    $res = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => 'CONTACT', 'ELEMENT_ID' => $iContactId));
    while ($ar = $res->Fetch()) {
        if (empty($arContact[$ar['COMPLEX_ID']])) {
            $arContact[$ar['COMPLEX_ID']] = CCrmFieldMulti::GetTemplateByComplex($ar['COMPLEX_ID'], $ar['VALUE']);
        }
    }
    $arContact['PATH_TO_CONTACT_SHOW'] = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_CONTACT_SHOW'], array('contact_id' => $iContactId));
    $arContact['PATH_TO_CONTACT_EDIT'] = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_CONTACT_EDIT'], array('contact_id' => $iContactId));
    $arContact['PATH_TO_COMPANY_SHOW'] = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_COMPANY_SHOW'], array('company_id' => $arContact['COMPANY_ID']));
    $strCard = '
<div class="bx-user-info-data-cont-video  bx-user-info-fields" id="bx_user_info_data_cont_1">
	<div class="bx-user-info-data-name ">
		<a href="' . $arContact['PATH_TO_CONTACT_SHOW'] . '">' . htmlspecialcharsbx($arContact['FULL_NAME']) . '</a>
	</div>
	<div class="bx-user-info-data-info">';
    if (!empty($arContact['TYPE_ID'])) {