if (!$bVarsFromForm) { if ($arParams['ROLE_ID'] > 0) { $obRes = CCrmRole::GetList(array(), array('ID' => $arParams['ROLE_ID'])); $arResult['ROLE'] = $obRes->Fetch(); if ($arResult['ROLE'] == false) { $arParams['ROLE_ID'] = 0; } } if ($arParams['ROLE_ID'] <= 0) { $arResult['ROLE']['ID'] = 0; $arResult['ROLE']['NAME'] = ''; } $arResult['ROLE_PERMS'] = array(); } if ($arParams['ROLE_ID'] > 0 && !$bVarsFromForm) { $arResult['~ROLE_PERMS'] = CCrmRole::GetRolePerms($arParams['ROLE_ID']); } if (!$bVarsFromForm) { $arResult['ROLE_PERMS'] = $arResult['~ROLE_PERMS']; } $arResult['ENTITY'] = array('CONTACT' => GetMessage('CRM_ENTITY_TYPE_CONTACT'), 'COMPANY' => GetMessage('CRM_ENTITY_TYPE_COMPANY'), 'DEAL' => GetMessage('CRM_ENTITY_TYPE_DEAL'), 'LEAD' => GetMessage('CRM_ENTITY_TYPE_LEAD'), 'QUOTE' => GetMessage('CRM_ENTITY_TYPE_QUOTE'), 'INVOICE' => GetMessage('CRM_ENTITY_TYPE_INVOICE')); $arPerms = array('READ', 'ADD', 'WRITE', 'DELETE', 'EXPORT', 'IMPORT'); $arResult['ENTITY_FIELDS'] = array('DEAL' => array('STAGE_ID' => CCrmStatus::GetStatusListEx('DEAL_STAGE')), 'LEAD' => array('STATUS_ID' => CCrmStatus::GetStatusListEx('STATUS'))); $arResult['ROLE_PERM']['LEAD'] = $arResult['ROLE_PERM']['DEAL'] = $arResult['ROLE_PERM']['QUOTE'] = $arResult['ROLE_PERM']['INVOICE'] = $arResult['ROLE_PERM']['COMPANY'] = $arResult['ROLE_PERM']['CONTACT'] = array(BX_CRM_PERM_NONE => GetMessage('CRM_PERMS_TYPE_' . BX_CRM_PERM_NONE), BX_CRM_PERM_SELF => GetMessage('CRM_PERMS_TYPE_' . BX_CRM_PERM_SELF), BX_CRM_PERM_DEPARTMENT => GetMessage('CRM_PERMS_TYPE_' . BX_CRM_PERM_DEPARTMENT), BX_CRM_PERM_SUBDEPARTMENT => GetMessage('CRM_PERMS_TYPE_' . BX_CRM_PERM_SUBDEPARTMENT), BX_CRM_PERM_OPEN => GetMessage('CRM_PERMS_TYPE_' . BX_CRM_PERM_OPEN), BX_CRM_PERM_ALL => GetMessage('CRM_PERMS_TYPE_' . BX_CRM_PERM_ALL)); unset($arResult['ROLE_PERM']['INVOICE'][BX_CRM_PERM_OPEN]); $arResult['PATH_TO_ROLE_DELETE'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_ROLE_EDIT'], array('role_id' => $arResult['ROLE']['ID'])), array('delete' => '1', 'sessid' => bitrix_sessid())); foreach ($arPerms as $perm) { foreach ($arResult['ENTITY'] as $entityType => $entityName) { if (isset($arResult['ENTITY_FIELDS'][$entityType])) { foreach ($arResult['ENTITY_FIELDS'][$entityType] as $fieldID => $arFieldValue) { foreach ($arFieldValue as $fieldValueID => $fieldValue) {
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; }
COption::SetOptionString('crm', '~CRM_INVOICE_PRODUCTS_CONVERTED_12_5_7', 'Y'); } else { $errMsg[] = Loc::getMessage('CRM_UPDATE_ERR_005'); return; } } } else { $errMsg[] = Loc::getMessage('CRM_UPDATE_ERR_004'); return; } } } if (empty($errMsg)) { //Copy perms from deals to invoices $CCrmRole = new CCrmRole(); $dbRoles = $CCrmRole->GetList(); while ($arRole = $dbRoles->Fetch()) { $arPerms = $CCrmRole->GetRolePerms($arRole['ID']); if (!isset($arPerms['INVOICE']) && is_array($arPerms['DEAL'])) { foreach ($arPerms['DEAL'] as $key => $value) { if (isset($value['-']) && $value['-'] != 'O') { $arPerms['INVOICE'][$key]['-'] = $value['-']; } else { $arPerms['INVOICE'][$key]['-'] = 'X'; } } } $arFields = array('RELATION' => $arPerms); $CCrmRole->Update($arRole['ID'], $arFields); } }