public static function installDefault() { $items = array(); $langIDs = self::getAllLangIDs(); foreach ($langIDs as $langID) { IncludeModuleLangFile(__FILE__, $langID); $s = trim(GetMessage('CRM_HONORIFIC_DEFAULT')); if ($s === '' || $s === '-') { //Skip stub continue; } $slugs = explode('|', $s); $slugCount = count($slugs); for ($i = 0; $i < $slugCount; $i++) { $ary = explode(';', $slugs[$i]); $count = count($ary); if ($count >= 2) { $name = trim($ary[1]); $statusID = trim($ary[0]); } else { $name = trim($ary[0]); $statusID = ''; } if ($statusID === '') { $statusID = 'HNR_' . strtoupper($langID) . '_' . ($i + 1); } if ($name === '' || isset($items[$statusID])) { continue; } $items[$statusID] = array('STATUS_ID' => $statusID, 'NAME' => $name, 'SORT' => ($i + 1) * 10, 'SYSTEM' => 'N'); } } $statusEntity = new \CCrmStatus('HONORIFIC'); $presentItems = \CCrmStatus::GetStatusList('HONORIFIC'); foreach ($items as $item) { if (!isset($presentItems[$item['STATUS_ID']])) { $statusEntity->Add($item); } } }
public static function LocalComponentCausedUpdater() { global $stackCacheManager; $bResult = true; $errMsg = array(); // at first, check last update version if (COption::GetOptionString('crm', '~CRM_QUOTE_14_1_11', 'N') === 'Y') { return $bResult; } try { // Copy perms from deals to quotes $CCrmRole = new CCrmRole(); $dbRoles = $CCrmRole->GetList(); while ($arRole = $dbRoles->Fetch()) { $arPerms = $CCrmRole->GetRolePerms($arRole['ID']); if (!isset($arPerms['QUOTE']) && is_array($arPerms['DEAL'])) { foreach ($arPerms['DEAL'] as $key => $value) { if (isset($value['-'])) { $arPerms['QUOTE'][$key]['-'] = $value['-']; } else { $arPerms['QUOTE'][$key]['-'] = null; } } } $arFields = array('RELATION' => $arPerms); $CCrmRole->Update($arRole['ID'], $arFields); } // Create default quote status list (if not exists) $arStatus = CCrmStatus::GetStatus('QUOTE_STATUS'); if (empty($arStatus)) { $CCrmStatus = new CCrmStatus('QUOTE_STATUS'); $arAdd = array(array('NAME' => GetMessage('CRM_QUOTE_STATUS_DRAFT'), 'STATUS_ID' => 'DRAFT', 'SORT' => 10, 'SYSTEM' => 'Y'), array('NAME' => GetMessage('CRM_QUOTE_STATUS_SENT'), 'STATUS_ID' => 'SENT', 'SORT' => 20, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_QUOTE_STATUS_RECEIVED'), 'STATUS_ID' => 'RECEIVED', 'SORT' => 30, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_QUOTE_STATUS_APPROVED'), 'STATUS_ID' => 'APPROVED', 'SORT' => 40, 'SYSTEM' => 'Y'), array('NAME' => GetMessage('CRM_QUOTE_STATUS_UNANSWERED'), 'STATUS_ID' => 'UNANSWERED', 'SORT' => 50, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_QUOTE_STATUS_DECLAINED'), 'STATUS_ID' => 'DECLAINED', 'SORT' => 60, 'SYSTEM' => 'Y')); foreach ($arAdd as $ar) { $CCrmStatus->Add($ar); } $stackCacheManager->Clear('b_crm_status', 'QUOTE_STATUS'); } unset($arStatus); } catch (Exception $e) { $errMsg[] = $e->getMessage(); } if (empty($errMsg)) { COption::SetOptionString('crm', '~CRM_QUOTE_14_1_11', 'Y'); } else { $errString = implode('<br>', $errMsg); ShowError($errString); $bResult = false; } return $bResult; }
if (!$CCrmStatus) { $CCrmStatus = new CCrmStatus($entityId); } foreach ($arFields as $id => $arField) { $arField['SORT'] = (int) $arField['SORT']; if ($arField['SORT'] <= $iPrevSort) { $arField['SORT'] = $iPrevSort + 10; } $iPrevSort = $arField['SORT']; if (substr($id, 0, 1) == 'n') { if (trim($arField['VALUE']) == "") { continue; } $arAdd['NAME'] = trim($arField['VALUE']); $arAdd['SORT'] = $arField['SORT']; $CCrmStatus->Add($arAdd); } else { if (!isset($arField['VALUE']) || trim($arField['VALUE']) == "") { $arCurrentData = $CCrmStatus->GetStatusById($id); if ($arCurrentData['SYSTEM'] == 'N') { $CCrmStatus->Delete($id); } else { $arUpdate['NAME'] = trim($arCurrentData['NAME_INIT']); $CCrmStatus->Update($id, $arUpdate); } } else { $arCurrentData = $CCrmStatus->GetStatusById($id); if (trim($arField['VALUE']) != $arCurrentData['NAME'] || intval($arField['SORT']) != $arCurrentData['SORT']) { $arUpdate['NAME'] = trim($arField['VALUE']); $arUpdate['SORT'] = $arField['SORT']; $CCrmStatus->Update($id, $arUpdate);
protected function innerAdd(&$fields, &$errors, array $params = null) { if (!CCrmStatus::CheckCreatePermission()) { $errors[] = 'Access denied.'; return false; } $entityID = isset($fields['ENTITY_ID']) ? $fields['ENTITY_ID'] : ''; $statusID = isset($fields['STATUS_ID']) ? $fields['STATUS_ID'] : ''; if ($entityID === '' || $statusID === '') { if ($entityID === '') { $errors[] = 'The field ENTITY_ID is required.'; } if ($statusID === '') { $errors[] = 'The field STATUS_ID is required.'; } return false; } $entityTypes = self::prepareEntityTypes(); if (!isset($entityTypes[$entityID])) { $errors[] = 'Specified entity type is not supported.'; return false; } $fields['SYSTEM'] = 'N'; $entity = new CCrmStatus($entityID); $result = $entity->Add($fields, true); if ($result === false) { $errors[] = $entity->GetLastError(); } return $result; }
function InstallDB() { global $DB, $APPLICATION, $USER; global $USER_FIELD_MANAGER; $this->errors = false; if (!$DB->Query("SELECT 'x' FROM b_crm_lead", true)) { $this->errors = $DB->RunSQLBatch($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/crm/install/db/' . strtolower($DB->type) . '/install.sql'); //COption::SetOptionString('crm', 'GROUP_DEFAULT_RIGHT', 'R'); require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/crm/include.php'; // Create default status list $CCrmStatus = new CCrmStatus('STATUS'); $arAdd = array(array('NAME' => GetMessage('CRM_STATUS_TYPE_STATUS_NEW'), 'STATUS_ID' => 'NEW', 'SORT' => 10, 'SYSTEM' => 'Y'), array('NAME' => GetMessage('CRM_STATUS_TYPE_STATUS_ASSIGNED'), 'STATUS_ID' => 'ASSIGNED', 'SORT' => 20, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_STATUS_TYPE_STATUS_DETAILS'), 'STATUS_ID' => 'DETAILS', 'SORT' => 30, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_STATUS_TYPE_STATUS_CANNOT_CONTACT'), 'STATUS_ID' => 'CANNOT_CONTACT', 'SORT' => 40, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_STATUS_TYPE_STATUS_IN_PROCESS'), 'STATUS_ID' => 'IN_PROCESS', 'SORT' => 50, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_STATUS_TYPE_STATUS_ON_HOLD'), 'STATUS_ID' => 'ON_HOLD', 'SORT' => 60, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_STATUS_TYPE_STATUS_RESTORED'), 'STATUS_ID' => 'RESTORED', 'SORT' => 70, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_STATUS_TYPE_STATUS_CONVERTED'), 'STATUS_ID' => 'CONVERTED', 'SORT' => 80, 'SYSTEM' => 'Y'), array('NAME' => GetMessage('CRM_STATUS_TYPE_STATUS_JUNK'), 'STATUS_ID' => 'JUNK', 'SORT' => 90, 'SYSTEM' => 'Y')); foreach ($arAdd as $ar) { $CCrmStatus->Add($ar); } // Create default source list $CCrmStatus = new CCrmStatus('SOURCE'); $arAdd = array(array('NAME' => GetMessage('CRM_STATUS_TYPE_SOURCE_SELF'), 'STATUS_ID' => 'SELF', 'SORT' => 10, 'SYSTEM' => 'Y'), array('NAME' => GetMessage('CRM_STATUS_TYPE_SOURCE_PARTNER'), 'STATUS_ID' => 'PARTNER', 'SORT' => 20), array('NAME' => GetMessage('CRM_STATUS_TYPE_SOURCE_CALL'), 'STATUS_ID' => 'CALL', 'SORT' => 30), array('NAME' => GetMessage('CRM_STATUS_TYPE_SOURCE_WEB'), 'STATUS_ID' => 'WEB', 'SORT' => 40), array('NAME' => GetMessage('CRM_STATUS_TYPE_SOURCE_EMAIL'), 'STATUS_ID' => 'EMAIL', 'SORT' => 50), array('NAME' => GetMessage('CRM_STATUS_TYPE_SOURCE_CONFERENCE'), 'STATUS_ID' => 'CONFERENCE', 'SORT' => 60), array('NAME' => GetMessage('CRM_STATUS_TYPE_SOURCE_TRADE_SHOW'), 'STATUS_ID' => 'TRADE_SHOW', 'SORT' => 70), array('NAME' => GetMessage('CRM_STATUS_TYPE_SOURCE_EMPLOYEE'), 'STATUS_ID' => 'EMPLOYEE', 'SORT' => 80), array('NAME' => GetMessage('CRM_STATUS_TYPE_SOURCE_COMPANY'), 'STATUS_ID' => 'COMPANY', 'SORT' => 90), array('NAME' => GetMessage('CRM_STATUS_TYPE_SOURCE_HR'), 'STATUS_ID' => 'HR', 'SORT' => 100), array('NAME' => GetMessage('CRM_STATUS_TYPE_SOURCE_MAIL'), 'STATUS_ID' => 'MAIL', 'SORT' => 110), array('NAME' => GetMessage('CRM_STATUS_TYPE_SOURCE_OTHER'), 'STATUS_ID' => 'OTHER', 'SORT' => 120)); foreach ($arAdd as $ar) { $CCrmStatus->Add($ar); } // Create default contact type list $CCrmStatus = new CCrmStatus('CONTACT_TYPE'); $arAdd = array(array('NAME' => GetMessage('CRM_CONTACT_TYPE_SHARE'), 'STATUS_ID' => 'SHARE', 'SORT' => 10, 'SYSTEM' => 'Y'), array('NAME' => GetMessage('CRM_CONTACT_TYPE_JOURNALIST'), 'STATUS_ID' => 'JOURNALIST', 'SORT' => 20, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_CONTACT_TYPE_CLIENT'), 'STATUS_ID' => 'CLIENT', 'SORT' => 30, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_CONTACT_TYPE_SUPPLIER'), 'STATUS_ID' => 'SUPPLIER', 'SORT' => 40, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_CONTACT_TYPE_PARTNER'), 'STATUS_ID' => 'PARTNER', 'SORT' => 50, 'SYSTEM' => 'N')); foreach ($arAdd as $ar) { $CCrmStatus->Add($ar); } // Create default contact type list $CCrmStatus = new CCrmStatus('COMPANY_TYPE'); $arAdd = array(array('NAME' => GetMessage('CRM_COMPANY_TYPE_CUSTOMER'), 'STATUS_ID' => 'CUSTOMER', 'SORT' => 10, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_COMPANY_TYPE_PARTNER'), 'STATUS_ID' => 'PARTNER', 'SORT' => 20, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_COMPANY_TYPE_RESELLER'), 'STATUS_ID' => 'RESELLER', 'SORT' => 30, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_COMPANY_TYPE_COMPETITOR'), 'STATUS_ID' => 'COMPETITOR', 'SORT' => 40, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_COMPANY_TYPE_INVESTOR'), 'STATUS_ID' => 'INVESTOR', 'SORT' => 50, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_COMPANY_TYPE_INTEGRATOR'), 'STATUS_ID' => 'INTEGRATOR', 'SORT' => 60, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_COMPANY_TYPE_PROSPECT'), 'STATUS_ID' => 'PROSPECT', 'SORT' => 70, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_COMPANY_TYPE_PRESS'), 'STATUS_ID' => 'PRESS', 'SORT' => 80, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_COMPANY_TYPE_OTHER'), 'STATUS_ID' => 'OTHER', 'SORT' => 90, 'SYSTEM' => 'Y')); foreach ($arAdd as $ar) { $CCrmStatus->Add($ar); } $CCrmStatus = new CCrmStatus('EMPLOYEES'); $arAdd = array(array('NAME' => GetMessage('CRM_EMPLOYEES_1'), 'STATUS_ID' => 'EMPLOYEES_1', 'SORT' => 10, 'SYSTEM' => 'Y'), array('NAME' => GetMessage('CRM_EMPLOYEES_2'), 'STATUS_ID' => 'EMPLOYEES_2', 'SORT' => 20, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_EMPLOYEES_3'), 'STATUS_ID' => 'EMPLOYEES_3', 'SORT' => 30, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_EMPLOYEES_4'), 'STATUS_ID' => 'EMPLOYEES_4', 'SORT' => 40, 'SYSTEM' => 'N')); foreach ($arAdd as $ar) { $CCrmStatus->Add($ar); } // Create default industry list $CCrmStatus = new CCrmStatus('INDUSTRY'); $arAdd = array(array('NAME' => GetMessage('CRM_INDUSTRY_IT'), 'STATUS_ID' => 'IT', 'SORT' => 10, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_INDUSTRY_TELECOM'), 'STATUS_ID' => 'TELECOM', 'SORT' => 20, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_INDUSTRY_MANUFACTURING'), 'STATUS_ID' => 'MANUFACTURING', 'SORT' => 30, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_INDUSTRY_BANKING'), 'STATUS_ID' => 'BANKING', 'SORT' => 40, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_INDUSTRY_CONSULTING'), 'STATUS_ID' => 'CONSULTING', 'SORT' => 50, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_INDUSTRY_FINANCE'), 'STATUS_ID' => 'FINANCE', 'SORT' => 60, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_INDUSTRY_GOVERNMENT'), 'STATUS_ID' => 'GOVERNMENT', 'SORT' => 70, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_INDUSTRY_DELIVERY'), 'STATUS_ID' => 'DELIVERY', 'SORT' => 80, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_INDUSTRY_ENTERTAINMENT'), 'STATUS_ID' => 'ENTERTAINMENT', 'SORT' => 90, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_INDUSTRY_NOTPROFIT'), 'STATUS_ID' => 'NOTPROFIT', 'SORT' => 100, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_INDUSTRY_OTHER'), 'STATUS_ID' => 'OTHER', 'SORT' => 110, 'SYSTEM' => 'Y')); foreach ($arAdd as $ar) { $CCrmStatus->Add($ar); } // Create default deal type list $CCrmStatus = new CCrmStatus('DEAL_TYPE'); $arAdd = array(array('NAME' => GetMessage('CRM_DEAL_TYPE_SALE'), 'STATUS_ID' => 'SALE', 'SORT' => 10, 'SYSTEM' => 'Y'), array('NAME' => GetMessage('CRM_DEAL_TYPE_COMPLEX'), 'STATUS_ID' => 'COMPLEX', 'SORT' => 20, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_DEAL_TYPE_GOODS'), 'STATUS_ID' => 'GOODS', 'SORT' => 30, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_DEAL_TYPE_SERVICES'), 'STATUS_ID' => 'SERVICES', 'SORT' => 40, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_DEAL_TYPE_SERVICE'), 'STATUS_ID' => 'SERVICE', 'SORT' => 50, 'SYSTEM' => 'N')); foreach ($arAdd as $ar) { $CCrmStatus->Add($ar); } // Create default deal stage list $CCrmStatus = new CCrmStatus('DEAL_STAGE'); $arAdd = array(array('NAME' => GetMessage('CRM_DEAL_STAGE_NEW'), 'STATUS_ID' => 'NEW', 'SORT' => 10, 'SYSTEM' => 'Y'), array('NAME' => GetMessage('CRM_DEAL_STAGE_DETAILS'), 'STATUS_ID' => 'DETAILS', 'SORT' => 30, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_DEAL_STAGE_PROPOSAL'), 'STATUS_ID' => 'PROPOSAL', 'SORT' => 40, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_DEAL_STAGE_NEGOTIATION'), 'STATUS_ID' => 'NEGOTIATION', 'SORT' => 50, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_DEAL_STAGE_WON'), 'STATUS_ID' => 'WON', 'SORT' => 70, 'SYSTEM' => 'Y'), array('NAME' => GetMessage('CRM_DEAL_STAGE_ON_HOLD'), 'STATUS_ID' => 'ON_HOLD', 'SORT' => 75, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_DEAL_STAGE_LOSE'), 'STATUS_ID' => 'LOSE', 'SORT' => 80, 'SYSTEM' => 'Y')); foreach ($arAdd as $ar) { $CCrmStatus->Add($ar); } // Create default deal state list $CCrmStatus = new CCrmStatus('DEAL_STATE'); $arAdd = array(array('NAME' => GetMessage('CRM_DEAL_STATE_PLANNED'), 'STATUS_ID' => 'PLANNED', 'SORT' => 10, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_DEAL_STATE_PROCESS'), 'STATUS_ID' => 'PROCESS', 'SORT' => 20, 'SYSTEM' => 'Y'), array('NAME' => GetMessage('CRM_DEAL_STATE_COMPLETE'), 'STATUS_ID' => 'COMPLETE', 'SORT' => 30, 'SYSTEM' => 'Y'), array('NAME' => GetMessage('CRM_DEAL_STATE_CANCELED'), 'STATUS_ID' => 'CANCELED', 'SORT' => 40, 'SYSTEM' => 'Y')); foreach ($arAdd as $ar) { $CCrmStatus->Add($ar); } // Create default event type $CCrmStatus = new CCrmStatus('EVENT_TYPE'); $arAdd = array(array('NAME' => GetMessage('CRM_EVENT_TYPE_INFO'), 'STATUS_ID' => 'INFO', 'SORT' => 10, 'SYSTEM' => 'Y'), array('NAME' => GetMessage('CRM_EVENT_TYPE_PHONE'), 'STATUS_ID' => 'PHONE', 'SORT' => 20, 'SYSTEM' => 'Y'), array('NAME' => GetMessage('CRM_EVENT_TYPE_MESSAGE'), 'STATUS_ID' => 'MESSAGE', 'SORT' => 30, 'SYSTEM' => 'Y')); foreach ($arAdd as $ar) { $CCrmStatus->Add($ar); } // Create default quote status list $CCrmStatus = new CCrmStatus('QUOTE_STATUS'); $arAdd = array(array('NAME' => GetMessage('CRM_QUOTE_STATUS_DRAFT'), 'STATUS_ID' => 'DRAFT', 'SORT' => 10, 'SYSTEM' => 'Y'), array('NAME' => GetMessage('CRM_QUOTE_STATUS_SENT'), 'STATUS_ID' => 'SENT', 'SORT' => 20, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_QUOTE_STATUS_RECEIVED'), 'STATUS_ID' => 'RECEIVED', 'SORT' => 30, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_QUOTE_STATUS_APPROVED'), 'STATUS_ID' => 'APPROVED', 'SORT' => 40, 'SYSTEM' => 'Y'), array('NAME' => GetMessage('CRM_QUOTE_STATUS_UNANSWERED'), 'STATUS_ID' => 'UNANSWERED', 'SORT' => 50, 'SYSTEM' => 'N'), array('NAME' => GetMessage('CRM_QUOTE_STATUS_DECLAINED'), 'STATUS_ID' => 'DECLAINED', 'SORT' => 60, 'SYSTEM' => 'Y')); foreach ($arAdd as $ar) { $CCrmStatus->Add($ar); } $directionId = 0; $dbGroup = CGroup::GetList($by = "", $order = "", array("STRING_ID" => "DIRECTION")); if ($arGroup = $dbGroup->Fetch()) { $directionId = $arGroup["ID"]; } $marketingId = 0; $dbGroup = CGroup::GetList($by = "", $order = "", array("STRING_ID" => "MARKETING_AND_SALES")); if ($arGroup = $dbGroup->Fetch()) { $marketingId = $arGroup["ID"]; } $CCrmRole = new CCrmRole(); $arRoles = array('adm' => array('NAME' => GetMessage('CRM_ROLE_ADMIN'), 'RELATION' => array('LEAD' => array('READ' => array('-' => 'X'), 'EXPORT' => array('-' => 'X'), 'IMPORT' => array('-' => 'X'), 'ADD' => array('-' => 'X'), 'WRITE' => array('-' => 'X'), 'DELETE' => array('-' => 'X')), 'DEAL' => array('READ' => array('-' => 'X'), 'EXPORT' => array('-' => 'X'), 'IMPORT' => array('-' => 'X'), 'ADD' => array('-' => 'X'), 'WRITE' => array('-' => 'X'), 'DELETE' => array('-' => 'X')), 'CONTACT' => array('READ' => array('-' => 'X'), 'EXPORT' => array('-' => 'X'), 'IMPORT' => array('-' => 'X'), 'ADD' => array('-' => 'X'), 'WRITE' => array('-' => 'X'), 'DELETE' => array('-' => 'X')), 'COMPANY' => array('READ' => array('-' => 'X'), 'EXPORT' => array('-' => 'X'), 'IMPORT' => array('-' => 'X'), 'ADD' => array('-' => 'X'), 'WRITE' => array('-' => 'X'), 'DELETE' => array('-' => 'X')), 'QUOTE' => array('READ' => array('-' => 'X'), 'EXPORT' => array('-' => 'X'), 'IMPORT' => array('-' => 'X'), 'ADD' => array('-' => 'X'), 'WRITE' => array('-' => 'X'), 'DELETE' => array('-' => 'X')), 'INVOICE' => array('READ' => array('-' => 'X'), 'EXPORT' => array('-' => 'X'), 'IMPORT' => array('-' => 'X'), 'ADD' => array('-' => 'X'), 'WRITE' => array('-' => 'X'), 'DELETE' => array('-' => 'X')), 'CONFIG' => array('WRITE' => array('-' => 'X')))), 'dir' => array('NAME' => GetMessage('CRM_ROLE_DIRECTOR'), 'RELATION' => array('LEAD' => array('READ' => array('-' => 'X'), 'EXPORT' => array('-' => 'X'), 'IMPORT' => array('-' => 'X'), 'ADD' => array('-' => 'X'), 'WRITE' => array('-' => 'X'), 'DELETE' => array('-' => 'X')), 'DEAL' => array('READ' => array('-' => 'X'), 'EXPORT' => array('-' => 'X'), 'IMPORT' => array('-' => 'X'), 'ADD' => array('-' => 'X'), 'WRITE' => array('-' => 'X'), 'DELETE' => array('-' => 'X')), 'CONTACT' => array('READ' => array('-' => 'X'), 'EXPORT' => array('-' => 'X'), 'IMPORT' => array('-' => 'X'), 'ADD' => array('-' => 'X'), 'WRITE' => array('-' => 'X'), 'DELETE' => array('-' => 'X')), 'COMPANY' => array('READ' => array('-' => 'X'), 'EXPORT' => array('-' => 'X'), 'IMPORT' => array('-' => 'X'), 'ADD' => array('-' => 'X'), 'WRITE' => array('-' => 'X'), 'DELETE' => array('-' => 'X')), 'QUOTE' => array('READ' => array('-' => 'X'), 'EXPORT' => array('-' => 'X'), 'IMPORT' => array('-' => 'X'), 'ADD' => array('-' => 'X'), 'WRITE' => array('-' => 'X'), 'DELETE' => array('-' => 'X')), 'INVOICE' => array('READ' => array('-' => 'X'), 'EXPORT' => array('-' => 'X'), 'IMPORT' => array('-' => 'X'), 'ADD' => array('-' => 'X'), 'WRITE' => array('-' => 'X'), 'DELETE' => array('-' => 'X')))), 'chif' => array('NAME' => GetMessage('CRM_ROLE_CHIF'), 'RELATION' => array('LEAD' => array('READ' => array('-' => 'D'), 'EXPORT' => array('-' => 'D'), 'IMPORT' => array('-' => 'D'), 'ADD' => array('-' => 'D'), 'WRITE' => array('-' => 'D'), 'DELETE' => array('-' => 'D')), 'DEAL' => array('READ' => array('-' => 'D'), 'EXPORT' => array('-' => 'D'), 'IMPORT' => array('-' => 'D'), 'ADD' => array('-' => 'D'), 'WRITE' => array('-' => 'D'), 'DELETE' => array('-' => 'D')), 'CONTACT' => array('READ' => array('-' => 'D'), 'EXPORT' => array('-' => 'D'), 'IMPORT' => array('-' => 'D'), 'ADD' => array('-' => 'D'), 'WRITE' => array('-' => 'D'), 'DELETE' => array('-' => 'D')), 'COMPANY' => array('READ' => array('-' => 'X'), 'EXPORT' => array('-' => 'X'), 'IMPORT' => array('-' => 'X'), 'ADD' => array('-' => 'X'), 'WRITE' => array('-' => 'X'), 'DELETE' => array('-' => 'X')), 'QUOTE' => array('READ' => array('-' => 'D'), 'EXPORT' => array('-' => 'D'), 'IMPORT' => array('-' => 'D'), 'ADD' => array('-' => 'D'), 'WRITE' => array('-' => 'D'), 'DELETE' => array('-' => 'D')), 'INVOICE' => array('READ' => array('-' => 'D'), 'EXPORT' => array('-' => 'D'), 'IMPORT' => array('-' => 'D'), 'ADD' => array('-' => 'D'), 'WRITE' => array('-' => 'D'), 'DELETE' => array('-' => 'D')))), 'man' => array('NAME' => GetMessage('CRM_ROLE_MAN'), 'RELATION' => array('LEAD' => array('READ' => array('-' => 'A'), 'EXPORT' => array('-' => 'A'), 'IMPORT' => array('-' => 'A'), 'ADD' => array('-' => 'A'), 'WRITE' => array('-' => 'A'), 'DELETE' => array('-' => 'A')), 'DEAL' => array('READ' => array('-' => 'A'), 'EXPORT' => array('-' => 'A'), 'IMPORT' => array('-' => 'A'), 'ADD' => array('-' => 'A'), 'WRITE' => array('-' => 'A'), 'DELETE' => array('-' => 'A')), 'CONTACT' => array('READ' => array('-' => 'A'), 'EXPORT' => array('-' => 'A'), 'IMPORT' => array('-' => 'A'), 'ADD' => array('-' => 'A'), 'WRITE' => array('-' => 'A'), 'DELETE' => array('-' => 'A')), 'COMPANY' => array('READ' => array('-' => 'X'), 'EXPORT' => array('-' => 'X'), 'IMPORT' => array('-' => 'X'), 'ADD' => array('-' => 'X'), 'WRITE' => array('-' => 'X'), 'DELETE' => array('-' => 'X')), 'QUOTE' => array('READ' => array('-' => 'A'), 'EXPORT' => array('-' => 'A'), 'IMPORT' => array('-' => 'A'), 'ADD' => array('-' => 'A'), 'WRITE' => array('-' => 'A'), 'DELETE' => array('-' => 'A')), 'INVOICE' => array('READ' => array('-' => 'A'), 'EXPORT' => array('-' => 'A'), 'IMPORT' => array('-' => 'A'), 'ADD' => array('-' => 'A'), 'WRITE' => array('-' => 'A'), 'DELETE' => array('-' => 'A'))))); $iRoleID = $CCrmRole->Add($arRoles['adm']); $iRoleID = $CCrmRole->Add($arRoles['dir']); $arRel = array(); if ($directionId > 0) { $arRel['G' . $directionId] = array($iRoleID); } $iRoleID = $CCrmRole->Add($arRoles['chif']); $iRoleID = $CCrmRole->Add($arRoles['man']); if ($marketingId > 0) { $arRel['G' . $marketingId] = array($iRoleID); } $CCrmRole->SetRelation($arRel); } $this->InstallUserFields(); //FILL BUSINESS TYPES --> $dbType = strtoupper($DB->type); if ($dbType === "ORACLE") { $dbResult = $DB->Query("SELECT COUNT(1) AS QTY FROM B_CRM_BIZ_TYPE"); } elseif ($dbType === "MSSQL") { $dbResult = $DB->Query("SELECT COUNT(*) AS QTY FROM B_CRM_BIZ_TYPE"); } else { $dbResult = $DB->Query("SELECT COUNT(*) AS QTY FROM b_crm_biz_type"); } $arResult = is_object($dbResult) ? $dbResult->Fetch() : null; $qty = is_array($arResult) && isset($arResult["QTY"]) ? intval($arResult["QTY"]) : 0; if ($qty === 0) { $allLangIDs = array(); $sort = 'sort'; $order = 'asc'; $langEntity = new \CLanguage(); $dbLangs = $langEntity->GetList($sort, $order); while ($lang = $dbLangs->Fetch()) { if (isset($lang['LID'])) { $allLangIDs[] = $lang['LID']; } } foreach ($allLangIDs as $langID) { $langFile = $_SERVER["DOCUMENT_ROOT"] . '/bitrix/modules/crm/lang/' . $langID . "/lib/businesstype.php"; if (!file_exists($langFile)) { continue; } //include($langFile); $messages = __IncludeLang($langFile, true); $s = isset($messages["CRM_BIZ_TYPE_DEFAULT"]) ? trim($messages["CRM_BIZ_TYPE_DEFAULT"]) : ""; if ($s === ' ' || $s === '-') { continue; } $bizTypeTableName = $dbType === 'ORACLE' || $dbType === 'MSSQL' ? 'B_CRM_BIZ_TYPE' : 'b_crm_biz_type'; foreach (explode('|', $s) as $slug) { $ary = explode(';', $slug); if (count($ary) < 2) { continue; } $code = $DB->ForSql($ary[0]); $name = $DB->ForSql($ary[1]); $lang = isset($ary[2]) ? $DB->ForSql($ary[2]) : ''; $DB->Query("INSERT INTO {$bizTypeTableName}(CODE, NAME, LANG) VALUES('{$code}', '{$name}', '{$lang}')"); } } } //<-- FILL BUSINESS TYPES RegisterModule('crm'); RegisterModuleDependences('mail', 'OnGetFilterList', 'crm', 'CCrmEMail', 'OnGetFilterList'); RegisterModuleDependences('main', 'OnUserTypeBuildList', 'crm', 'CUserTypeCrm', 'GetUserTypeDescription'); RegisterModuleDependences('main', 'OnUserTypeBuildList', 'crm', 'CUserTypeCrmStatus', 'GetUserTypeDescription'); RegisterModuleDependences('search', 'OnReindex', 'crm', 'CCrmSearch', 'OnSearchReindex'); RegisterModuleDependences('search', 'OnSearchCheckPermissions', 'crm', 'CCrmSearch', 'OnSearchCheckPermissions'); RegisterModuleDependences('report', 'OnReportAdd', 'crm', 'CCrmReportHelper', 'clearMenuCache'); RegisterModuleDependences('report', 'OnReportUpdate', 'crm', 'CCrmReportHelper', 'clearMenuCache'); RegisterModuleDependences('report', 'OnReportDelete', 'crm', 'CCrmReportHelper', 'clearMenuCache'); RegisterModuleDependences('iblock', 'OnIBlockDelete', 'crm', 'CAllCrmCatalog', 'OnIBlockDelete'); RegisterModuleDependences('iblock', 'OnAfterIBlockElementDelete', 'crm', 'CCrmProduct', 'OnIBlockElementDelete'); RegisterModuleDependences('socialnetwork', 'OnFillSocNetLogEvents', 'crm', 'CCrmExternalSaleImport', 'OnFillSocNetLogEvents'); RegisterModuleDependences('tasks', 'OnBeforeTaskAdd', 'crm', 'CAllCrmActivity', 'OnBeforeTaskAdd'); RegisterModuleDependences('tasks', 'OnTaskAdd', 'crm', 'CAllCrmActivity', 'OnTaskAdd'); RegisterModuleDependences('tasks', 'OnTaskUpdate', 'crm', 'CAllCrmActivity', 'OnTaskUpdate'); RegisterModuleDependences('tasks', 'OnTaskDelete', 'crm', 'CAllCrmActivity', 'OnTaskDelete'); RegisterModuleDependences('webdav', 'OnFileDelete', 'crm', 'CCrmWebDavHelper', 'OnWebDavFileDelete'); RegisterModuleDependences('subscribe', 'BeforePostingSendMail', 'crm', 'CCrmEMail', 'BeforeSendMail'); RegisterModuleDependences('calendar', 'OnAfterCalendarEventEdit', 'crm', 'CAllCrmActivity', 'OnCalendarEventEdit'); RegisterModuleDependences('calendar', 'OnAfterCalendarEventDelete', 'crm', 'CAllCrmActivity', 'OnCalendarEventDelete'); RegisterModuleDependences('crm', 'OnCrmStatusGetList', 'crm', 'CCrmStatusInvoice', 'getStatusList'); RegisterModuleDependences('crm', 'OnGetEntityTypes', 'crm', 'CCrmStatusInvoice', 'onGetEntityTypes'); RegisterModuleDependences('crm', 'OnBeforeCrmStatusCreate', 'crm', 'CCrmStatusInvoice', 'createCrmStatus'); RegisterModuleDependences('rest', 'onRestServiceBuildDescription', 'crm', 'CCrmRestService', 'onRestServiceBuildDescription'); RegisterModuleDependences('rest', 'onRestServiceBuildDescription', 'crm', 'CCrmInvoiceRestService', 'OnRestServiceBuildDescription'); RegisterModuleDependences('socialnetwork', 'OnFillSocNetAllowedSubscribeEntityTypes', 'crm', 'CCrmLiveFeed', 'OnFillSocNetAllowedSubscribeEntityTypes'); RegisterModuleDependences('socialnetwork', 'OnFillSocNetLogEvents', 'crm', 'CCrmLiveFeed', 'OnFillSocNetLogEvents'); RegisterModuleDependences('socialnetwork', 'OnFillSocNetLogFields', 'crm', 'CCrmLiveFeed', 'OnFillSocNetLogFields'); RegisterModuleDependences('socialnetwork', 'OnBuildSocNetLogFilter', 'crm', 'CCrmLiveFeed', 'OnBuildSocNetLogFilter'); RegisterModuleDependences('socialnetwork', 'OnBuildSocNetLogOrder', 'crm', 'CCrmLiveFeed', 'OnBuildSocNetLogOrder'); RegisterModuleDependences('socialnetwork', 'OnSocNetLogFormatDestination', 'crm', 'CCrmLiveFeed', 'OnSocNetLogFormatDestination'); RegisterModuleDependences('socialnetwork', 'OnBuildSocNetLogPerms', 'crm', 'CCrmLiveFeed', 'OnBuildSocNetLogPerms'); RegisterModuleDependences('socialnetwork', 'OnBeforeSocNetLogRightsAdd', 'crm', 'CCrmLiveFeed', 'OnBeforeSocNetLogRightsAdd'); RegisterModuleDependences('socialnetwork', 'OnBeforeSocNetLogCommentCounterIncrement', 'crm', 'CCrmLiveFeed', 'OnBeforeSocNetLogCommentCounterIncrement'); RegisterModuleDependences('socialnetwork', 'OnAfterSocNetLogEntryCommentAdd', 'crm', 'CCrmLiveFeed', 'OnAfterSocNetLogEntryCommentAdd'); RegisterModuleDependences('socialnetwork', 'OnBeforeSocNetLogEntryGetRights', 'crm', 'CCrmLiveFeed', 'OnBeforeSocNetLogEntryGetRights'); RegisterModuleDependences("socialnetwork", "OnSendMentionGetEntityFields", "crm", "CCrmLiveFeed", "OnSendMentionGetEntityFields"); RegisterModuleDependences('main', 'OnAddRatingVote', 'crm', 'CCrmLiveFeed', 'OnAddRatingVote'); RegisterModuleDependences('forum', 'OnAfterCommentAdd', 'crm', 'CCrmLiveFeed', 'onAfterCommentAdd'); RegisterModuleDependences("main", "OnApplicationsBuildList", "main", '\\Bitrix\\Crm\\Integration\\Application', "OnApplicationsBuildList", 100, "modules/crm/lib/integration/application.php"); RegisterModuleDependences('disk', 'onAfterDeleteFile', 'crm', '\\Bitrix\\Crm\\Integration\\DiskManager', 'OnDiskFileDelete'); if (is_array($this->errors)) { $GLOBALS['errors'] = $this->errors; $APPLICATION->ThrowException(implode(' ', $this->errors)); return false; } return true; }