public static function GetEditUrl($typeID, $ID, $bCheckPermissions = false) { $typeID = intval($typeID); $ID = intval($ID); if ($ID <= 0) { $ID = 0; } switch ($typeID) { case self::Lead: if ($bCheckPermissions && !($ID > 0 ? CCrmLead::CheckUpdatePermission($ID) : CCrmLead::CheckCreatePermission())) { return ''; } return CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_lead_edit'), array('lead_id' => $ID)); case self::Contact: if ($bCheckPermissions && !($ID > 0 ? CCrmContact::CheckUpdatePermission($ID) : CCrmContact::CheckCreatePermission())) { return ''; } return CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_contact_edit'), array('contact_id' => $ID)); case self::Company: if ($bCheckPermissions && !($ID > 0 ? CCrmCompany::CheckUpdatePermission($ID) : CCrmCompany::CheckCreatePermission())) { return ''; } return CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_company_edit'), array('company_id' => $ID)); case self::Deal: if ($bCheckPermissions && !($ID > 0 ? CCrmDeal::CheckUpdatePermission($ID) : CCrmDeal::CheckCreatePermission())) { return ''; } return CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_deal_edit'), array('deal_id' => $ID)); case self::Invoice: if ($bCheckPermissions && !($ID > 0 ? CCrmInvoice::CheckUpdatePermission($ID) : CCrmInvoice::CheckCreatePermission())) { return ''; } return CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_invoice_edit'), array('invoice_id' => $ID)); case self::Quote: if ($bCheckPermissions && !($ID > 0 ? CCrmQuote::CheckUpdatePermission($ID) : CCrmQuote::CheckCreatePermission())) { return ''; } return CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_quote_edit'), array('quote_id' => $ID)); case self::Activity: return CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_activity_edit'), array('activity_id' => $ID)); default: return ''; } }
$ID = isset($arResult['ELEMENT']['ID']) ? $arResult['ELEMENT']['ID'] : 0; if (!empty($arResult['ERROR_MESSAGE'])) { ShowError($arResult['ERROR_MESSAGE']); $arResult['ELEMENT'] = CCrmComponentHelper::PrepareEntityFields(array_merge(array('ID' => $ID), $arFields), CCrmQuote::GetFields()); } else { /*if (intval($_POST['SYNC_ORDER_ID']) > 0) { LocalRedirect( CComponentEngine::MakePathFromTemplate( $arParams['PATH_TO_QUOTE_SHOW'], array('quote_id' => $ID) ) ); }*/ if (isset($_POST['apply'])) { if (CCrmQuote::CheckUpdatePermission($ID)) { LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_QUOTE_EDIT'], array('quote_id' => $ID))); } } elseif (isset($_POST['saveAndAdd'])) { LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_QUOTE_EDIT'], array('quote_id' => 0))); } elseif (isset($_POST['saveAndView'])) { if (CCrmQuote::CheckReadPermission($ID)) { LocalRedirect(empty($arResult['QUOTE_REFERER']) ? CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_QUOTE_SHOW'], array('quote_id' => $ID)) : $arResult['QUOTE_REFERER']); } } // save LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_QUOTE_LIST'], array())); } } } elseif (isset($_GET['delete']) && check_bitrix_sessid()) { if ($bEdit) {
} if ($itemQty > 0) { CCrmLead::RebuildEntityAccessAttrs($itemIDs); $progressData['TOTAL_ITEMS'] = $totalItemQty; $processedItemQty += $itemQty; $progressData['PROCESSED_ITEMS'] = $processedItemQty; $progressData['LAST_ITEM_ID'] = $itemIDs[$itemQty - 1]; COption::SetOptionString('crm', '~CRM_REBUILD_LEAD_ATTR_PROGRESS', serialize($progressData)); __CrmConfigPermsEndResonse(array('STATUS' => 'PROGRESS', 'PROCESSED_ITEMS' => $processedItemQty, 'TOTAL_ITEMS' => $totalItemQty, 'SUMMARY' => GetMessage('CRM_CONFIG_PERMS_REBUILD_ATTR_PROGRESS_SUMMARY', array('#PROCESSED_ITEMS#' => $processedItemQty, '#TOTAL_ITEMS#' => $totalItemQty)))); } else { COption::RemoveOption('crm', '~CRM_REBUILD_LEAD_ATTR'); COption::RemoveOption('crm', '~CRM_REBUILD_LEAD_ATTR_PROGRESS'); __CrmConfigPermsEndResonse(array('STATUS' => 'COMPLETED', 'PROCESSED_ITEMS' => $processedItemQty, 'TOTAL_ITEMS' => $totalItemQty, 'SUMMARY' => GetMessage('CRM_CONFIG_PERMS_REBUILD_ATTR_COMPLETED_SUMMARY', array('#PROCESSED_ITEMS#' => $processedItemQty)))); } } elseif ($entityTypeID === CCrmOwnerType::Quote) { if (!CCrmQuote::CheckUpdatePermission(0)) { __CrmConfigPermsEndResonse(array('ERROR' => 'Access denied.')); } if (COption::GetOptionString('crm', '~CRM_REBUILD_QUOTE_ATTR', 'N') !== 'Y') { __CrmConfigPermsEndResonse(array('STATUS' => 'NOT_REQUIRED', 'SUMMARY' => GetMessage('CRM_CONFIG_PERMS_REBUILD_ATTR_NOT_REQUIRED_SUMMARY'))); } $progressData = COption::GetOptionString('crm', '~CRM_REBUILD_QUOTE_ATTR_PROGRESS', ''); $progressData = $progressData !== '' ? unserialize($progressData) : array(); $lastItemID = isset($progressData['LAST_ITEM_ID']) ? intval($progressData['LAST_ITEM_ID']) : 0; $processedItemQty = isset($progressData['PROCESSED_ITEMS']) ? intval($progressData['PROCESSED_ITEMS']) : 0; $totalItemQty = isset($progressData['TOTAL_ITEMS']) ? intval($progressData['TOTAL_ITEMS']) : 0; if ($totalItemQty <= 0) { $totalItemQty = CCrmQuote::GetList(array(), array('CHECK_PERMISSIONS' => 'N'), array(), false); } $filter = array('CHECK_PERMISSIONS' => 'N'); if ($lastItemID > 0) {
);*/ } } } if ($mode === 'GET_USER_SELECTOR') { if (!CCrmQuote::CheckUpdatePermission(0, $currentUserPermissions)) { __CrmQuoteShowEndHtmlResonse(); } $name = isset($_POST['NAME']) ? $_POST['NAME'] : ''; $GLOBALS['APPLICATION']->RestartBuffer(); Header('Content-Type: text/html; charset=' . LANG_CHARSET); $APPLICATION->IncludeComponent('bitrix:intranet.user.selector.new', '.default', array('MULTIPLE' => 'N', 'NAME' => $name, 'POPUP' => 'Y', 'SITE_ID' => SITE_ID), null, array('HIDE_ICONS' => 'Y')); __CrmQuoteShowEndHtmlResonse(); } if ($mode === 'GET_VISUAL_EDITOR') { if (!CCrmQuote::CheckUpdatePermission(0, $currentUserPermissions)) { __CrmQuoteShowEndHtmlResonse(); } $lheEditorID = isset($_POST['EDITOR_ID']) ? $_POST['EDITOR_ID'] : ''; $lheEditorName = isset($_POST['EDITOR_NAME']) ? $_POST['EDITOR_NAME'] : ''; CModule::IncludeModule('fileman'); $GLOBALS['APPLICATION']->RestartBuffer(); Header('Content-Type: text/html; charset=' . LANG_CHARSET); $emailEditor = new CLightHTMLEditor(); $emailEditor->Show(array('id' => $lheEditorID, 'height' => '250', 'BBCode' => false, 'bUseFileDialogs' => false, 'bFloatingToolbar' => false, 'bArisingToolbar' => false, 'bResizable' => false, 'autoResizeOffset' => 20, 'jsObjName' => $lheEditorName, 'bInitByJS' => false, 'bSaveOnBlur' => false, 'toolbarConfig' => array('Bold', 'Italic', 'Underline', 'Strike', 'BackColor', 'ForeColor', 'CreateLink', 'DeleteLink', 'InsertOrderedList', 'InsertUnorderedList', 'Outdent', 'Indent'))); __CrmQuoteShowEndHtmlResonse(); } if ($mode === 'GET_ENTITY_SIP_INFO') { $entityType = isset($_POST['ENITY_TYPE']) ? $_POST['ENITY_TYPE'] : ''; $m = null; if ($entityType === '' || preg_match('/^CRM_([A-Z]+)$/i', $entityType, $m) !== 1) {
} $arResult['TOOLBAR_ID'] = $toolbarID; $arResult['BUTTONS'] = array(); if ($arParams['TYPE'] == 'list') { $bRead = !$CrmPerms->HavePerm('QUOTE', BX_CRM_PERM_NONE, 'READ'); $bExport = !$CrmPerms->HavePerm('QUOTE', BX_CRM_PERM_NONE, 'EXPORT'); //$bImport = !$CrmPerms->HavePerm('QUOTE', BX_CRM_PERM_NONE, 'IMPORT'); $bAdd = !$CrmPerms->HavePerm('QUOTE', BX_CRM_PERM_NONE, 'ADD'); $bWrite = !$CrmPerms->HavePerm('QUOTE', BX_CRM_PERM_NONE, 'WRITE'); $bDelete = false; } else { $bExport = false; //$bImport = false; $bRead = CCrmQuote::CheckReadPermission($arParams['ELEMENT_ID'], $CrmPerms); $bAdd = CCrmQuote::CheckCreatePermission($CrmPerms); $bWrite = CCrmQuote::CheckUpdatePermission($arParams['ELEMENT_ID'], $CrmPerms); $bDelete = CCrmQuote::CheckDeletePermission($arParams['ELEMENT_ID'], $CrmPerms); } if (!$bRead && !$bAdd && !$bWrite) { return false; } if ($arParams['TYPE'] === 'list') { if ($bAdd) { $arResult['BUTTONS'][] = array('TEXT' => GetMessage('QUOTE_ADD'), 'TITLE' => GetMessage('QUOTE_ADD_TITLE'), 'LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_QUOTE_EDIT'], array('quote_id' => 0)), 'HIGHLIGHT' => true); } /*if ($bImport) { $arResult['BUTTONS'][] = array( 'TEXT' => GetMessage('QUOTE_IMPORT'), 'TITLE' => GetMessage('QUOTE_IMPORT_TITLE'), 'LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_QUOTE_IMPORT'], array()),
public function executePhase() { if ($this->currentPhase === DealConversionPhase::INVOICE_CREATION || $this->currentPhase === DealConversionPhase::QUOTE_CREATION) { if ($this->currentPhase === DealConversionPhase::INVOICE_CREATION) { $entityTypeID = \CCrmOwnerType::Invoice; } else { $entityTypeID = \CCrmOwnerType::Quote; } $entityTypeName = \CCrmOwnerType::ResolveName($entityTypeID); $config = $this->config->getItem($entityTypeID); if (!$config->isActive()) { return false; } /** @var \CCrmPerms $permissions */ $permissions = $this->getUserPermissions(); $entityID = isset($this->contextData[$entityTypeName]) ? $this->contextData[$entityTypeName] : 0; if ($entityID > 0) { if ($entityTypeID === \CCrmOwnerType::Invoice) { if (!\CCrmInvoice::Exists($entityID)) { throw new EntityConversionException(\CCrmOwnerType::Deal, \CCrmOwnerType::Invoice, EntityConversionException::TARG_DST, EntityConversionException::NOT_FOUND); } if (!\CCrmInvoice::CheckUpdatePermission($entityID, $permissions)) { throw new EntityConversionException(\CCrmOwnerType::Deal, \CCrmOwnerType::Invoice, EntityConversionException::TARG_DST, EntityConversionException::UPDATE_DENIED); } $entity = new \CCrmInvoice(false); $fields = array('UF_DEAL_ID' => $this->entityID); try { $entity->Update($entityID, $fields); } catch (Main\DB\SqlQueryException $e) { } $this->resultData[$entityTypeName] = $entityID; } else { if (!\CCrmQuote::Exists($entityID)) { throw new EntityConversionException(\CCrmOwnerType::Deal, \CCrmOwnerType::Quote, EntityConversionException::TARG_DST, EntityConversionException::NOT_FOUND); } if (!\CCrmQuote::CheckUpdatePermission($entityID, $permissions)) { throw new EntityConversionException(\CCrmOwnerType::Deal, \CCrmOwnerType::Quote, EntityConversionException::TARG_DST, EntityConversionException::UPDATE_DENIED); } $entity = new \CCrmQuote(false); $fields = array('DEAL_ID' => $this->entityID); $entity->Update($entityID, $fields); $this->resultData[$entityTypeName] = $entityID; } return true; } if (!\CCrmAuthorizationHelper::CheckCreatePermission($entityTypeName, $permissions)) { throw new EntityConversionException(\CCrmOwnerType::Deal, $entityTypeID, EntityConversionException::TARG_DST, EntityConversionException::CREATE_DENIED); } if (UserFieldSynchronizer::needForSynchronization(\CCrmOwnerType::Deal, $entityTypeID)) { throw new EntityConversionException(\CCrmOwnerType::Deal, $entityTypeID, EntityConversionException::TARG_DST, EntityConversionException::NOT_SYNCHRONIZED); } if (!ConversionSettings::getCurrent()->isAutocreationEnabled()) { throw new EntityConversionException(\CCrmOwnerType::Deal, $entityTypeID, EntityConversionException::TARG_DST, EntityConversionException::AUTOCREATION_DISABLED); } /** @var DealConversionMapper $mapper */ $mapper = $this->getMapper(); $map = self::prepareMap($entityTypeID); $fields = $mapper->map($map); if (empty($fields)) { throw new EntityConversionException(\CCrmOwnerType::Deal, $entityTypeID, EntityConversionException::TARG_DST, EntityConversionException::EMPTY_FIELDS); } if ($entityTypeID === \CCrmOwnerType::Invoice) { $entity = new \CCrmInvoice(false); if (!$entity->CheckFields($fields)) { throw new EntityConversionException(\CCrmOwnerType::Deal, \CCrmOwnerType::Invoice, EntityConversionException::TARG_DST, EntityConversionException::INVALID_FIELDS, $entity->LAST_ERROR); } $entityID = $entity->Add($fields); if ($entityID <= 0) { throw new EntityConversionException(\CCrmOwnerType::Deal, \CCrmOwnerType::Invoice, EntityConversionException::TARG_DST, EntityConversionException::CREATE_FAILED, $entity->LAST_ERROR); } $this->resultData[\CCrmOwnerType::InvoiceName] = $entityID; } else { $entity = new \CCrmQuote(false); if (!$entity->CheckFields($fields)) { throw new EntityConversionException(\CCrmOwnerType::Deal, \CCrmOwnerType::Quote, EntityConversionException::TARG_DST, EntityConversionException::INVALID_FIELDS, $entity->LAST_ERROR); } $productRows = isset($fields['PRODUCT_ROWS']) && is_array($fields['PRODUCT_ROWS']) ? $fields['PRODUCT_ROWS'] : array(); if (!empty($productRows)) { $currencyID = isset($fields['CURRENCY_ID']) ? $fields['CURRENCY_ID'] : ''; $personTypes = \CCrmPaySystem::getPersonTypeIDs(); $personTypeID = 0; if (isset($personTypes['COMPANY']) && isset($personTypes['CONTACT'])) { if (isset($fields['COMPANY_ID']) && $fields['COMPANY_ID'] > 0) { $personTypeID = $personTypes['COMPANY']; } elseif (isset($fields['CONTACT_ID']) && $fields['CONTACT_ID'] > 0) { $personTypeID = $personTypes['CONTACT']; } } if ($currencyID !== '' && $personTypeID > 0) { $calculationOptions = array(); if (\CCrmTax::isTaxMode() && isset($fields['LOCATION_ID'])) { $calculationOptions['LOCATION_ID'] = $fields['LOCATION_ID']; } $result = \CCrmSaleHelper::Calculate($productRows, $currencyID, $personTypeID, false, SITE_ID, $calculationOptions); $arFields['OPPORTUNITY'] = isset($result['PRICE']) ? round(doubleval($result['PRICE']), 2) : 1.0; $arFields['TAX_VALUE'] = isset($result['TAX_VALUE']) ? round(doubleval($result['TAX_VALUE']), 2) : 0.0; } } $entityID = $entity->Add($fields); if ($entityID <= 0) { throw new EntityConversionException(\CCrmOwnerType::Deal, \CCrmOwnerType::Quote, EntityConversionException::TARG_DST, EntityConversionException::CREATE_FAILED, $entity->LAST_ERROR); } $this->resultData[\CCrmOwnerType::QuoteName] = $entityID; } return true; } elseif ($this->currentPhase === DealConversionPhase::FINALIZATION) { return true; } return false; }
use Bitrix\Crm\Integration\StorageType; if (!CModule::IncludeModule('crm')) { ShowError(GetMessage('CRM_MODULE_NOT_INSTALLED')); return; } // 'Fileman' module always installed CModule::IncludeModule('fileman'); $CCrmQuote = new CCrmQuote(); if ($CCrmQuote->cPerms->HavePerm('QUOTE', BX_CRM_PERM_NONE, 'READ')) { ShowError(GetMessage('CRM_PERMISSION_DENIED')); return; } CUtil::InitJSCore(array('ajax', 'tooltip')); $arResult['EDITABLE_FIELDS'] = array(); $arResult['ELEMENT_ID'] = $arParams['ELEMENT_ID'] = isset($arParams['ELEMENT_ID']) ? intval($arParams['ELEMENT_ID']) : 0; $arResult['CAN_EDIT'] = CCrmQuote::CheckUpdatePermission($arResult['ELEMENT_ID'], $CCrmQuote->cPerms); $arResult['PREFIX'] = isset($arParams['~PREFIX']) ? $arParams['~PREFIX'] : 'crm_quote_show'; $arParams['PATH_TO_QUOTE_LIST'] = CrmCheckPath('PATH_TO_QUOTE_LIST', $arParams['PATH_TO_QUOTE_LIST'], $APPLICATION->GetCurPage()); $arResult['PATH_TO_QUOTE_SHOW'] = $arParams['PATH_TO_QUOTE_SHOW'] = CrmCheckPath('PATH_TO_QUOTE_SHOW', $arParams['PATH_TO_QUOTE_SHOW'], $APPLICATION->GetCurPage() . '?quote_id=#quote_id#&show'); $arParams['PATH_TO_QUOTE_EDIT'] = CrmCheckPath('PATH_TO_QUOTE_EDIT', $arParams['PATH_TO_QUOTE_EDIT'], $APPLICATION->GetCurPage() . '?quote_id=#quote_id#&edit'); $arParams['PATH_TO_QUOTE_PAYMENT'] = CrmCheckPath('PATH_TO_QUOTE_PAYMENT', $arParams['PATH_TO_QUOTE_PAYMENT'], $APPLICATION->GetCurPage() . '?quote_id=#quote_id#&payment'); $arParams['PATH_TO_DEAL_SHOW'] = CrmCheckPath('PATH_TO_DEAL_SHOW', $arParams['PATH_TO_DEAL_SHOW'], $APPLICATION->GetCurPage() . '?deal_id=#deal_id#&show'); $arParams['PATH_TO_DEAL_EDIT'] = CrmCheckPath('PATH_TO_DEAL_EDIT', $arParams['PATH_TO_DEAL_EDIT'], $APPLICATION->GetCurPage() . '?deal_id=#deal_id#&edit'); $arParams['PATH_TO_CONTACT_SHOW'] = CrmCheckPath('PATH_TO_CONTACT_SHOW', $arParams['PATH_TO_CONTACT_SHOW'], $APPLICATION->GetCurPage() . '?contact_id=#contact_id#&show'); $arParams['PATH_TO_CONTACT_EDIT'] = CrmCheckPath('PATH_TO_CONTACT_EDIT', $arParams['PATH_TO_CONTACT_EDIT'], $APPLICATION->GetCurPage() . '?contact_id=#contact_id#&edit'); $arParams['PATH_TO_COMPANY_SHOW'] = CrmCheckPath('PATH_TO_COMPANY_SHOW', $arParams['PATH_TO_COMPANY_SHOW'], $APPLICATION->GetCurPage() . '?company_id=#company_id#&show'); $arParams['PATH_TO_COMPANY_EDIT'] = CrmCheckPath('PATH_TO_COMPANY_EDIT', $arParams['PATH_TO_COMPANY_EDIT'], $APPLICATION->GetCurPage() . '?company_id=#company_id#&edit'); $arParams['PATH_TO_LEAD_SHOW'] = CrmCheckPath('PATH_TO_LEAD_SHOW', $arParams['PATH_TO_LEAD_SHOW'], $APPLICATION->GetCurPage() . '?lead_id=#lead_id#&show'); $arParams['PATH_TO_LEAD_EDIT'] = CrmCheckPath('PATH_TO_LEAD_EDIT', $arParams['PATH_TO_LEAD_EDIT'], $APPLICATION->GetCurPage() . '?lead_id=#lead_id#&edit'); $arParams['PATH_TO_LEAD_CONVERT'] = CrmCheckPath('PATH_TO_LEAD_CONVERT', $arParams['PATH_TO_LEAD_CONVERT'], $APPLICATION->GetCurPage() . '?lead_id=#lead_id#&convert'); $arParams['PATH_TO_USER_PROFILE'] = CrmCheckPath('PATH_TO_USER_PROFILE', $arParams['PATH_TO_USER_PROFILE'], '/company/personal/user/#user_id#/');