private static function loadBulk($entityTypeID, array &$entityIDs, array &$itemMap, array $options = null) { /** @var DuplicateEntityRanking[] $itemMap */ if ($entityTypeID !== \CCrmOwnerType::Contact && $entityTypeID !== \CCrmOwnerType::Company && $entityTypeID !== \CCrmOwnerType::Lead) { return; } if (!is_array($options)) { $options = array(); } $checkPermissions = isset($options['CHECK_PERMISSIONS']) ? (bool) $options['CHECK_PERMISSIONS'] : false; $userID = isset($options['USER_ID']) ? (int) $options['USER_ID'] : 0; $permissions = $checkPermissions ? \CCrmPerms::GetUserPermissions($userID) : null; $limit = isset($options['LIMIT']) ? (int) $options['LIMIT'] : 3000; if ($limit <= 0) { $limit = 3000; } $length = count($entityIDs); if ($length === 0) { return; } while ($length > 0) { if ($length <= $limit) { $ids = $entityIDs; unset($entityIDs); $entityIDs = array(); } else { $ids = array_splice($entityIDs, 0, $limit); } $length = count($entityIDs); if (empty($ids)) { continue; } if ($entityTypeID === \CCrmOwnerType::Lead) { $dbResult = Entity\DuplicateEntityStatisticsTable::getList(array('select' => array('ENTITY_ID', 'RANKING_DATA'), 'filter' => array('ENTITY_TYPE_ID' => \CCrmOwnerType::Lead, 'ENTITY_ID' => $ids))); while ($fields = $dbResult->fetch()) { $entityID = intval($fields['ENTITY_ID']); $key = "{$entityTypeID}_{$entityID}"; if (!isset($itemMap[$key])) { continue; } if (isset($fields['RANKING_DATA']) && $fields['RANKING_DATA'] !== '') { $data = unserialize($fields['RANKING_DATA']); /** @var DuplicateEntityRanking $ranking */ $ranking = $itemMap[$key]; $ranking->lastChanged = isset($data['LAST_CHANGED']) ? $data['LAST_CHANGED'] : 0; $ranking->completeness = isset($data['COMPLETENESS']) ? $data['COMPLETENESS'] : 0; if ($checkPermissions) { $ranking->editable = \CCrmLead::CheckUpdatePermission($entityID, $permissions); $ranking->deleteable = \CCrmLead::CheckDeletePermission($entityID, $permissions); } } } } else { $query = new Main\Entity\Query(Entity\DuplicateEntityStatisticsTable::getEntity()); $query->addSelect('ENTITY_ID'); $query->addSelect('RANKING_DATA'); $query->addFilter('ENTITY_ID', $ids); $query->addFilter('ENTITY_TYPE_ID', $entityTypeID); if ($entityTypeID === \CCrmOwnerType::Contact) { $subQuery = new Main\Entity\Query(DealTable::getEntity()); $subQuery->addSelect('CONTACT_ID'); $subQuery->addFilter('CONTACT_ID', $ids); $subQuery->addSelect('QTY'); $subQuery->registerRuntimeField('', new Main\Entity\ExpressionField('QTY', 'COUNT(*)')); $referenceField = new Main\Entity\ReferenceField('D', Main\Entity\Base::getInstanceByQuery($subQuery), array('=this.ENTITY_ID' => 'ref.CONTACT_ID'), array('join_type' => 'LEFT')); } else { $subQuery = new Main\Entity\Query(DealTable::getEntity()); $subQuery->addSelect('COMPANY_ID'); $subQuery->addFilter('COMPANY_ID', $ids); $subQuery->addSelect('QTY'); $subQuery->registerRuntimeField('', new Main\Entity\ExpressionField('QTY', 'COUNT(*)')); $referenceField = new Main\Entity\ReferenceField('D', Main\Entity\Base::getInstanceByQuery($subQuery), array('=this.ENTITY_ID' => 'ref.COMPANY_ID'), array('join_type' => 'LEFT')); } $query->registerRuntimeField('', $referenceField); $query->addSelect('D.QTY', 'QTY'); $dbResult = $query->exec(); while ($fields = $dbResult->fetch()) { $entityID = intval($fields['ENTITY_ID']); $key = "{$entityTypeID}_{$entityID}"; if (!isset($itemMap[$key])) { continue; } $itemMap[$key]->referenceCount = isset($fields['QTY']) ? intval($fields['QTY']) : 0; if (isset($fields['RANKING_DATA']) && $fields['RANKING_DATA'] !== '') { $data = unserialize($fields['RANKING_DATA']); /** @var DuplicateEntityRanking $ranking */ $ranking = $itemMap[$key]; $ranking->lastChanged = isset($data['LAST_CHANGED']) ? $data['LAST_CHANGED'] : 0; $ranking->completeness = isset($data['COMPLETENESS']) ? $data['COMPLETENESS'] : 0; if ($checkPermissions) { if ($entityTypeID === \CCrmOwnerType::Contact) { $ranking->editable = \CCrmContact::CheckUpdatePermission($entityID, $permissions); $ranking->deleteable = \CCrmContact::CheckDeletePermission($entityID, $permissions); } else { $ranking->editable = \CCrmCompany::CheckUpdatePermission($entityID, $permissions); $ranking->deleteable = \CCrmCompany::CheckDeletePermission($entityID, $permissions); } } } } } } }
public static function GetDocumentType($documentId) { $arDocumentID = self::GetDocumentInfo($documentId); if (empty($arDocumentID)) { throw new CBPArgumentNullException('documentId'); } switch ($arDocumentID['TYPE']) { case 'CONTACT': $dbDocumentList = CCrmContact::GetList(array(), array('ID' => $arDocumentID['ID'], "CHECK_PERMISSIONS" => "N"), array('ID')); break; case 'COMPANY': $dbDocumentList = CCrmCompany::GetList(array(), array('ID' => $arDocumentID['ID'], "CHECK_PERMISSIONS" => "N"), array('ID')); break; case 'DEAL': $dbDocumentList = CCrmDeal::GetList(array(), array('ID' => $arDocumentID['ID'], "CHECK_PERMISSIONS" => "N"), array('ID')); break; case 'LEAD': $dbDocumentList = CCrmLead::GetList(array(), array('ID' => $arDocumentID['ID'], "CHECK_PERMISSIONS" => "N"), array('ID')); break; } $arResult = $dbDocumentList->Fetch(); if (!$arResult) { throw new Exception(GetMessage('CRM_DOCUMENT_ELEMENT_IS_NOT_FOUND')); } return $arDocumentID['TYPE']; }
public static function getNearestEntities($entityID, $currentDate, $startDate = '', $responsibleID = 0, $intervalInDays = 7, $checkPermissions = true, $limit = 5) { if (!is_string($startDate) || $startDate === '') { $startDate = $currentDate; } $site = new \CSite(); $dateFormat = $site->GetDateFormat('SHORT'); $curretTime = $currentDate !== '' ? MakeTimeStamp($currentDate, $dateFormat) : false; $startTime = $startDate !== '' ? MakeTimeStamp($startDate, $dateFormat) : false; if ($startTime === false) { return array(); } $dt = new \DateTime(); $dt->setTimestamp($startTime); $dt->add(new \DateInterval("P{$intervalInDays}D")); $endTime = $dt->getTimeStamp(); $currentSorting = self::internalPrepareSorting($curretTime); $startSorting = self::internalPrepareSorting($startTime); $endSorting = self::internalPrepareSorting($endTime); $result = array(); if ($entityID === \CCrmOwnerType::Lead) { $filter = array('>=BIRTHDAY_SORT' => $startSorting, '<=BIRTHDAY_SORT' => $endSorting, 'CHECK_PERMISSIONS' => $checkPermissions ? 'Y' : 'N'); if ($responsibleID > 0) { $filter['=ASSIGNED_BY_ID'] = $responsibleID; } $dbResult = \CCrmLead::GetListEx(array(), $filter, false, array('nTopCount' => $limit), array('ID', 'BIRTHDATE', 'BIRTHDAY_SORT', 'HONORIFIC', 'NAME', 'SECOND_NAME', 'LAST_NAME')); while ($fields = $dbResult->Fetch()) { $fields['ENTITY_TYPE_ID'] = \CCrmOwnerType::Lead; $fields['IMAGE_ID'] = 0; $sorting = isset($fields['BIRTHDAY_SORT']) ? (int) $fields['BIRTHDAY_SORT'] : 512; $fields['IS_BIRTHDAY'] = $sorting === $currentSorting; $result[] = $fields; } } elseif ($entityID === \CCrmOwnerType::Contact) { $filter = array('>=BIRTHDAY_SORT' => $startSorting, '<=BIRTHDAY_SORT' => $endSorting, 'CHECK_PERMISSIONS' => $checkPermissions ? 'Y' : 'N'); if ($responsibleID > 0) { $filter['=ASSIGNED_BY_ID'] = $responsibleID; } $dbResult = \CCrmContact::GetListEx(array(), $filter, false, array('nTopCount' => $limit), array('ID', 'BIRTHDATE', 'BIRTHDAY_SORT', 'HONORIFIC', 'NAME', 'SECOND_NAME', 'LAST_NAME', 'PHOTO')); while ($fields = $dbResult->Fetch()) { $fields['ENTITY_TYPE_ID'] = \CCrmOwnerType::Contact; $fields['IMAGE_ID'] = isset($fields['PHOTO']) ? (int) $fields['PHOTO'] : 0; $sorting = isset($fields['BIRTHDAY_SORT']) ? (int) $fields['BIRTHDAY_SORT'] : 512; $fields['IS_BIRTHDAY'] = $sorting === $currentSorting; $result[] = $fields; } } return $result; }
private static function ResolveEntityInfo($typeID, $ID) { $typeID = intval($typeID); $ID = intval($ID); if (!(CCrmOwnerType::IsDefined($typeID) && $ID > 0)) { return array('TYPE_ID' => $typeID, 'TYPE_NAME' => CCrmOwnerType::ResolveName($typeID), 'ID' => $ID); } $fields = null; if ($typeID === CCrmOwnerType::Lead) { $fields = CCrmLead::GetByID($ID, false); } elseif ($typeID === CCrmOwnerType::Contact) { $fields = CCrmContact::GetByID($ID, false); } elseif ($typeID === CCrmOwnerType::Company) { $fields = CCrmCompany::GetByID($ID, false); } elseif ($typeID === CCrmOwnerType::Deal) { $fields = CCrmDeal::GetByID($ID, false); } return array('TYPE_ID' => $typeID, 'TYPE_NAME' => CCrmOwnerType::ResolveName($typeID), 'ID' => $ID, 'FIELDS' => $fields); }
public static function SetAccountCurrencyID($currencyID) { $currencyID = self::NormalizeCurrencyID($currencyID); if ($currencyID === self::$ACCOUNT_CURRENCY_ID) { return; } self::$ACCOUNT_CURRENCY_ID = $currencyID; COption::SetOptionString('crm', 'account_currency_id', self::$ACCOUNT_CURRENCY_ID); CCrmDeal::OnAccountCurrencyChange(); CCrmLead::OnAccountCurrencyChange(); }
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; }
public static function UpdateDocument($documentId, $arFields) { global $DB; $arDocumentID = self::GetDocumentInfo($documentId); if (empty($arDocumentID)) { throw new CBPArgumentNullException('documentId'); } $dbDocumentList = CCrmLead::GetList(array(), array('ID' => $arDocumentID['ID'], "CHECK_PERMISSIONS" => "N"), array('ID')); $arResult = $dbDocumentList->Fetch(); if (!$arResult) { throw new Exception(GetMessage('CRM_DOCUMENT_ELEMENT_IS_NOT_FOUND')); } $arDocumentFields = self::GetDocumentFields($arDocumentID['TYPE']); $arKeys = array_keys($arFields); foreach ($arKeys as $key) { if (!array_key_exists($key, $arDocumentFields)) { //Fix for issue #40374 unset($arFields[$key]); continue; } $fieldType = $arDocumentFields[$key]["Type"]; if (in_array($fieldType, array("phone", "email", "im", "web"), true)) { CCrmDocument::PrepareEntityMultiFields($arFields, strtoupper($fieldType)); continue; } $arFields[$key] = is_array($arFields[$key]) && !CBPHelper::IsAssociativeArray($arFields[$key]) ? $arFields[$key] : array($arFields[$key]); if ($fieldType == "user") { $ar = array(); foreach ($arFields[$key] as $v1) { if (substr($v1, 0, strlen("user_")) == "user_") { $ar[] = substr($v1, strlen("user_")); } else { $a1 = self::GetUsersFromUserGroup($v1, $documentId); foreach ($a1 as $a11) { $ar[] = $a11; } } } $arFields[$key] = $ar; } elseif ($fieldType == "select" && substr($key, 0, 3) == "UF_") { $db = CUserTypeEntity::GetList(array(), array("ENTITY_ID" => "CRM_LEAD", "FIELD_NAME" => $key)); if ($ar = $db->Fetch()) { $arV = array(); $db = CUserTypeEnum::GetList($ar); while ($ar = $db->GetNext()) { $arV[$ar["XML_ID"]] = $ar["ID"]; } foreach ($arFields[$key] as &$value) { if (array_key_exists($value, $arV)) { $value = $arV[$value]; } } unset($value); } } elseif ($fieldType == "file") { $arFileOptions = array('ENABLE_ID' => true); foreach ($arFields[$key] as &$value) { //Issue #40380. Secure URLs and file IDs are allowed. $file = false; CCrmFileProxy::TryResolveFile($value, $file, $arFileOptions); $value = $file; } unset($value); } elseif ($fieldType == "S:HTML") { foreach ($arFields[$key] as &$value) { $value = array("VALUE" => $value); } unset($value); } if (!$arDocumentFields[$key]["Multiple"] && is_array($arFields[$key])) { if (count($arFields[$key]) > 0) { $a = array_values($arFields[$key]); $arFields[$key] = $a[0]; } else { $arFields[$key] = null; } } } if (isset($arFields['COMMENTS']) && $arFields['COMMENTS'] !== '') { $arFields['COMMENTS'] = preg_replace("/[\r\n]+/" . BX_UTF_PCRE_MODIFIER, "<br/>", $arFields['COMMENTS']); } $DB->StartTransaction(); $CCrmEntity = new CCrmLead(false); $res = $CCrmEntity->Update($arDocumentID['ID'], $arFields); if (!$res) { $DB->Rollback(); throw new Exception($CCrmEntity->LAST_ERROR); } if (COption::GetOptionString("crm", "start_bp_within_bp", "N") == "Y") { $CCrmBizProc = new CCrmBizProc('LEAD'); if (false === $CCrmBizProc->CheckFields($arDocumentID['ID'], true)) { throw new Exception($CCrmBizProc->LAST_ERROR); } if ($res && !$CCrmBizProc->StartWorkflow($arDocumentID['ID'])) { $DB->Rollback(); throw new Exception($CCrmBizProc->LAST_ERROR); } } if ($res) { $DB->Commit(); } }
<?php if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) { die; } global $APPLICATION; use Bitrix\Crm\BirthdayReminder; if (!CModule::IncludeModule('crm')) { ShowError(GetMessage('CRM_MODULE_NOT_INSTALLED')); return; } $userID = CCrmSecurityHelper::GetCurrentUserID(); $isAdminUser = CCrmPerms::IsAdmin($userID); $userPermissions = CCrmPerms::GetUserPermissions($userID); $canReadLead = CCrmLead::CheckReadPermission(0, $userPermissions); $canReadContact = CCrmContact::CheckReadPermission(0, $userPermissions); if (!$canReadLead && !$canReadContact) { ShowError(GetMessage('CRM_PERMISSION_DENIED')); return; } $arResult['USER_ID'] = $userID; $listID = isset($arParams['LIST_ID']) ? $arParams['LIST_ID'] : ''; if ($listID === '') { $listID = uniqid('birthdays_'); } $arResult['LIST_ID'] = $listID; $arResult['ERRORS'] = array(); $arResult['MESSAGES'] = array(); $arParams['NAME_FORMAT'] = isset($arParams['NAME_FORMAT']) ? $arParams['NAME_FORMAT'] : ''; $arResult['NAME_FORMAT'] = $arParams['NAME_FORMAT'] !== '' ? $arParams['NAME_FORMAT'] : \Bitrix\Crm\Format\PersonNameFormatter::getFormat(); $utils = new CComponentUtil();
$arResult['FIELDS']['tab_1'][] = array('id' => 'TITLE', 'name' => GetMessage('CRM_QUOTE_FIELD_TITLE_QUOTE'), 'params' => array('size' => 50), 'value' => isset($arResult['ELEMENT']['~TITLE']) ? $arResult['ELEMENT']['~TITLE'] : '', 'type' => 'text'); $arResult['FIELDS']['tab_1'][] = array('id' => 'STATUS_ID', 'name' => GetMessage('CRM_QUOTE_FIELD_STATUS_ID'), 'items' => $arResult['STATUS_LIST'], 'params' => array('sale_order_marker' => 'Y'), 'type' => 'list', 'value' => isset($arResult['ELEMENT']['STATUS_ID']) ? $arResult['ELEMENT']['STATUS_ID'] : ''); $currencyID = CCrmCurrency::GetBaseCurrencyID(); if (isset($arResult['ELEMENT']['CURRENCY_ID']) && $arResult['ELEMENT']['CURRENCY_ID'] !== '') { $currencyID = $arResult['ELEMENT']['CURRENCY_ID']; } $arResult['FIELDS']['tab_1'][] = array('id' => 'CURRENCY_ID', 'name' => GetMessage('CRM_QUOTE_FIELD_CURRENCY_ID'), 'type' => 'list', 'params' => array('sale_order_marker' => 'Y'), 'items' => $arResult['CURRENCY_LIST'], 'value' => $currencyID); $arResult['FIELDS']['tab_1'][] = array('id' => 'OPPORTUNITY', 'name' => GetMessage('CRM_QUOTE_FIELD_OPPORTUNITY'), 'params' => array('size' => 21, 'sale_order_marker' => 'Y'), 'value' => isset($arResult['ELEMENT']['OPPORTUNITY']) ? $arResult['ELEMENT']['OPPORTUNITY'] : '', 'type' => 'text'); $arResult['RESPONSIBLE_SELECTOR_PARAMS'] = array('NAME' => 'crm_quote_edit_resonsible', 'INPUT_NAME' => 'ASSIGNED_BY_ID', 'SEARCH_INPUT_NAME' => 'ASSIGNED_BY_NAME', 'NAME_TEMPLATE' => $arParams['NAME_TEMPLATE']); $arResult['FIELDS']['tab_1'][] = array('id' => 'ASSIGNED_BY_ID', 'componentParams' => $arResult['RESPONSIBLE_SELECTOR_PARAMS'], 'name' => GetMessage('CRM_QUOTE_FIELD_ASSIGNED_BY_ID'), 'type' => 'intranet_user_search', 'value' => isset($arResult['ELEMENT']['ASSIGNED_BY_ID']) ? $arResult['ELEMENT']['ASSIGNED_BY_ID'] : $USER->GetID()); //Fix for issue #36848 $beginDate = isset($arResult['ELEMENT']['BEGINDATE']) ? $arResult['ELEMENT']['BEGINDATE'] : ''; $closeDate = isset($arResult['ELEMENT']['CLOSEDATE']) ? $arResult['ELEMENT']['CLOSEDATE'] : ''; $arResult['FIELDS']['tab_1'][] = array('id' => 'BEGINDATE', 'name' => GetMessage('CRM_QUOTE_FIELD_BEGINDATE'), 'params' => array('sale_order_marker' => 'Y'), 'type' => 'date_link', 'value' => $beginDate !== '' ? ConvertTimeStamp(MakeTimeStamp($beginDate), 'SHORT', SITE_ID) : ''); $arResult['FIELDS']['tab_1'][] = array('id' => 'CLOSEDATE', 'name' => GetMessage('CRM_QUOTE_FIELD_CLOSEDATE'), 'type' => 'date_short', 'value' => $closeDate !== '' ? ConvertTimeStamp(MakeTimeStamp($closeDate), 'SHORT', SITE_ID) : '', 'params' => array('class' => 'bx-crm-dialog-input bx-crm-dialog-input-date')); if (CCrmLead::CheckReadPermission()) { $arResult['FIELDS']['tab_1'][] = array('id' => 'LEAD_ID', 'name' => GetMessage('CRM_QUOTE_FIELD_LEAD_ID'), 'type' => 'crm_entity_selector', 'componentParams' => array('ENTITY_TYPE' => 'LEAD', 'INPUT_NAME' => 'LEAD_ID', 'NEW_INPUT_NAME' => '', 'INPUT_VALUE' => isset($arResult['ELEMENT']['LEAD_ID']) ? $arResult['ELEMENT']['LEAD_ID'] : '', 'FORM_NAME' => $arResult['FORM_ID'], 'MULTIPLE' => 'N', 'NAME_TEMPLATE' => \Bitrix\Crm\Format\PersonNameFormatter::getFormat())); } if (CCrmDeal::CheckReadPermission()) { $arResult['FIELDS']['tab_1'][] = array('id' => 'DEAL_ID', 'name' => GetMessage('CRM_QUOTE_FIELD_DEAL_ID'), 'type' => 'crm_entity_selector', 'componentParams' => array('ENTITY_TYPE' => 'DEAL', 'INPUT_NAME' => 'DEAL_ID', 'NEW_INPUT_NAME' => '', 'INPUT_VALUE' => isset($arResult['ELEMENT']['DEAL_ID']) ? $arResult['ELEMENT']['DEAL_ID'] : '', 'FORM_NAME' => $arResult['FORM_ID'], 'MULTIPLE' => 'N', 'NAME_TEMPLATE' => \Bitrix\Crm\Format\PersonNameFormatter::getFormat())); } $arResult['FIELDS']['tab_1'][] = array('id' => 'OPENED', 'name' => GetMessage('CRM_QUOTE_FIELD_OPENED'), 'type' => 'vertical_checkbox', 'params' => array(), 'value' => isset($arResult['ELEMENT']['OPENED']) ? $arResult['ELEMENT']['OPENED'] : true, 'title' => GetMessage('CRM_QUOTE_FIELD_OPENED_TITLE')); $arResult['FIELDS']['tab_1'][] = array('id' => 'section_contact_info', 'name' => GetMessage('CRM_SECTION_CLIENT_INFO'), 'type' => 'section'); if (CCrmContact::CheckReadPermission()) { $arResult['FIELDS']['tab_1'][] = array('id' => 'CONTACT_ID', 'name' => GetMessage('CRM_QUOTE_FIELD_CONTACT_ID'), 'type' => 'crm_entity_selector', 'componentParams' => array('ENTITY_TYPE' => 'CONTACT', 'INPUT_NAME' => 'CONTACT_ID', 'NEW_INPUT_NAME' => CCrmContact::CheckCreatePermission() ? 'NEW_CONTACT_ID' : '', 'INPUT_VALUE' => isset($arResult['ELEMENT']['CONTACT_ID']) ? $arResult['ELEMENT']['CONTACT_ID'] : '', 'FORM_NAME' => $arResult['FORM_ID'], 'MULTIPLE' => 'N', 'NAME_TEMPLATE' => \Bitrix\Crm\Format\PersonNameFormatter::getFormat())); } if (CCrmCompany::CheckReadPermission()) { $arResult['FIELDS']['tab_1'][] = array('id' => 'COMPANY_ID', 'name' => GetMessage('CRM_QUOTE_FIELD_COMPANY_ID'), 'type' => 'crm_entity_selector', 'componentParams' => array('ENTITY_TYPE' => 'COMPANY', 'INPUT_NAME' => 'COMPANY_ID', 'NEW_INPUT_NAME' => CCrmCompany::CheckCreatePermission() ? 'NEW_COMPANY_ID' : '', 'INPUT_VALUE' => isset($arResult['ELEMENT']['COMPANY_ID']) ? $arResult['ELEMENT']['COMPANY_ID'] : '', 'FORM_NAME' => $arResult['FORM_ID'], 'MULTIPLE' => 'N', 'NAME_TEMPLATE' => \Bitrix\Crm\Format\PersonNameFormatter::getFormat())); } if ($bTaxMode) { // CLIENT LOCATION
/** * @return \CCrmEntityListBuilder */ protected static function createEntityListBuilder() { return \CCrmLead::CreateListBuilder(); }
die; } if (isset($arFields['CREATED_BY_ID'])) { unset($arFields['CREATED_BY_ID']); } if (isset($arFields['DATE_CREATE'])) { unset($arFields['DATE_CREATE']); } if (isset($arFields['MODIFY_BY_ID'])) { unset($arFields['MODIFY_BY_ID']); } if (isset($arFields['DATE_MODIFY'])) { unset($arFields['DATE_MODIFY']); } $arFields['STATUS_ID'] = $statusID; $CCrmLead = new CCrmLead(false); if ($CCrmLead->Update($ID, $arFields, true, true, array('DISABLE_USER_FIELD_CHECK' => true, 'REGISTER_SONET_EVENT' => true))) { $arErrors = array(); CCrmBizProcHelper::AutoStartWorkflows(CCrmOwnerType::Lead, $ID, CCrmBizProcEventType::Edit, $arErrors); } __CrmLeadListEndResonse(array('TYPE' => $targetTypeName, 'ID' => $ID, 'VALUE' => $statusID)); } elseif ($action === 'REBUILD_DUPLICATE_INDEX') { __IncludeLang(dirname(__FILE__) . '/lang/' . LANGUAGE_ID . '/' . basename(__FILE__)); $params = isset($_POST['PARAMS']) && is_array($_POST['PARAMS']) ? $_POST['PARAMS'] : array(); $entityTypeName = isset($params['ENTITY_TYPE_NAME']) ? $params['ENTITY_TYPE_NAME'] : ''; if ($entityTypeName === '') { __CrmLeadListEndResonse(array('ERROR' => 'Entity type is not specified.')); } $entityTypeID = CCrmOwnerType::ResolveID($entityTypeName); if ($entityTypeID === CCrmOwnerType::Undefined) { __CrmLeadListEndResonse(array('ERROR' => 'Undefined entity type is specified.'));
$v = $v !== null && $v !== '' ? strtoupper($v) : 'N'; $entityData[$k] = array('type' => 'boolean', 'editable' => $enableInstantEdit, 'data' => array('baseType' => 'char', 'value' => $v)); } elseif ($k === 'ASSIGNED_BY_ID') { $entityData['ASSIGNED_BY_ID'] = __CrmQuickPanelViewPrepareResponsible($entityFields, $userProfilePath, $nameTemplate, $enableInstantEdit, $arResult['INSTANT_EDITOR_ID'], $arResult['SERVICE_URL']); } elseif ($k === 'COMMENTS') { $entityData[$k] = array('type' => 'html', 'editable' => $enableInstantEdit, 'data' => array('html' => $entityFields["~{$k}"], 'serviceUrl' => $arResult['SERVICE_URL'])); } elseif ($k === 'ADDRESS') { $entityData[$k] = array('type' => 'address', 'editable' => false, 'data' => array('lines' => LeadAddressFormatter::prepareLines($entityFields, array('NL2BR' => true)))); } elseif ($k === 'STATUS_DESCRIPTION' || $k === 'SOURCE_DESCRIPTION') { $entityData[$k] = array('type' => 'text', 'editable' => $enableInstantEdit, 'data' => array('text' => $entityFields["~{$k}"], 'multiline' => true)); } else { $entityData[$k] = array('type' => 'text', 'editable' => $enableInstantEdit, 'data' => array('text' => $entityFields["~{$k}"])); } $caption = isset($formFieldNames[$k]) ? $formFieldNames[$k] : ''; if ($caption === '') { $caption = CCrmLead::GetFieldCaption($k); } $entityData[$k]['caption'] = $caption; } $arResult['HEAD_TITLE'] = isset($entityFields['TITLE']) ? $entityFields['TITLE'] : ''; $arResult['HEAD_TITLE_FIELD_ID'] = 'TITLE'; } elseif ($entityTypeID === CCrmOwnerType::Quote) { $entityContext['SIP_MANAGER_CONFIG'][CCrmOwnerType::QuoteName] = array('ENTITY_TYPE' => CCrmOwnerType::QuoteName, 'SERVICE_URL' => '/bitrix/components/bitrix/crm.quote.show/ajax.php?' . bitrix_sessid_get()); if ($enableDefaultConfig) { $config['left'] = 'CLOSEDATE,LEAD_ID,DEAL_ID'; $config['center'] = 'CONTACT_ID,COMPANY_ID'; $config['right'] = 'ASSIGNED_BY_ID'; $config['bottom'] = 'COMMENTS'; } $ufEntityID = CCrmQuote::$sUFEntityID; $fieldKeys = array('QUOTE_NUMBER' => true, 'TITLE' => true, 'STATUS_ID' => true, 'CURRENCY_ID' => true, 'OPPORTUNITY' => true, 'CONTACT_ID' => true, 'COMPANY_ID' => true, 'LEAD_ID' => true, 'DEAL_ID' => true, 'CLIENT_PHONE' => true, 'CLIENT_EMAIL' => true, 'BEGINDATE' => true, 'CLOSEDATE' => true, 'CLOSED' => true, 'OPENED' => true, 'ASSIGNED_BY_ID' => true, 'COMMENTS' => true);
} } $statuses = array_keys($arResult['STATUS_LIST']); if (!empty($statuses)) { $arFields['~STATUS_ID'] = $statuses[0]; $arFields['STATUS_ID'] = htmlspecialcharsbx($arFields['~STATUS_ID']); } $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'];
public static function GetDocumentType($documentId) { $arDocumentID = self::GetDocumentInfo($documentId); if (empty($arDocumentID)) { throw new CBPArgumentNullException('documentId'); } $exists = false; switch ($arDocumentID['TYPE']) { case 'CONTACT': $exists = CCrmContact::Exists($arDocumentID['ID']); break; case 'COMPANY': $exists = CCrmCompany::Exists($arDocumentID['ID']); break; case 'DEAL': $exists = CCrmDeal::Exists($arDocumentID['ID']); break; case 'LEAD': $exists = CCrmLead::Exists($arDocumentID['ID']); break; } if (!$exists) { throw new Exception(GetMessage('CRM_DOCUMENT_ELEMENT_IS_NOT_FOUND')); } return $arDocumentID['TYPE']; }
public static function CompareFields($arFieldsOrig, $arFieldsModif, $bCheckPerms = true) { $arMsg = array(); if (array_key_exists('QUOTE_NUMBER', $arFieldsModif)) { $origQuoteNumber = isset($arFieldsOrig['QUOTE_NUMBER']) ? $arFieldsOrig['QUOTE_NUMBER'] : ''; $modifQuoteNumber = isset($arFieldsModif['QUOTE_NUMBER']) ? $arFieldsModif['QUOTE_NUMBER'] : ''; if ($origQuoteNumber != $modifQuoteNumber) { $arMsg[] = array('ENTITY_FIELD' => 'QUOTE_NUMBER', 'EVENT_NAME' => GetMessage('CRM_QUOTE_FIELD_COMPARE_QUOTE_NUMBER'), 'EVENT_TEXT_1' => !empty($origQuoteNumber) ? $origQuoteNumber : GetMessage('CRM_QUOTE_FIELD_COMPARE_EMPTY'), 'EVENT_TEXT_2' => !empty($modifQuoteNumber) ? $modifQuoteNumber : GetMessage('CRM_QUOTE_FIELD_COMPARE_EMPTY')); } unset($origQuoteNumber, $modifQuoteNumber); } if (array_key_exists('TITLE', $arFieldsModif)) { $origTitle = isset($arFieldsOrig['TITLE']) ? $arFieldsOrig['TITLE'] : ''; $modifTitle = isset($arFieldsModif['TITLE']) ? $arFieldsModif['TITLE'] : ''; if ($origTitle != $modifTitle) { $arMsg[] = array('ENTITY_FIELD' => 'TITLE', 'EVENT_NAME' => GetMessage('CRM_QUOTE_FIELD_COMPARE_TITLE'), 'EVENT_TEXT_1' => !empty($origTitle) ? $origTitle : GetMessage('CRM_QUOTE_FIELD_COMPARE_EMPTY'), 'EVENT_TEXT_2' => !empty($modifTitle) ? $modifTitle : GetMessage('CRM_QUOTE_FIELD_COMPARE_EMPTY')); } unset($origTitle, $modifTitle); } if (array_key_exists('LEAD_ID', $arFieldsModif)) { $origLeadId = isset($arFieldsOrig['LEAD_ID']) ? intval($arFieldsOrig['LEAD_ID']) : 0; $modifLeadId = isset($arFieldsModif['LEAD_ID']) ? intval($arFieldsModif['LEAD_ID']) : 0; if ($origLeadId != $modifLeadId) { $arLead = array(); $arFilterTmp = array('@ID' => array($origLeadId, $modifLeadId)); if (!$bCheckPerms) { $arFilterTmp["CHECK_PERMISSIONS"] = "N"; } $dbRes = CCrmLead::GetListEx(array('TITLE' => 'ASC'), $arFilterTmp); while ($arRes = $dbRes->Fetch()) { $arLead[$arRes['ID']] = $arRes['TITLE']; } $arMsg[] = array('ENTITY_FIELD' => 'LEAD_ID', 'EVENT_NAME' => GetMessage('CRM_QUOTE_FIELD_COMPARE_LEAD_ID'), 'EVENT_TEXT_1' => CrmCompareFieldsList($arLead, $origLeadId), 'EVENT_TEXT_2' => CrmCompareFieldsList($arLead, $modifLeadId)); } unset($origLeadId, $modifLeadId); } if (array_key_exists('DEAL_ID', $arFieldsModif)) { $origDealId = isset($arFieldsOrig['DEAL_ID']) ? intval($arFieldsOrig['DEAL_ID']) : 0; $modifDealId = isset($arFieldsModif['DEAL_ID']) ? intval($arFieldsModif['DEAL_ID']) : 0; if ($origDealId != $modifDealId) { $arDeal = array(); $arFilterTmp = array('ID' => array($origDealId, $modifDealId)); if (!$bCheckPerms) { $arFilterTmp["CHECK_PERMISSIONS"] = "N"; } $dbRes = CCrmDeal::GetList(array('TITLE' => 'ASC'), $arFilterTmp); while ($arRes = $dbRes->Fetch()) { $arDeal[$arRes['ID']] = $arRes['TITLE']; } $arMsg[] = array('ENTITY_FIELD' => 'DEAL_ID', 'EVENT_NAME' => GetMessage('CRM_QUOTE_FIELD_COMPARE_DEAL_ID'), 'EVENT_TEXT_1' => CrmCompareFieldsList($arDeal, $origDealId), 'EVENT_TEXT_2' => CrmCompareFieldsList($arDeal, $modifDealId)); } unset($origDealId, $modifDealId); } if (array_key_exists('COMPANY_ID', $arFieldsModif)) { $origCompanyId = isset($arFieldsOrig['COMPANY_ID']) ? intval($arFieldsOrig['COMPANY_ID']) : 0; $modifCompanyId = isset($arFieldsModif['COMPANY_ID']) ? intval($arFieldsModif['COMPANY_ID']) : 0; if ($origCompanyId != $modifCompanyId) { $arCompany = array(); $arFilterTmp = array('ID' => array($origCompanyId, $modifCompanyId)); if (!$bCheckPerms) { $arFilterTmp["CHECK_PERMISSIONS"] = "N"; } $dbRes = CCrmCompany::GetList(array('TITLE' => 'ASC'), $arFilterTmp); while ($arRes = $dbRes->Fetch()) { $arCompany[$arRes['ID']] = $arRes['TITLE']; } $arMsg[] = array('ENTITY_FIELD' => 'COMPANY_ID', 'EVENT_NAME' => GetMessage('CRM_QUOTE_FIELD_COMPARE_COMPANY_ID'), 'EVENT_TEXT_1' => CrmCompareFieldsList($arCompany, $origCompanyId), 'EVENT_TEXT_2' => CrmCompareFieldsList($arCompany, $modifCompanyId)); } unset($origCompanyId, $modifCompanyId); } if (array_key_exists('CONTACT_ID', $arFieldsModif)) { $origContactId = isset($arFieldsOrig['CONTACT_ID']) ? intval($arFieldsOrig['CONTACT_ID']) : 0; $modifContactId = isset($arFieldsModif['CONTACT_ID']) ? intval($arFieldsModif['CONTACT_ID']) : 0; if ($origContactId != $modifContactId) { $arContact = array(); $arFilterTmp = array('@ID' => array($origContactId, $modifContactId)); if (!$bCheckPerms) { $arFilterTmp["CHECK_PERMISSIONS"] = "N"; } $dbRes = CCrmContact::GetListEx(array(), $arFilterTmp); while ($arRes = $dbRes->Fetch()) { $arContact[$arRes['ID']] = CCrmContact::PrepareFormattedName($arRes); } $arMsg[] = array('ENTITY_FIELD' => 'CONTACT_ID', 'EVENT_NAME' => GetMessage('CRM_QUOTE_FIELD_COMPARE_CONTACT_ID'), 'EVENT_TEXT_1' => CrmCompareFieldsList($arContact, $origContactId), 'EVENT_TEXT_2' => CrmCompareFieldsList($arContact, $modifContactId)); } unset($origContactId, $modifContactId); } if (array_key_exists('ASSIGNED_BY_ID', $arFieldsModif)) { $origAssignedById = isset($arFieldsOrig['ASSIGNED_BY_ID']) ? intval($arFieldsOrig['ASSIGNED_BY_ID']) : 0; $modifAssignedById = isset($arFieldsModif['ASSIGNED_BY_ID']) ? intval($arFieldsModif['ASSIGNED_BY_ID']) : 0; if ($origAssignedById != $modifAssignedById) { $arUser = array(); $dbUsers = CUser::GetList($sort_by = 'last_name', $sort_dir = 'asc', array('ID' => implode('|', array(intval($origAssignedById), intval($modifAssignedById)))), array('FIELDS' => array('ID', 'NAME', 'SECOND_NAME', 'LAST_NAME', 'LOGIN', 'TITLE', 'EMAIL'))); while ($arRes = $dbUsers->Fetch()) { $arUser[$arRes['ID']] = CUser::FormatName(CSite::GetNameFormat(false), $arRes); } $arMsg[] = array('ENTITY_FIELD' => 'ASSIGNED_BY_ID', 'EVENT_NAME' => GetMessage('CRM_QUOTE_FIELD_COMPARE_ASSIGNED_BY_ID'), 'EVENT_TEXT_1' => CrmCompareFieldsList($arUser, $origAssignedById), 'EVENT_TEXT_2' => CrmCompareFieldsList($arUser, $modifAssignedById)); } unset($origAssignedById, $modifAssignedById); } if (array_key_exists('STATUS_ID', $arFieldsModif)) { $origStatusId = isset($arFieldsOrig['STATUS_ID']) ? $arFieldsOrig['STATUS_ID'] : ''; $modifStatusId = isset($arFieldsModif['STATUS_ID']) ? $arFieldsModif['STATUS_ID'] : ''; if ($origStatusId != $modifStatusId) { $arStatus = CCrmStatus::GetStatusList('QUOTE_STATUS'); $arMsg[] = array('ENTITY_FIELD' => 'STATUS_ID', 'EVENT_NAME' => GetMessage('CRM_QUOTE_FIELD_COMPARE_STATUS_ID'), 'EVENT_TEXT_1' => htmlspecialcharsbx(CrmCompareFieldsList($arStatus, $origStatusId)), 'EVENT_TEXT_2' => htmlspecialcharsbx(CrmCompareFieldsList($arStatus, $modifStatusId))); } unset($origStatusId, $modifStatusId); } if (array_key_exists('COMMENTS', $arFieldsModif)) { $origComments = isset($arFieldsOrig['COMMENTS']) ? $arFieldsOrig['COMMENTS'] : ''; $modifComments = isset($arFieldsModif['COMMENTS']) ? $arFieldsModif['COMMENTS'] : ''; if ($origComments != $modifComments) { $arMsg[] = array('ENTITY_FIELD' => 'COMMENTS', 'EVENT_NAME' => GetMessage('CRM_QUOTE_FIELD_COMPARE_COMMENTS'), 'EVENT_TEXT_1' => !empty($origComments) ? $origComments : GetMessage('CRM_QUOTE_FIELD_COMPARE_EMPTY'), 'EVENT_TEXT_2' => !empty($modifComments) ? $modifComments : GetMessage('CRM_QUOTE_FIELD_COMPARE_EMPTY')); } unset($origComments, $modifComments); } if (array_key_exists('CONTENT', $arFieldsModif)) { $origContent = isset($arFieldsOrig['CONTENT']) ? $arFieldsOrig['CONTENT'] : ''; $modifContent = isset($arFieldsModif['CONTENT']) ? $arFieldsModif['CONTENT'] : ''; if ($origContent != $modifContent) { $arMsg[] = array('ENTITY_FIELD' => 'CONTENT', 'EVENT_NAME' => GetMessage('CRM_QUOTE_FIELD_COMPARE_CONTENT'), 'EVENT_TEXT_1' => !empty($origContent) ? $origContent : GetMessage('CRM_QUOTE_FIELD_COMPARE_EMPTY'), 'EVENT_TEXT_2' => !empty($modifContent) ? $modifContent : GetMessage('CRM_QUOTE_FIELD_COMPARE_EMPTY')); } unset($origContent, $modifContent); } if (array_key_exists('TERMS', $arFieldsModif)) { $origTerms = isset($arFieldsOrig['TERMS']) ? $arFieldsOrig['TERMS'] : ''; $modifTerms = isset($arFieldsModif['TERMS']) ? $arFieldsModif['TERMS'] : ''; if ($origTerms != $modifTerms) { $arMsg[] = array('ENTITY_FIELD' => 'TERMS', 'EVENT_NAME' => GetMessage('CRM_QUOTE_FIELD_COMPARE_TERMS'), 'EVENT_TEXT_1' => !empty($origTerms) ? $origTerms : GetMessage('CRM_QUOTE_FIELD_COMPARE_EMPTY'), 'EVENT_TEXT_2' => !empty($modifTerms) ? $modifTerms : GetMessage('CRM_QUOTE_FIELD_COMPARE_EMPTY')); } unset($origTerms, $modifTerms); } if (array_key_exists('OPPORTUNITY', $arFieldsModif) || array_key_exists('CURRENCY_ID', $arFieldsModif)) { $origOpportunity = isset($arFieldsOrig['OPPORTUNITY']) ? round(doubleval($arFieldsOrig['OPPORTUNITY']), 2) : 0.0; $modifOpportunity = isset($arFieldsModif['OPPORTUNITY']) ? round(doubleval($arFieldsModif['OPPORTUNITY']), 2) : $origOpportunity; $origCurrencyId = isset($arFieldsOrig['CURRENCY_ID']) ? $arFieldsOrig['CURRENCY_ID'] : ''; $modifCurrencyId = isset($arFieldsModif['CURRENCY_ID']) ? $arFieldsModif['CURRENCY_ID'] : $origCurrencyId; if ($origOpportunity != $modifOpportunity || $origCurrencyId != $modifCurrencyId) { $arStatus = CCrmCurrencyHelper::PrepareListItems(); $arMsg[] = array('ENTITY_FIELD' => 'OPPORTUNITY', 'EVENT_NAME' => GetMessage('CRM_QUOTE_FIELD_COMPARE_OPPORTUNITY'), 'EVENT_TEXT_1' => floatval($arFieldsOrig['OPPORTUNITY']) . (($val = CrmCompareFieldsList($arStatus, $origCurrencyId, '')) != '' ? ' (' . $val . ')' : ''), 'EVENT_TEXT_2' => floatval($arFieldsModif['OPPORTUNITY']) . (($val = CrmCompareFieldsList($arStatus, $modifCurrencyId, '')) != '' ? ' (' . $val . ')' : '')); } unset($origOpportunity, $modifOpportunity, $origCurrencyId, $modifCurrencyId); } if (array_key_exists('TAX_VALUE', $arFieldsModif) || array_key_exists('CURRENCY_ID', $arFieldsModif)) { if (isset($arFieldsOrig['TAX_VALUE']) && isset($arFieldsModif['TAX_VALUE']) && $arFieldsOrig['TAX_VALUE'] != $arFieldsModif['TAX_VALUE'] || isset($arFieldsOrig['CURRENCY_ID']) && isset($arFieldsModif['CURRENCY_ID']) && $arFieldsOrig['CURRENCY_ID'] != $arFieldsModif['CURRENCY_ID']) { $arStatus = CCrmCurrencyHelper::PrepareListItems(); $arMsg[] = array('ENTITY_FIELD' => 'TAX_VALUE', 'EVENT_NAME' => GetMessage('CRM_QUOTE_FIELD_COMPARE_TAX_VALUE'), 'EVENT_TEXT_1' => floatval($arFieldsOrig['TAX_VALUE']) . (($val = CrmCompareFieldsList($arStatus, $arFieldsOrig['CURRENCY_ID'], '')) != '' ? ' (' . $val . ')' : ''), 'EVENT_TEXT_2' => floatval($arFieldsModif['TAX_VALUE']) . (($val = CrmCompareFieldsList($arStatus, $arFieldsModif['CURRENCY_ID'], '')) != '' ? ' (' . $val . ')' : '')); } } if (array_key_exists('BEGINDATE', $arFieldsOrig) && array_key_exists('BEGINDATE', $arFieldsModif) && ConvertTimeStamp(strtotime($arFieldsOrig['BEGINDATE'])) != $arFieldsModif['BEGINDATE'] && $arFieldsOrig['BEGINDATE'] != $arFieldsModif['BEGINDATE']) { $arMsg[] = array('ENTITY_FIELD' => 'BEGINDATE', 'EVENT_NAME' => GetMessage('CRM_QUOTE_FIELD_COMPARE_BEGINDATE'), 'EVENT_TEXT_1' => !empty($arFieldsOrig['BEGINDATE']) ? ConvertTimeStamp(strtotime($arFieldsOrig['BEGINDATE'])) : GetMessage('CRM_QUOTE_FIELD_COMPARE_EMPTY'), 'EVENT_TEXT_2' => !empty($arFieldsModif['BEGINDATE']) ? $arFieldsModif['BEGINDATE'] : GetMessage('CRM_QUOTE_FIELD_COMPARE_EMPTY')); } if (array_key_exists('CLOSEDATE', $arFieldsOrig) && array_key_exists('CLOSEDATE', $arFieldsModif) && ConvertTimeStamp(strtotime($arFieldsOrig['CLOSEDATE'])) != $arFieldsModif['CLOSEDATE'] && $arFieldsOrig['CLOSEDATE'] != $arFieldsModif['CLOSEDATE']) { $arMsg[] = array('ENTITY_FIELD' => 'CLOSEDATE', 'EVENT_NAME' => GetMessage('CRM_QUOTE_FIELD_COMPARE_CLOSEDATE'), 'EVENT_TEXT_1' => !empty($arFieldsOrig['CLOSEDATE']) ? ConvertTimeStamp(strtotime($arFieldsOrig['CLOSEDATE'])) : GetMessage('CRM_QUOTE_FIELD_COMPARE_EMPTY'), 'EVENT_TEXT_2' => !empty($arFieldsModif['CLOSEDATE']) ? $arFieldsModif['CLOSEDATE'] : GetMessage('CRM_QUOTE_FIELD_COMPARE_EMPTY')); } if (array_key_exists('OPENED', $arFieldsModif)) { if (isset($arFieldsOrig['OPENED']) && isset($arFieldsModif['OPENED']) && $arFieldsOrig['OPENED'] != $arFieldsModif['OPENED']) { $arMsg[] = array('ENTITY_FIELD' => 'OPENED', 'EVENT_NAME' => GetMessage('CRM_QUOTE_FIELD_COMPARE_OPENED'), 'EVENT_TEXT_1' => $arFieldsOrig['OPENED'] == 'Y' ? GetMessage('MAIN_YES') : GetMessage('MAIN_NO'), 'EVENT_TEXT_2' => $arFieldsModif['OPENED'] == 'Y' ? GetMessage('MAIN_YES') : GetMessage('MAIN_NO')); } } if (array_key_exists('CLOSED', $arFieldsModif)) { if (isset($arFieldsOrig['CLOSED']) && isset($arFieldsModif['CLOSED']) && $arFieldsOrig['CLOSED'] != $arFieldsModif['CLOSED']) { $arMsg[] = array('ENTITY_FIELD' => 'CLOSED', 'EVENT_NAME' => GetMessage('CRM_QUOTE_FIELD_COMPARE_CLOSED'), 'EVENT_TEXT_1' => $arFieldsOrig['CLOSED'] == 'Y' ? GetMessage('MAIN_YES') : GetMessage('MAIN_NO'), 'EVENT_TEXT_2' => $arFieldsModif['CLOSED'] == 'Y' ? GetMessage('MAIN_YES') : GetMessage('MAIN_NO')); } } // person type if (array_key_exists('PERSON_TYPE_ID', $arFieldsModif)) { $bPersonTypeChanged = isset($arFieldsOrig['PERSON_TYPE_ID']) && isset($arFieldsModif['PERSON_TYPE_ID']) && intval($arFieldsOrig['PERSON_TYPE_ID']) !== intval($arFieldsModif['PERSON_TYPE_ID']); if ($bPersonTypeChanged) { $arPersonTypes = CCrmPaySystem::getPersonTypesList(); if ($bPersonTypeChanged) { $arMsg[] = array('ENTITY_FIELD' => 'PERSON_TYPE_ID', 'EVENT_NAME' => GetMessage('CRM_QUOTE_FIELD_COMPARE_PERSON_TYPE_ID'), 'EVENT_TEXT_1' => CrmCompareFieldsList($arPersonTypes, $arFieldsOrig['PERSON_TYPE_ID']), 'EVENT_TEXT_2' => CrmCompareFieldsList($arPersonTypes, $arFieldsModif['PERSON_TYPE_ID'])); } } } if (array_key_exists('LOCATION_ID', $arFieldsModif)) { $origLocationId = isset($arFieldsOrig['LOCATION_ID']) ? $arFieldsOrig['LOCATION_ID'] : ''; $modifLocationId = isset($arFieldsModif['LOCATION_ID']) ? $arFieldsModif['LOCATION_ID'] : ''; if ($origLocationId != $modifLocationId) { $origLocationString = $modifLocationString = ''; if (IsModuleInstalled('sale') && CModule::IncludeModule('sale')) { $location = new CSaleLocation(); $origLocationString = $origLocationId > 0 ? $location->GetLocationString($origLocationId) : ''; $modifLocationString = $modifLocationId > 0 ? $location->GetLocationString($modifLocationId) : ''; } if (empty($origLocationString) && intval($origLocationId) > 0) { $origLocationString = '[' . $origLocationId . ']'; } if (empty($modifLocationString) && intval($modifLocationId) > 0) { $modifLocationString = '[' . $modifLocationId . ']'; } $arMsg[] = array('ENTITY_FIELD' => 'LOCATION_ID', 'EVENT_NAME' => GetMessage('CRM_QUOTE_FIELD_COMPARE_LOCATION_ID'), 'EVENT_TEXT_1' => $origLocationString, 'EVENT_TEXT_2' => $modifLocationString); unset($origLocationString, $modifLocationString); } unset($origLocationId, $modifLocationId); } $origClientFieldValue = $modifClientFieldValue = ''; foreach (self::$clientFields as $fieldName) { if (array_key_exists($fieldName, $arFieldsModif)) { $origClientFieldValue = isset($arFieldsOrig[$fieldName]) ? $arFieldsOrig[$fieldName] : ''; $modifClientFieldValue = isset($arFieldsModif[$fieldName]) ? $arFieldsModif[$fieldName] : ''; if ($origClientFieldValue != $modifClientFieldValue) { $arMsg[] = array('ENTITY_FIELD' => $fieldName, 'EVENT_NAME' => GetMessage('CRM_QUOTE_FIELD_COMPARE_' . $fieldName), 'EVENT_TEXT_1' => !empty($origClientFieldValue) ? $origClientFieldValue : GetMessage('CRM_QUOTE_FIELD_COMPARE_EMPTY'), 'EVENT_TEXT_2' => !empty($modifClientFieldValue) ? $modifClientFieldValue : GetMessage('CRM_QUOTE_FIELD_COMPARE_EMPTY')); } } } unset($fieldName, $origClientFieldValue, $modifClientFieldValue); // Processing of the files if (array_key_exists('STORAGE_TYPE_ID', $arFieldsModif) && array_key_exists('STORAGE_ELEMENT_IDS', $arFieldsModif) && strlen($arFieldsModif['STORAGE_ELEMENT_IDS']) > 0) { $newStorageTypeID = isset($arFieldsModif['STORAGE_TYPE_ID']) ? intval($arFieldsModif['STORAGE_TYPE_ID']) : CCrmQuoteStorageType::Undefined; $oldStorageTypeID = isset($arFieldsOrig['STORAGE_TYPE_ID']) ? intval($arFieldsOrig['STORAGE_TYPE_ID']) : CCrmQuoteStorageType::Undefined; self::PrepareStorageElementIDs($arFieldsModif); $newElementIDs = $arFieldsModif['STORAGE_ELEMENT_IDS']; self::PrepareStorageElementIDs($arFieldsOrig); $oldElementIDs = $arFieldsOrig['STORAGE_ELEMENT_IDS']; if ($newStorageTypeID === $oldStorageTypeID && is_array($newElementIDs) && is_array($oldElementIDs)) { $arRemovedElementIDs = array_values(array_diff($oldElementIDs, $newElementIDs)); if (!empty($arRemovedElementIDs)) { foreach ($arRemovedElementIDs as $elementID) { self::PrepareFileEvent($oldStorageTypeID, $elementID, 'REMOVE', $arFieldsModif, $arMsg); } unset($elementID); } unset($arRemovedElementIDs); $arAddedElementIDs = array_values(array_diff($newElementIDs, $oldElementIDs)); if (!empty($arAddedElementIDs)) { foreach ($arAddedElementIDs as $elementID) { self::PrepareFileEvent($newStorageTypeID, $elementID, 'ADD', $arFieldsModif, $arMsg); } unset($elementID); } unset($arAddedElementIDs); } else { if ($newStorageTypeID !== $oldStorageTypeID && is_array($newElementIDs) && is_array($oldElementIDs)) { foreach ($oldElementIDs as $elementID) { self::PrepareFileEvent($oldStorageTypeID, $elementID, 'REMOVE', $arFieldsModif, $arMsg); } unset($elementID); foreach ($newElementIDs as $elementID) { self::PrepareFileEvent($newStorageTypeID, $elementID, 'ADD', $arFieldsModif, $arMsg); } unset($elementID); } } unset($newStorageTypeID, $oldStorageTypeID, $newElementIDs, $oldElementIDs); } return $arMsg; }
public static function TryGetInfo($typeID, $ID, &$info, $bCheckPermissions = false) { $typeID = intval($typeID); $ID = intval($ID); if ($ID <= 0) { return array(); } $result = null; switch ($typeID) { case self::Lead: $dbRes = CCrmLead::GetListEx(array(), array('=ID' => $ID, 'CHECK_PERMISSIONS' => $bCheckPermissions ? 'Y' : 'N'), false, false, array('TITLE')); $arRes = $dbRes ? $dbRes->Fetch() : null; if (is_array($arRes)) { $info = array('CAPTION' => isset($arRes['TITLE']) ? $arRes['TITLE'] : '', 'IMAGE_ID' => 0); return true; } break; case self::Contact: $dbRes = CCrmContact::GetListEx(array(), array('=ID' => $ID, 'CHECK_PERMISSIONS' => $bCheckPermissions ? 'Y' : 'N'), false, false, array('NAME', 'SECOND_NAME', 'LAST_NAME', 'PHOTO')); $arRes = $dbRes ? $dbRes->Fetch() : null; if (is_array($arRes)) { $info = array('CAPTION' => CUser::FormatName(\Bitrix\Crm\Format\PersonNameFormatter::getFormat(), array('LOGIN' => '', 'NAME' => isset($arRes['NAME']) ? $arRes['NAME'] : '', 'SECOND_NAME' => isset($arRes['SECOND_NAME']) ? $arRes['SECOND_NAME'] : '', 'LAST_NAME' => isset($arRes['LAST_NAME']) ? $arRes['LAST_NAME'] : ''), false, false), 'IMAGE_ID' => isset($arRes['PHOTO']) ? intval($arRes['PHOTO']) : 0); return true; } break; case self::Company: $dbRes = CCrmCompany::GetListEx(array(), array('=ID' => $ID, 'CHECK_PERMISSIONS' => $bCheckPermissions ? 'Y' : 'N'), false, false, array('TITLE', 'LOGO')); $arRes = $dbRes ? $dbRes->Fetch() : null; if (is_array($arRes)) { $info = array('CAPTION' => isset($arRes['TITLE']) ? $arRes['TITLE'] : '', 'IMAGE_ID' => isset($arRes['LOGO']) ? intval($arRes['LOGO']) : 0); return true; } break; case self::Deal: $dbRes = CCrmDeal::GetListEx(array(), array('=ID' => $ID, 'CHECK_PERMISSIONS' => $bCheckPermissions ? 'Y' : 'N'), false, false, array('TITLE')); $arRes = $dbRes ? $dbRes->Fetch() : null; if (is_array($arRes)) { $info = array('CAPTION' => isset($arRes['TITLE']) ? $arRes['TITLE'] : '', 'IMAGE_ID' => 0); return true; } break; case self::Invoice: $dbRes = CCrmInvoice::GetList(array(), array('ID' => $ID), false, false, array('ORDER_TOPIC')); $arRes = $dbRes ? $dbRes->Fetch() : null; if (is_array($arRes)) { $info = array('CAPTION' => isset($arRes['ORDER_TOPIC']) ? $arRes['ORDER_TOPIC'] : '', 'IMAGE_ID' => 0); return true; } break; case self::Quote: $dbRes = CCrmQuote::GetList(array(), array('=ID' => $ID, 'CHECK_PERMISSIONS' => $bCheckPermissions ? 'Y' : 'N'), false, false, array('TITLE')); $arRes = $dbRes ? $dbRes->Fetch() : null; if (is_array($arRes)) { $info = array('CAPTION' => isset($arRes['TITLE']) ? $arRes['TITLE'] : '', 'IMAGE_ID' => 0); return true; } break; } return false; }
return; } if (!CModule::IncludeModule('sale')) { ShowError(GetMessage('CRM_MODULE_NOT_INSTALLED_SALE')); return; } global $USER_FIELD_MANAGER, $USER, $APPLICATION, $DB; $CCrmPerms = CCrmPerms::GetCurrentUserPermissions(); if ($CCrmPerms->HavePerm('LEAD', BX_CRM_PERM_NONE, 'READ')) { ShowError(GetMessage('CRM_PERMISSION_DENIED')); return; } use Bitrix\Crm\EntityAddress; use Bitrix\Crm\Format\AddressSeparator; use Bitrix\Crm\Format\LeadAddressFormatter; $CCrmLead = new CCrmLead(false); $CCrmBizProc = new CCrmBizProc('LEAD'); $userID = CCrmSecurityHelper::GetCurrentUserID(); $isAdmin = CCrmPerms::IsAdmin(); $arParams['PATH_TO_LEAD_LIST'] = CrmCheckPath('PATH_TO_LEAD_LIST', $arParams['PATH_TO_LEAD_LIST'], $APPLICATION->GetCurPage()); $arParams['PATH_TO_LEAD_EDIT'] = CrmCheckPath('PATH_TO_LEAD_EDIT', $arParams['PATH_TO_LEAD_EDIT'], $APPLICATION->GetCurPage() . '?lead_id=#lead_id#&edit'); $arParams['PATH_TO_LEAD_SHOW'] = CrmCheckPath('PATH_TO_LEAD_SHOW', $arParams['PATH_TO_LEAD_SHOW'], $APPLICATION->GetCurPage() . '?lead_id=#lead_id#&show'); $arParams['PATH_TO_LEAD_CONVERT'] = CrmCheckPath('PATH_TO_LEAD_CONVERT', $arParams['PATH_TO_LEAD_CONVERT'], $APPLICATION->GetCurPage() . '?lead_id=#lead_id#&convert'); $arParams['PATH_TO_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_USER_BP'] = CrmCheckPath('PATH_TO_USER_BP', $arParams['PATH_TO_USER_BP'], '/company/personal/bizproc/'); $arParams['NAME_TEMPLATE'] = empty($arParams['NAME_TEMPLATE']) ? CSite::GetNameFormat(false) : str_replace(array("#NOBR#", "#/NOBR#"), array("", ""), $arParams["NAME_TEMPLATE"]); $arResult['CURRENT_USER_ID'] = CCrmSecurityHelper::GetCurrentUserID(); $arResult['IS_AJAX_CALL'] = isset($_REQUEST['bxajaxid']) || isset($_REQUEST['AJAX_CALL']); $arResult['SESSION_ID'] = bitrix_sessid(); $addressLabels = EntityAddress::getShortLabels();
public static function beforeViewDataQuery(&$select, &$filter, &$group, &$order, &$limit, &$options, &$runtime) { if (!isset($select['CRM_LEAD_COMPANY_BY_ID'])) { foreach ($select as $k => $v) { if (strpos($k, 'CRM_LEAD_COMPANY_BY_') === 0) { $select['CRM_LEAD_COMPANY_BY_ID'] = 'COMPANY_BY.ID'; break; } } } // HACK: Switch to order by STAGE_BY.SORT instead STAGE_BY.STATUS_ID // We are trying to adhere user defined sort rules. if (isset($order['STATUS_ID'])) { $select['CRM_LEAD_STATUS_BY_SORT'] = 'STATUS_BY.SORT'; $order['CRM_LEAD_STATUS_BY_SORT'] = $order['STATUS_ID']; unset($order['STATUS_ID']); } if (!isset($select['CRM_LEAD_CONTACT_BY_ID'])) { foreach ($select as $k => $v) { if (strpos($k, 'CRM_LEAD_CONTACT_BY_') === 0) { $select['CRM_LEAD_CONTACT_BY_ID'] = 'CONTACT_BY.ID'; break; } } } if (!isset($select['CRM_LEAD_CRM_PRODUCT_ROW_LEAD_OWNER_IBLOCK_ELEMENT_ID'])) { foreach ($select as $k => $v) { if (strpos($k, 'CRM_LEAD_CRM_PRODUCT_ROW_LEAD_OWNER_IBLOCK_ELEMENT_') === 0) { $select['CRM_LEAD_CRM_PRODUCT_ROW_LEAD_OWNER_IBLOCK_ELEMENT_ID'] = 'ProductRow:LEAD_OWNER.IBLOCK_ELEMENT.ID'; $select['CRM_LEAD_CRM_PRODUCT_ROW_LEAD_OWNER_IBLOCK_ELEMENT_IBLOCK_ID'] = 'ProductRow:LEAD_OWNER.IBLOCK_ELEMENT.IBLOCK_ID'; break; } } } // permission $addClause = CCrmLead::BuildPermSql('crm_lead'); if ($addClause === false) { // access dinied $filter = array($filter, '=ID' => '0'); } elseif (!empty($addClause)) { global $DB; // HACK: add escape chars for ORM $addClause = str_replace('crm_lead.ID', $DB->escL . 'crm_lead' . $DB->escR . '.ID', $addClause); $filter = array($filter, '=IS_ALLOWED' => '1'); $runtime['IS_ALLOWED'] = array('data_type' => 'integer', 'expression' => array('CASE WHEN ' . $addClause . ' THEN 1 ELSE 0 END')); } }
public static function GetEntityList($entityTypeID, $userID, $sortOrder, array $filter, $navParams = false) { $entityTypeID = (int) $entityTypeID; $userID = (int) $userID; $userIDs = array(0); if ($userID > 0) { $userIDs[] = $userID; } $lb = null; if ($entityTypeID === CCrmOwnerType::Lead) { $lb = CCrmLead::CreateListBuilder(); } else { if ($entityTypeID === CCrmOwnerType::Deal) { $lb = CCrmDeal::CreateListBuilder(); } else { if ($entityTypeID === CCrmOwnerType::Contact) { $lb = CCrmContact::CreateListBuilder(); } else { if ($entityTypeID === CCrmOwnerType::Company) { $lb = CCrmCompany::CreateListBuilder(); } } } } if (!$lb) { return null; } $fields = $lb->GetFields(); $entityAlias = $lb->GetTableAlias(); $join = 'LEFT JOIN ' . CCrmActivity::USER_ACTIVITY_TABLE_NAME . ' UA ON UA.USER_ID IN (' . implode(',', $userIDs) . ') AND UA.OWNER_ID = ' . $entityAlias . '.ID AND UA.OWNER_TYPE_ID = ' . $entityTypeID; $fields['ACTIVITY_USER_ID'] = array('FIELD' => 'MAX(UA.USER_ID)', 'TYPE' => 'int', 'FROM' => $join); $fields['ACTIVITY_SORT'] = array('FIELD' => 'MAX(UA.SORT)', 'TYPE' => 'string', 'FROM' => $join); $lb->SetFields($fields); $sortOrder = strtoupper($sortOrder); if ($sortOrder !== 'DESC' && $sortOrder !== 'ASC') { $sortOrder = 'ASC'; } $options = array('PERMISSION_SQL_TYPE' => 'FROM', 'PERMISSION_SQL_UNION' => 'DISTINCT'); return $lb->Prepare(array('ACTIVITY_USER_ID' => 'DESC', 'ACTIVITY_SORT' => $sortOrder, 'ID' => $sortOrder), $filter, array('ID'), $navParams, array('ID'), $options); }
<?php if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) { die; } global $APPLICATION; use Bitrix\Crm\Integrity; if (!CModule::IncludeModule('crm')) { ShowError(GetMessage('CRM_MODULE_NOT_INSTALLED')); return; } $userID = CCrmSecurityHelper::GetCurrentUserID(); $isAdminUser = CCrmPerms::IsAdmin($userID); $userPermissions = CCrmPerms::GetUserPermissions($userID); $enablePermissionCheck = !$isAdminUser; if (!CCrmContact::CheckReadPermission(0, $userPermissions) && !CCrmCompany::CheckReadPermission(0, $userPermissions) && !CCrmLead::CheckReadPermission(0, $userPermissions)) { ShowError(GetMessage('CRM_PERMISSION_DENIED')); return; } $arResult['USER_ID'] = $userID; $listID = isset($arParams['LIST_ID']) ? $arParams['LIST_ID'] : ''; if ($listID === '') { $listID = uniqid('dedupe_'); } $arResult['LIST_ID'] = $listID; $arResult['ERRORS'] = array(); $arResult['MESSAGES'] = array(); $entityTypeID = isset($arParams['ENTITY_TYPE_ID']) ? intval($arParams['ENTITY_TYPE_ID']) : CCrmOwnerType::Undefined; if ($entityTypeID === CCrmOwnerType::Undefined && isset($arParams['ENTITY_TYPE'])) { $entityTypeID = CCrmOwnerType::ResolveID($arParams['ENTITY_TYPE']); }
$arStatus['SOURCE_LIST'] = CCrmStatus::GetStatusListEx('SOURCE'); $arStatus['OPENED_LIST'] = array('Y' => GetMessage('MAIN_YES'), 'N' => GetMessage('MAIN_NO')); $csvFile = new CCSVData(); $csvFile->LoadFile($_SESSION['CRM_IMPORT_FILE']); $csvFile->SetFieldsType('R'); $csvFile->SetPos($_SESSION['CRM_IMPORT_FILE_POS']); $csvFile->SetFirstHeader($_SESSION['CRM_IMPORT_FILE_FIRST_HEADER']); $csvFile->SetDelimiter($_SESSION['CRM_IMPORT_FILE_SEPORATOR']); $arResult = array(); $arResult['import'] = 0; $arResult['duplicate'] = 0; $arResult['duplicate_url'] = ''; $arResult['error'] = 0; $arResult['error_data'] = array(); $arResult['errata_url'] = ''; $CCrmLead = new CCrmLead(); $arLeads = array(); $filePos = 0; $usersByID = array(); $usersByName = array(); $defaultUserID = isset($_SESSION['CRM_IMPORT_DEFAULT_RESPONSIBLE_ID']) ? intval($_SESSION['CRM_IMPORT_DEFAULT_RESPONSIBLE_ID']) : 0; $userNameFormat = isset($_SESSION['CRM_IMPORT_IMPORT_NAME_FORMAT']) && \Bitrix\Crm\Format\PersonNameFormatter::isDefined($_SESSION['CRM_IMPORT_IMPORT_NAME_FORMAT']) ? intval($_SESSION['CRM_IMPORT_IMPORT_NAME_FORMAT']) : \Bitrix\Crm\Format\PersonNameFormatter::FirstLast; $dupCtrlType = isset($_SESSION['CRM_IMPORT_DUP_CONTROL_TYPE']) ? $_SESSION['CRM_IMPORT_DUP_CONTROL_TYPE'] : ''; if (!in_array($dupCtrlType, array('REPLACE', 'MERGE', 'SKIP'), true)) { $dupCtrlType = 'NO_CONTROL'; } $enableDupCtrlByPerson = isset($_SESSION['CRM_IMPORT_DUP_CONTROL_ENABLE_PERSON']) ? $_SESSION['CRM_IMPORT_DUP_CONTROL_ENABLE_PERSON'] : false; $enableDupCtrlByOrganization = isset($_SESSION['CRM_IMPORT_DUP_CONTROL_ENABLE_ORGANIZATION']) ? $_SESSION['CRM_IMPORT_DUP_CONTROL_ENABLE_ORGANIZATION'] : false; $enableDupCtrlByPhone = isset($_SESSION['CRM_IMPORT_DUP_CONTROL_ENABLE_PHONE']) ? $_SESSION['CRM_IMPORT_DUP_CONTROL_ENABLE_PHONE'] : false; $enableDupCtrlByEmail = isset($_SESSION['CRM_IMPORT_DUP_CONTROL_ENABLE_EMAIL']) ? $_SESSION['CRM_IMPORT_DUP_CONTROL_ENABLE_EMAIL'] : false; $mappedFields = isset($_SESSION['CRM_IMPORT_MAPPED_FIELDS']) ? $_SESSION['CRM_IMPORT_MAPPED_FIELDS'] : array();
// page count $arResult['PAGER_PARAM'] = "PAGEN_{$arResult['PAGE_NAVNUM']}"; $arResult['PAGE_NEXT_NUMBER'] = $arResult['PAGE_NUMBER'] + 1; while ($item = $dbRes->Fetch()) { $itemID = intval($item['ID']); $ownerID = intval($item['OWNER_ID']); $ownerTypeID = intval($item['OWNER_TYPE_ID']); CCrmMobileHelper::PrepareActivityItem($item, $arParams, array('ENABLE_COMMUNICATIONS' => false)); $arResult['ITEMS'][] =& $item; unset($item); } if ($arResult['PAGE_NEXT_NUMBER'] > $arResult['PAGE_NAVCOUNT']) { $arResult['NEXT_PAGE_URL'] = ''; } else { $arResult['NEXT_PAGE_URL'] = $APPLICATION->GetCurPageParam('AJAX_CALL=Y&PAGING=Y&FORMAT=json&' . $arResult['PAGER_PARAM'] . '=' . $arResult['PAGE_NEXT_NUMBER'], array('AJAX_CALL', 'PAGING', 'FORMAT', 'SEARCH', $arResult['PAGER_PARAM'])); } $arResult['SEARCH_PAGE_URL'] = $APPLICATION->GetCurPageParam('AJAX_CALL=Y&SEARCH=Y&FORMAT=json&apply_filter=Y&save=Y', array('AJAX_CALL', 'SEARCH', 'FORMAT', 'save', 'apply_filter', 'clear_filter')); $arResult['SERVICE_URL'] = SITE_DIR . 'bitrix/components/bitrix/mobile.crm.activity.list/ajax.php?siteID=' . SITE_ID . '&' . bitrix_sessid_get(); $arResult['IS_FILTERED'] = !empty($filter); $arResult['CREATE_CALL_URL'] = $arParams['ACTIVITY_CREATE_URL_TEMPLATE'] !== '' ? CComponentEngine::makePathFromTemplate($arParams['ACTIVITY_CREATE_URL_TEMPLATE'], array('owner_type' => $entityTypeName, 'owner_id' => $entityID, 'type_id' => CCrmActivityType::Call)) : ''; $arResult['CREATE_MEETING_URL'] = $arParams['ACTIVITY_CREATE_URL_TEMPLATE'] !== '' ? CComponentEngine::makePathFromTemplate($arParams['ACTIVITY_CREATE_URL_TEMPLATE'], array('owner_type' => $entityTypeName, 'owner_id' => $entityID, 'type_id' => CCrmActivityType::Meeting)) : ''; $arResult['CREATE_EMAIL_URL'] = $arParams['ACTIVITY_CREATE_URL_TEMPLATE'] !== '' ? CComponentEngine::makePathFromTemplate($arParams['ACTIVITY_CREATE_URL_TEMPLATE'], array('owner_type' => $entityTypeName, 'owner_id' => $entityID, 'type_id' => CCrmActivityType::Email)) : ''; $arResult['RELOAD_URL'] = $APPLICATION->GetCurPageParam('AJAX_CALL=Y&FORMAT=json', array('AJAX_CALL', 'SEARCH', 'FORMAT', 'save', 'apply_filter', 'clear_filter')); //Require any update permission $arResult['PERMISSIONS'] = array('CREATE' => CCrmLead::CheckUpdatePermission(0, $userPerms) || CCrmCompany::CheckUpdatePermission(0, $userPerms) || CCrmContact::CheckUpdatePermission(0, $userPerms) || CCrmDeal::CheckUpdatePermission(0, $userPerms)); $format = isset($_REQUEST['FORMAT']) ? strtolower($_REQUEST['FORMAT']) : ''; // Only JSON format is supported if ($format !== '' && $format !== 'json') { $format = ''; } $this->IncludeComponentTemplate($format);
} if ($arSettings['LEAD'] == 'Y' && isset($arSelected['LEAD']) && !empty($arSelected['LEAD'])) { $hasNameFormatter = method_exists("CCrmLead", "PrepareFormattedName"); $obRes = CCrmLead::GetListEx(array('ID' => 'DESC'), array('=ID' => $arSelected['LEAD']), false, false, $hasNameFormatter ? array('ID', 'TITLE', 'HONORIFIC', 'NAME', 'SECOND_NAME', 'LAST_NAME') : array('ID', 'TITLE', 'FULL_NAME')); $arFiles = array(); $ar = array(); while ($arRes = $obRes->Fetch()) { $arRes['SID'] = $arResult['PREFIX'] == 'Y' ? 'L_' . $arRes['ID'] : $arRes['ID']; if (isset($arResult['SELECTED'][$arRes['SID']])) { unset($arResult['SELECTED'][$arRes['SID']]); $sSelected = 'Y'; } else { $sSelected = 'N'; } if ($hasNameFormatter) { $description = 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'] : '')); } else { $description = isset($arRes['FULL_NAME']) ? $arRes['FULL_NAME'] : ''; } $ar[] = array('title' => str_replace(array(';', ','), ' ', $arRes['TITLE']), 'desc' => $description, 'id' => $arRes['SID'], 'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_lead_show'), array('lead_id' => $arRes['ID'])), 'type' => 'lead', 'selected' => $sSelected); } $arResult['ELEMENT'] = array_merge($ar, $arResult['ELEMENT']); } if ($arSettings['CONTACT'] == 'Y' && isset($arSelected['CONTACT']) && !empty($arSelected['CONTACT'])) { $hasNameFormatter = method_exists("CCrmContact", "PrepareFormattedName"); $obRes = CCrmContact::GetListEx(array('ID' => 'DESC'), array('=ID' => $arSelected['CONTACT']), false, false, $hasNameFormatter ? array('ID', 'HONORIFIC', 'NAME', 'SECOND_NAME', 'LAST_NAME', 'COMPANY_TITLE', 'PHOTO') : array('ID', 'FULL_NAME', 'COMPANY_TITLE', 'PHOTO')); $ar = array(); while ($arRes = $obRes->Fetch()) { $arImg = array(); if (!empty($arRes['PHOTO']) && !isset($arFiles[$arRes['PHOTO']])) { if (intval($arRes['PHOTO']) > 0) {
$contextID = $_REQUEST['context_id']; } if ($contextID === '') { $contextID = "{$uid}_{$entityID}"; } $arResult['CONTEXT_ID'] = $arParams['CONTEXT_ID'] = $contextID; //<-- CONTEXT_ID $serviceURLTemplate = $arParams["SERVICE_URL_TEMPLATE"] ? $arParams["SERVICE_URL_TEMPLATE"] : '#SITE_DIR#bitrix/components/bitrix/mobile.crm.lead.edit/ajax.php?site_id=#SITE#&sessid=#SID#'; $arResult['SERVICE_URL'] = CComponentEngine::makePathFromTemplate($serviceURLTemplate, array('SID' => bitrix_sessid())); $dbFields = CCrmLead::GetListEx(array(), array('ID' => $entityID)); $arFields = $dbFields->GetNext(); if (!$arFields) { ShowError(GetMessage('CRM_LEAD_VIEW_NOT_FOUND', array('#ID#' => $arParams['ENTITY_ID']))); return; } $arResult['PERMISSIONS'] = array('EDIT' => CCrmLead::CheckUpdatePermission($entityID, $userPerms) && $arFields['STATUS_ID'] !== 'CONVERTED', 'DELETE' => CCrmLead::CheckDeletePermission($entityID, $userPerms)); $arResult['STATUS_LIST'] = CCrmStatus::GetStatusList('STATUS'); $arResult['SOURCE_LIST'] = CCrmStatus::GetStatusList('SOURCE'); $arResult['CURRENCY_LIST'] = CCrmCurrencyHelper::PrepareListItems(); CCrmMobileHelper::PrepareLeadItem($arFields, $arParams, array('STATUS_LIST' => $arResult['STATUS_LIST'], 'SOURCE_LIST' => $arResult['SOURCE_LIST'])); $arFields['FM'] = array(); $dbMultiFields = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => 'LEAD', 'ELEMENT_ID' => $entityID)); if ($dbMultiFields) { while ($multiFields = $dbMultiFields->Fetch()) { $arFields['FM'][$multiFields['TYPE_ID']][] = array('VALUE' => $multiFields['VALUE'], 'VALUE_TYPE' => $multiFields['VALUE_TYPE']); } } $arResult['CALLTO'] = CCrmMobileHelper::PrepareCalltoParams(array('COMMUNICATION_LIST_URL_TEMPLATE' => $arParams['COMMUNICATION_LIST_URL_TEMPLATE'], 'ENTITY_TYPE_ID' => CCrmOwnerType::Lead, 'ENTITY_ID' => $entityID, 'FM' => $arFields['FM'])); $arResult['MAILTO'] = CCrmMobileHelper::PrepareMailtoParams(array('COMMUNICATION_LIST_URL_TEMPLATE' => $arParams['COMMUNICATION_LIST_URL_TEMPLATE'], 'ENTITY_TYPE_ID' => CCrmOwnerType::Lead, 'ENTITY_ID' => $entityID, 'FM' => $arFields['FM'])); $arFields['PRODUCT_ROWS_QUANTITY'] = CAllCrmProductRow::GetRowQuantity(CCrmOwnerTypeAbbr::ResolveByTypeID(CCrmOwnerType::Lead), $entityID); $arFields['PRODUCT_ROWS_URL'] = $arParams['PRODUCT_ROW_LIST_URL_TEMPLATE'] !== '' ? CComponentEngine::MakePathFromTemplate($arParams['PRODUCT_ROW_LIST_URL_TEMPLATE'], array('entity_type_id' => CCrmOwnerType::Lead, 'entity_id' => $entityID)) : '';
foreach ($arResult['VALUE'] as $value) { if ($arParams['PREFIX']) { $ar = explode('_', $value); $arValue[CUserTypeCrm::GetLongEntityType($ar[0])][] = intval($ar[1]); } else { if (is_numeric($value)) { $arValue[$arParams['ENTITY_TYPE'][0]][] = $value; } else { $ar = explode('_', $value); $arValue[CUserTypeCrm::GetLongEntityType($ar[0])][] = intval($ar[1]); } } } $arResult['VALUE'] = array(); if ($arParams['arUserField']['SETTINGS']['LEAD'] == 'Y' && isset($arValue['LEAD']) && !empty($arValue['LEAD'])) { $dbRes = CCrmLead::GetList(array('TITLE' => 'ASC', 'LAST_NAME' => 'ASC', 'NAME' => 'ASC'), array('ID' => $arValue['LEAD'])); while ($arRes = $dbRes->Fetch()) { $arResult['VALUE']['LEAD'][$arRes['ID']] = array('ENTITY_TITLE' => $arRes['TITLE'], 'ENTITY_LINK' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_lead_show'), array('lead_id' => $arRes['ID']))); } } if ($arParams['arUserField']['SETTINGS']['CONTACT'] == 'Y' && isset($arValue['CONTACT']) && !empty($arValue['CONTACT'])) { $dbRes = CCrmContact::GetList(array('LAST_NAME' => 'ASC', 'NAME' => 'ASC'), array('ID' => $arValue['CONTACT'])); while ($arRes = $dbRes->Fetch()) { $arResult['VALUE']['CONTACT'][$arRes['ID']] = array('ENTITY_TITLE' => $arRes['FULL_NAME'], 'ENTITY_LINK' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_contact_show'), array('contact_id' => $arRes['ID']))); } } if ($arParams['arUserField']['SETTINGS']['COMPANY'] == 'Y' && isset($arValue['COMPANY']) && !empty($arValue['COMPANY'])) { $dbRes = CCrmCompany::GetList(array('TITLE' => 'ASC'), array('ID' => $arValue['COMPANY'])); while ($arRes = $dbRes->Fetch()) { $arResult['VALUE']['COMPANY'][$arRes['ID']] = array('ENTITY_TITLE' => $arRes['TITLE'], 'ENTITY_LINK' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_company_show'), array('company_id' => $arRes['ID']))); }
$arUser = $rsUser->Fetch(); $arCal['OWNER_ID'] = CUser::FormatName($arParams["NAME_TEMPLATE"], $arUser, true); } $arCal['ENTITY_TYPE'] = $arCalEntityData['TYPE']; $arCal['ENTITY_ID'] = $arCalEntityData['ID']; $arCalList[$arCalEntityData['TYPE']][$arCalEntityData['ID']] = array(); $arResult['CAL'][$arCal['ID'] . '_' . $sCalRel] = $arCal; $i++; } if ($iAddTask != 0) { $arResult['ROWS_COUNT'] += $iAddTask; } } if ($arResult['ACTIVITY_ENTITY_LINK'] == 'Y') { if (isset($arCalList['LEAD']) && !empty($arCalList['LEAD'])) { $dbRes = CCrmLead::GetList(array('TITLE' => 'ASC', 'LAST_NAME' => 'ASC', 'NAME' => 'ASC'), array('ID' => array_keys($arCalList['LEAD']))); while ($arRes = $dbRes->Fetch()) { $arCalList['LEAD'][$arRes['ID']] = array('ENTITY_TITLE' => $arRes['TITLE'], 'ENTITY_LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_LEAD_SHOW'], array('lead_id' => $arRes['ID']))); } } if (isset($arCalList['CONTACT']) && !empty($arCalList['CONTACT'])) { $dbRes = CCrmContact::GetList(array('LAST_NAME' => 'ASC', 'NAME' => 'ASC'), array('ID' => array_keys($arCalList['CONTACT']))); while ($arRes = $dbRes->Fetch()) { $arCalList['CONTACT'][$arRes['ID']] = array('ENTITY_TITLE' => $arRes['LAST_NAME'] . ' ' . $arRes['NAME'], 'ENTITY_LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_CONTACT_SHOW'], array('contact_id' => $arRes['ID']))); } } if (isset($arCalList['COMPANY']) && !empty($arCalList['COMPANY'])) { $dbRes = CCrmCompany::GetList(array('TITLE' => 'ASC'), array('ID' => array_keys($arCalList['COMPANY']))); while ($arRes = $dbRes->Fetch()) { $arCalList['COMPANY'][$arRes['ID']] = array('ENTITY_TITLE' => $arRes['TITLE'], 'ENTITY_LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_COMPANY_SHOW'], array('company_id' => $arRes['ID']))); }
$CCrmRole->SetRelation($arRel); /* INSTALL DEMO-DATA */ // copy files CopyDirFiles(WIZARD_ABSOLUTE_PATH . "/site/services/crm/images/", WIZARD_SITE_PATH . '/upload/crm', true, true); // Create default product catalog $catalogID = CCrmCatalog::EnsureDefaultExists(); $currencyID = CCrmCurrency::GetBaseCurrencyID(); // Creation of demo products require_once "product.demo.php"; if (COption::GetOptionString('crm', '~CRM_INVOICE_INSTALL_12_5_7', 'N') !== 'Y') { require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/crm/install/sale_link.php"; } CCrmProductDemo::Create($catalogID); // Add lead require_once "lead.demo.php"; $CCrmLead = new CCrmLead(); foreach ($arLeads as $ID => $arParams) { $arProductRows = null; if (isset($arParams['PRODUCT_ROWS'])) { $arProductRows = $arParams['PRODUCT_ROWS']; unset($arParams['PRODUCT_ROWS']); } $arParams['CURRENCY_ID'] = $currencyID; $leadID = $CCrmLead->Add($arParams); $arLeads[$ID]['ID'] = $leadID; if (is_array($arProductRows)) { foreach ($arProductRows as &$arProductRow) { $originID = $arProductRow['ORIGIN_ID']; $arProduct = CCrmProduct::GetByOriginID($originID, $catalogID); if (!is_array($arProduct)) { continue;
if (isset($productID[0])) { $arProductRows = CCrmLead::LoadProductRows($ID); if (count($arProductRows) > 0) { // already converted continue; } $arProduct = CCrmProduct::GetByOriginID('CRM_PROD_' . $productID); if (!is_array($arProduct)) { continue; } $productID = isset($arProduct['ID']) ? $arProduct['ID'] : 0; if ($productID <= 0) { continue; } $arProductRows = array(array('PRODUCT_ID' => $productID, 'PRICE' => isset($arLead['OPPORTUNITY']) ? doubleval($arLead['OPPORTUNITY']) : 0.0, 'QUANTITY' => 1)); CCrmLead::SaveProductRows($ID, $arProductRows); } } COption::SetOptionString('crm', '~crm_11_0_6_convertion', 'Y'); } // <-- Convert LEAD CURRENCY and PRODUCT // Convert DEAL EVENTS --> if (COption::GetOptionString('crm', '~CRM_DEAL_EVENT_CONVERT_11_5_7', 'N') !== 'Y') { $dbDeals = CCrmDeal::GetListEx(array(), array('@EVENT_ID' => array('PHONE', 'INFO')), false, false, array()); while ($arDeal = $dbDeals->Fetch()) { CCrmActivity::CreateFromDealEvent($arDeal); } COption::SetOptionString('crm', '~CRM_DEAL_EVENT_CONVERT_11_5_7', 'Y'); } // <-- Convert DEAL EVENTS // SETUP DEFAULT RESPONSIBLE FOR COMPANIES-->
$arResult['CURRENCY_ID'] = isset($arOwner['CURRENCY_ID']) ? $arOwner['CURRENCY_ID'] : CCrmCurrency::GetBaseCurrencyID(); $arResult['SUM'] = isset($arOwner['OPPORTUNITY']) ? $arOwner['OPPORTUNITY'] : 0.0; } else { $arResult['TITLE'] = ''; $arResult['CURRENCY_ID'] = CCrmCurrency::GetBaseCurrencyID(); $arResult['SUM'] = 0.0; } $productRows = CCrmProductRow::LoadRows(CCrmOwnerTypeAbbr::Deal, $entityID); foreach ($productRows as &$productRow) { $productRow['FORMATTED_PRICE'] = CCrmCurrency::MoneyToString($productRow['PRICE'], $arResult['CURRENCY_ID']); $arResult['ITEMS'][] = $productRow; } unset($productRow); $arResult['FORMATTED_SUM'] = CCrmCurrency::MoneyToString($arResult['SUM'], $arResult['CURRENCY_ID']); } elseif ($entityTypeID === CCrmOwnerType::Lead) { $dbRes = CCrmLead::GetListEx(array(), array('ID' => $entityID, 'CHECK_PERMISSIONS' => 'N'), false, false, array('TITLE', 'CURRENCY_ID', 'OPPORTUNITY')); $arOwner = $dbRes ? $dbRes->Fetch() : null; if ($arOwner) { $arResult['TITLE'] = isset($arOwner['TITLE']) ? $arOwner['TITLE'] : ''; $arResult['CURRENCY_ID'] = isset($arOwner['CURRENCY_ID']) ? $arOwner['CURRENCY_ID'] : CCrmCurrency::GetBaseCurrencyID(); $arResult['SUM'] = isset($arOwner['OPPORTUNITY']) ? $arOwner['OPPORTUNITY'] : 0.0; } else { $arResult['TITLE'] = ''; $arResult['CURRENCY_ID'] = CCrmCurrency::GetBaseCurrencyID(); $arResult['SUM'] = 0.0; } $productRows = CCrmProductRow::LoadRows(CCrmOwnerTypeAbbr::Lead, $entityID); foreach ($productRows as &$productRow) { $productRow['FORMATTED_PRICE'] = CCrmCurrency::MoneyToString($productRow['PRICE'], $arResult['CURRENCY_ID']); $arResult['ITEMS'][] = $productRow; }
public function Add($data) { global $DB; if (($r = self::CheckAuth()) !== false) { return $r; } $arFieldsInfo = CCrmLead::GetFields(); $arFields = array(); $arEl = $data->elementsByName('Field'); foreach ($arEl as $child) { $children = $child->children(); $sFieldName = $child->getAttribute('id'); // Fix for issue #40193 if (!isset($arFieldsInfo[$sFieldName])) { continue; } if (!is_null($children)) { $arFields[$sFieldName] = array(); foreach ($children as $child) { $arFields[$sFieldName][] = $child->content; } } else { $arFields[$sFieldName] = $child->content; } } CCrmFieldMulti::PrepareFields($arFields); $CCrmUserType = new CCrmUserType($GLOBALS['USER_FIELD_MANAGER'], CCrmLead::$sUFEntityID); $CCrmUserType->InternalizeFields($arFields, ','); $CCrmBizProc = new CCrmBizProc('LEAD'); if (false === $CCrmBizProc->CheckFields(false, true)) { return new CSoapFault('CCrmLead::Add Bizproc', htmlspecialcharsbx(strip_tags(nl2br($CCrmBizProc->LAST_ERROR)))); } $CCrmLead = new CCrmLead(); $DB->StartTransaction(); $ID = $CCrmLead->Add($arFields); if ($ID !== false && !$CCrmBizProc->StartWorkflow($ID)) { $DB->Rollback(); return new CSoapFault('CCrmLead::Add Bizproc', htmlspecialcharsbx(strip_tags(nl2br($CCrmBizProc->LAST_ERROR)))); } if ($ID === false) { $DB->Rollback(); return new CSoapFault('CCrmLead::Add', htmlspecialcharsbx(strip_tags(nl2br($arFields['RESULT_MESSAGE'])))); } $DB->Commit(); return 'ok'; }