CAllCrmInvoice::installExternalEntities

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. CAllCrmInvoice
  4. installExternalEntities
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_invoice.php
  • Класс: \CAllCrmInvoice
  • Вызов: CAllCrmInvoice::installExternalEntities
static function installExternalEntities()
{
	global $DB;
	$errMsg = array();
	$bError = false;

	$clearCountableFromCallListsOption = '~CRM_CLEAR_COUNTABLE_FROM_CALLISTS';
	if ((string)COption::GetOptionString('crm', $clearCountableFromCallListsOption, 'N') === 'N')
	{
		COption::SetOptionString('crm', $clearCountableFromCallListsOption, 'Y');
		$wrongRecordsExist = (bool)($DB->Query('select * from b_crm_entity_countable_act where ENTITY_TYPE_ID=12 LIMIT 1')->Fetch());
		if ($wrongRecordsExist)
		{
			$DB->Query('delete from b_crm_entity_countable_act where ENTITY_TYPE_ID=12');
			\Bitrix\Crm\Settings\CounterSettings::getInstance()->cleanCounterLimitCache();
		}
	}

	$catalogNormalizeOption = '~CRM_CATALOG_NORMALIZE_18_5_0';
	$catalogNormalizeStep = (string)Main\Config\Option::get('crm', $catalogNormalizeOption, 'N');
	if ($catalogNormalizeStep === 'Y')
		return true;

	// at first, check last update version
	if (COption::GetOptionString('crm', '~CRM_INVOICE_INST_ORDER_DATA_18_5_0', 'N') === 'Y')
	{
		if ($catalogNormalizeStep !== 'Y')
		{
			if (self::setCatalogAdminRights() && self::createOfferIBlocks())
				Main\Config\Option::set('crm', $catalogNormalizeOption, 'Y', '');
		}
		return true;
	}

	// at first, check last update version
	if (COption::GetOptionString('crm', '~CRM_INVOICE_INST_PROP_LOCATION_UA_17_0_9', 'N') === 'Y')
	{
		if (COption::GetOptionString('crm', '~CRM_INVOICE_INST_ORDER_DATA_18_5_0', 'N') !== 'Y')
		{
			try
			{
				COption::SetOptionString('crm', '~CRM_INVOICE_INST_ORDER_DATA_18_5_0', 'Y');
				require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/crm/install/modules/data.php");
			}
			catch (Exception $e)
			{
				COption::SetOptionString('crm', '~CRM_INVOICE_INST_ORDER_DATA_18_5_0', 'N');
				$errMsg[] = $e->getMessage();
				$bError = true;
			}

			if ($bError)
			{
				$errString = implode('
', $errMsg); ShowError($errString); return false; } if ($catalogNormalizeStep !== 'Y') { if (self::setCatalogAdminRights() && self::createOfferIBlocks()) Main\Config\Option::set('crm', $catalogNormalizeOption, 'Y', ''); } } return true; } if (COption::GetOptionString('crm', '~CRM_INVOICE_DISABLE_SALE_EVENTS_16_5_10', 'N') === 'Y') { if (COption::GetOptionString('crm', '~CRM_INVOICE_INST_PROP_LOCATION_UA_17_0_9', 'N') !== 'Y') { self::installOrderPropertyLocationUa(); COption::SetOptionString('crm', '~CRM_INVOICE_INST_PROP_LOCATION_UA_17_0_9', 'Y'); if (COption::GetOptionString('crm', '~CRM_INVOICE_INST_ORDER_DATA_18_5_0', 'N') !== 'Y') { try { COption::SetOptionString('crm', '~CRM_INVOICE_INST_ORDER_DATA_18_5_0', 'Y'); require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/crm/install/modules/data.php"); } catch (Exception $e) { COption::SetOptionString('crm', '~CRM_INVOICE_INST_ORDER_DATA_18_5_0', 'N'); $errMsg[] = $e->getMessage(); $bError = true; } if ($bError) { $errString = implode('
', $errMsg); ShowError($errString); return false; } if ($catalogNormalizeStep !== 'Y') { if (self::setCatalogAdminRights() && self::createOfferIBlocks()) Main\Config\Option::set('crm', $catalogNormalizeOption, 'Y', ''); } } } return true; } if (COption::GetOptionString('crm', '~CRM_INVOICE_UF_MYCOMPANY_ID_16_2_1', 'N') === 'Y') { if (COption::GetOptionString('crm', '~CRM_INVOICE_DISABLE_SALE_EVENTS_16_5_10', 'N') !== 'Y') { // disable after the separation invoices and orders //self::installDisableSaleEvents(); COption::SetOptionString('crm', '~CRM_INVOICE_DISABLE_SALE_EVENTS_16_5_10', 'Y'); if (COption::GetOptionString('crm', '~CRM_INVOICE_INST_PROP_LOCATION_UA_17_0_9', 'N') !== 'Y') { self::installOrderPropertyLocationUa(); COption::SetOptionString('crm', '~CRM_INVOICE_INST_PROP_LOCATION_UA_17_0_9', 'Y'); if (COption::GetOptionString('crm', '~CRM_INVOICE_INST_ORDER_DATA_18_5_0', 'N') !== 'Y') { try { COption::SetOptionString('crm', '~CRM_INVOICE_INST_ORDER_DATA_18_5_0', 'Y'); require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/crm/install/modules/data.php"); } catch (Exception $e) { COption::SetOptionString('crm', '~CRM_INVOICE_INST_ORDER_DATA_18_5_0', 'N'); $errMsg[] = $e->getMessage(); $bError = true; } if ($bError) { $errString = implode('
', $errMsg); ShowError($errString); return false; } if ($catalogNormalizeStep !== 'Y') { if (self::setCatalogAdminRights() && self::createOfferIBlocks()) Main\Config\Option::set('crm', $catalogNormalizeOption, 'Y', ''); } } } } return true; } if (COption::GetOptionString('crm', '~CRM_INVOICE_EXCH1C_UPDATE_16_1_8', 'N') === 'Y') { if (COption::GetOptionString('crm', '~CRM_INVOICE_UF_MYCOMPANY_ID_16_2_1', 'N') !== 'Y') { $result = self::installOrderIntUserField('UF_MYCOMPANY_ID'); if (!$result->isSuccess()) { $errString = implode('
', $result->getErrorMessages()); ShowError($errString); return false; } COption::SetOptionString('crm', '~CRM_INVOICE_UF_MYCOMPANY_ID_16_2_1', 'Y'); if (COption::GetOptionString('crm', '~CRM_INVOICE_DISABLE_SALE_EVENTS_16_5_10', 'N') !== 'Y') { // disable after the separation invoices and orders //self::installDisableSaleEvents(); COption::SetOptionString('crm', '~CRM_INVOICE_DISABLE_SALE_EVENTS_16_5_10', 'Y'); if (COption::GetOptionString('crm', '~CRM_INVOICE_INST_PROP_LOCATION_UA_17_0_9', 'N') !== 'Y') { self::installOrderPropertyLocationUa(); COption::SetOptionString('crm', '~CRM_INVOICE_INST_PROP_LOCATION_UA_17_0_9', 'Y'); if (COption::GetOptionString('crm', '~CRM_INVOICE_INST_ORDER_DATA_18_5_0', 'N') !== 'Y') { try { COption::SetOptionString('crm', '~CRM_INVOICE_INST_ORDER_DATA_18_5_0', 'Y'); require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/crm/install/modules/data.php"); } catch (Exception $e) { COption::SetOptionString('crm', '~CRM_INVOICE_INST_ORDER_DATA_18_5_0', 'N'); $errMsg[] = $e->getMessage(); $bError = true; } if ($bError) { $errString = implode('
', $errMsg); ShowError($errString); return false; } if ($catalogNormalizeStep !== 'Y') { if (self::setCatalogAdminRights() && self::createOfferIBlocks()) Main\Config\Option::set('crm', $catalogNormalizeOption, 'Y', ''); } } } } } return true; } if (COption::GetOptionString('crm', '~CRM_SALE_STATUS_UPDATE_15_5_8', 'N') === 'Y') { if (COption::GetOptionString('crm', '~CRM_INVOICE_EXCH1C_UPDATE_16_1_8', 'N') !== 'Y') { if (CModule::IncludeModule('sale') && COption::GetOptionString('crm', '~CRM_INVOICE_EXCH1C_UPDATE_12_5_17', 'N') === 'Y') { try { require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/crm/install/exch1c.php"); } catch (Exception $e) { $errMsg[] = $e->getMessage(); $bError = true; } if ($bError) { $errString = implode('
', $errMsg); ShowError($errString); return false; } COption::SetOptionString('crm', '~CRM_INVOICE_EXCH1C_UPDATE_16_1_8', 'Y'); if (COption::GetOptionString('crm', '~CRM_INVOICE_UF_MYCOMPANY_ID_16_2_1', 'N') !== 'Y') { $result = self::installOrderIntUserField('UF_MYCOMPANY_ID'); if (!$result->isSuccess()) { $errString = implode('
', $result->getErrorMessages()); ShowError($errString); return false; } COption::SetOptionString('crm', '~CRM_INVOICE_UF_MYCOMPANY_ID_16_2_1', 'Y'); if (COption::GetOptionString('crm', '~CRM_INVOICE_DISABLE_SALE_EVENTS_16_5_10', 'N') !== 'Y') { // disable after the separation invoices and orders //self::installDisableSaleEvents(); COption::SetOptionString('crm', '~CRM_INVOICE_DISABLE_SALE_EVENTS_16_5_10', 'Y'); if (COption::GetOptionString('crm', '~CRM_INVOICE_INST_PROP_LOCATION_UA_17_0_9', 'N') !== 'Y') { self::installOrderPropertyLocationUa(); COption::SetOptionString('crm', '~CRM_INVOICE_INST_PROP_LOCATION_UA_17_0_9', 'Y'); if (COption::GetOptionString('crm', '~CRM_INVOICE_INST_ORDER_DATA_18_5_0', 'N') !== 'Y') { try { COption::SetOptionString('crm', '~CRM_INVOICE_INST_ORDER_DATA_18_5_0', 'Y'); require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/crm/install/modules/data.php"); } catch (Exception $e) { COption::SetOptionString('crm', '~CRM_INVOICE_INST_ORDER_DATA_18_5_0', 'N'); $errMsg[] = $e->getMessage(); $bError = true; } if ($bError) { $errString = implode('
', $errMsg); ShowError($errString); return false; } if ($catalogNormalizeStep !== 'Y') { if (self::setCatalogAdminRights() && self::createOfferIBlocks()) Main\Config\Option::set('crm', $catalogNormalizeOption, 'Y', ''); } } } } } } } return true; } if (COption::GetOptionString('crm', '~CRM_INVOICE_UF_QUOTE_ID_14_1_13', 'N') === 'Y') { \Bitrix\Main\Config\Option::set('sale', 'format_quantity', '4'); $statusList = \CCrmStatus::GetStatusList('INVOICE_STATUS'); $existStatuses = array_keys($statusList); $bNeutral = true; $neutralStatuses = array(); $failedStatuses = array(); foreach ($existStatuses as $id) { if ($id !== 'N' && $id !== 'P' && $id !== 'D') { if ($bNeutral) $neutralStatuses[] = $id; else $failedStatuses[] = $id; } else if ($id === 'P' || $id === 'D') { $bNeutral = false; } } $statuses = array(); $sort = 100; foreach (array_merge(array('N'), $neutralStatuses, array('P', 'D'), $failedStatuses) as $id) { $statuses[$id] = $sort; $sort += 10; } unset($sort); $crmStatus = new CCrmStatus('INVOICE_STATUS'); if (!empty($statuses)) { $defaultStatuses = []; foreach (CCrmStatus::GetDefaultInvoiceStatuses() as $statusInfo) { $defaultStatuses[$statusInfo['STATUS_ID']] = $statusInfo; } unset($statusInfo); foreach ($statuses as $statusId => $statusSort) { if (!in_array($statusId, $existStatuses, true)) { if(!isset($defaultStatuses[$statusId])) { continue; } $status = array( 'STATUS_ID' => $statusId, 'SORT' => $statusSort, 'NAME' => $defaultStatuses[$statusId]['NAME'], 'SEMANTICS' => $defaultStatuses[$statusId]['SEMANTICS'] ?? null, 'COLOR' => $defaultStatuses[$statusId]['COLOR'] ?? null, ); if ($statusId === 'N' || $statusId === 'P' || $statusId === 'D' ) { $status['SYSTEM'] = 'Y'; $status['NAME_INIT'] = $defaultStatuses[$statusId]; } else { $status['SYSTEM'] = 'N'; } $crmStatus->Add($status); } else { $data = $crmStatus->GetStatusByStatusId($statusId); $crmStatus->Update( $data['ID'], array('SORT' => $statusSort) ); } } unset($statusLangFiles); } COption::SetOptionString('crm', '~CRM_SALE_STATUS_UPDATE_15_5_8', 'Y'); if (COption::GetOptionString('crm', '~CRM_INVOICE_EXCH1C_UPDATE_16_1_8', 'N') !== 'Y') { if (CModule::IncludeModule('sale') && COption::GetOptionString('crm', '~CRM_INVOICE_EXCH1C_UPDATE_12_5_17', 'N') === 'Y') { try { require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/crm/install/exch1c.php"); } catch (Exception $e) { $errMsg[] = $e->getMessage(); $bError = true; } if ($bError) { $errString = implode('
', $errMsg); ShowError($errString); return false; } COption::SetOptionString('crm', '~CRM_INVOICE_EXCH1C_UPDATE_16_1_8', 'Y'); if (COption::GetOptionString('crm', '~CRM_INVOICE_UF_MYCOMPANY_ID_16_2_1', 'N') !== 'Y') { $result = self::installOrderIntUserField('UF_MYCOMPANY_ID'); if (!$result->isSuccess()) { $errString = implode('
', $result->getErrorMessages()); ShowError($errString); return false; } COption::SetOptionString('crm', '~CRM_INVOICE_UF_MYCOMPANY_ID_16_2_1', 'Y'); if (COption::GetOptionString('crm', '~CRM_INVOICE_DISABLE_SALE_EVENTS_16_5_10', 'N') !== 'Y') { // disable after the separation invoices and orders //self::installDisableSaleEvents(); COption::SetOptionString('crm', '~CRM_INVOICE_DISABLE_SALE_EVENTS_16_5_10', 'Y'); if (COption::GetOptionString('crm', '~CRM_INVOICE_INST_PROP_LOCATION_UA_17_0_9', 'N') !== 'Y') { self::installOrderPropertyLocationUa(); COption::SetOptionString('crm', '~CRM_INVOICE_INST_PROP_LOCATION_UA_17_0_9', 'Y'); if (COption::GetOptionString('crm', '~CRM_INVOICE_INST_ORDER_DATA_18_5_0', 'N') !== 'Y') { try { COption::SetOptionString('crm', '~CRM_INVOICE_INST_ORDER_DATA_18_5_0', 'Y'); require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/crm/install/modules/data.php"); } catch (Exception $e) { COption::SetOptionString('crm', '~CRM_INVOICE_INST_ORDER_DATA_18_5_0', 'N'); $errMsg[] = $e->getMessage(); $bError = true; } if ($bError) { $errString = implode('
', $errMsg); ShowError($errString); return false; } } } } } } } return true; } if (COption::GetOptionString('crm', '~CRM_EXCH1C_BASKET_XML_IDS_14_1_9', 'N') === 'Y') { $result = self::installOrderIntUserField('UF_QUOTE_ID'); if (!$result->isSuccess()) { $errString = implode('
', $result->getErrorMessages()); ShowError($errString); return false; } COption::SetOptionString('crm', '~CRM_INVOICE_UF_QUOTE_ID_14_1_13', 'Y'); LocalRedirect($GLOBALS['APPLICATION']->GetCurPageParam()); return true; } if (COption::GetOptionString('crm', '~CRM_EXCH1C_REWRITEDEFCATGRP_12_5_20', 'N') === 'Y') { // update basket xml_id fields if($DB->TableExists('b_crm_invoice') && $DB->TableExists('b_crm_invoice_basket') && $DB->TableExists('b_iblock') && $DB->TableExists('b_iblock_element')) { if($DB->Query("SELECT RESPONSIBLE_ID FROM b_crm_invoice WHERE 1=0", true) && $DB->Query("SELECT CATALOG_XML_ID, PRODUCT_XML_ID FROM b_crm_invoice_basket WHERE 1=0", true) && $DB->Query("SELECT XML_ID FROM b_iblock WHERE 1=0", true) && $DB->Query("SELECT XML_ID FROM b_iblock_element WHERE 1=0", true)) { $catalogId = 0; $tmpCatalogId = intval(COption::GetOptionString('crm', 'default_product_catalog_id', '0')); if ($dbRes = $DB->Query("SELECT ID FROM b_iblock I WHERE I.ID = $tmpCatalogId", true)) { if ($arRes = $dbRes->Fetch()) { if ($tmpCatalogId === intval($arRes['ID'])) $catalogId = $tmpCatalogId; } unset($arRes); } unset($tmpCatalogId, $dbRes); if ($catalogId > 0) { $strSql = "UPDATE b_crm_invoice_basket B".PHP_EOL. " INNER JOIN b_crm_invoice O ON B.ORDER_ID = O.ID".PHP_EOL. " INNER JOIN b_iblock_element IE ON B.PRODUCT_ID = IE.ID".PHP_EOL. " INNER JOIN b_iblock I ON IE.IBLOCK_ID = I.ID".PHP_EOL. "SET".PHP_EOL. " B.CATALOG_XML_ID = I.XML_ID,".PHP_EOL. " B.PRODUCT_XML_ID = IE.XML_ID".PHP_EOL. "WHERE".PHP_EOL. " IE.IBLOCK_ID = $catalogId".PHP_EOL. " AND (".PHP_EOL. " B.PRODUCT_XML_ID IS NULL OR B.PRODUCT_XML_ID = ''".PHP_EOL. " OR B.CATALOG_XML_ID IS NULL OR B.CATALOG_XML_ID = ''".PHP_EOL. " )".PHP_EOL. " AND O.RESPONSIBLE_ID IS NOT NULL"; $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__); unset($strSql); } } } COption::SetOptionString('crm', '~CRM_EXCH1C_BASKET_XML_IDS_14_1_9', 'Y'); $result = self::installOrderIntUserField('UF_QUOTE_ID'); if (!$result->isSuccess()) { $errString = implode('
', $result->getErrorMessages()); ShowError($errString); return false; } COption::SetOptionString('crm', '~CRM_INVOICE_UF_QUOTE_ID_14_1_13', 'Y'); LocalRedirect($GLOBALS['APPLICATION']->GetCurPageParam()); return true; } if (COption::GetOptionString('crm', '~CRM_INVOICE_DISABLE_SALE_EVENTS_12_5_19', 'N') === 'Y') { if (!CModule::IncludeModule('catalog')) return false; $arBaseCatalogGroup = CCatalogGroup::GetBaseGroup(); $priceTypeId = intval($arBaseCatalogGroup['ID']); COption::SetOptionInt('crm', 'selected_catalog_group_id', $priceTypeId); unset($arBaseCatalogGroup, $priceTypeId); COption::SetOptionString('crm', '~CRM_EXCH1C_REWRITEDEFCATGRP_12_5_20', 'Y'); LocalRedirect($GLOBALS['APPLICATION']->GetCurPageParam()); return true; } if (COption::GetOptionString('crm', '~CRM_INVOICE_EXCH1C_UPDATE_12_5_17', 'N') === 'Y') { $pref = COption::GetOptionString('sale', '1C_SALE_ACCOUNT_NUMBER_SHOP_PREFIX', ''); if (mb_strlen(strval($pref)) < 1) COption::SetOptionString('sale', '1C_SALE_ACCOUNT_NUMBER_SHOP_PREFIX', 'CRM_'); COption::SetOptionString('crm', '~CRM_INVOICE_EXCH1C_UPDATE_12_5_19', 'Y'); // disable after the separation invoices and orders //self::installDisableSaleEvents(); COption::SetOptionString('crm', '~CRM_INVOICE_DISABLE_SALE_EVENTS_12_5_19', 'Y'); if (!CModule::IncludeModule('catalog')) return false; $arBaseCatalogGroup = CCatalogGroup::GetBaseGroup(); $priceTypeId = intval($arBaseCatalogGroup['ID']); COption::SetOptionInt('crm', 'selected_catalog_group_id', $priceTypeId); unset($arBaseCatalogGroup, $priceTypeId); COption::SetOptionString('crm', '~CRM_EXCH1C_REWRITEDEFCATGRP_12_5_20', 'Y'); LocalRedirect($GLOBALS['APPLICATION']->GetCurPageParam()); return true; } if (COption::GetOptionString('crm', '~CRM_INVOICE_INSTALL_12_5_7', 'N') === 'Y') { // fix 40279 if (COption::GetOptionString('crm', '~CRM_INVOICE_UPDATE_12_5_14', 'N') !== 'Y') { try { if (CModule::IncludeModule('sale')) { global $DB; if ($DB->TableExists('b_sale_order_props') && class_exists('CSaleOrderProps')) { $arPropsFilter = [ '=TYPE' => 'LOCATION', '=REQUIRED' => 'Y', '=USER_PROPS' => 'Y', '=IS_LOCATION' => 'Y', '=IS_EMAIL' => 'N', '=IS_PROFILE_NAME' => 'N', '=IS_PAYER' => 'N', '=CODE' => 'LOCATION' ]; $dbRes = \Bitrix\Crm\Order\Property::getList([ 'select' => ['ID', 'IS_LOCATION4TAX', 'SORT'], 'filter' => $arPropsFilter, 'order' => ['SORT' => 'ASC', 'ID' => 'ASC'] ]); while ($arOrderProp = $dbRes->fetch()) { if ($arOrderProp['IS_LOCATION4TAX'] !== 'Y') { \Bitrix\Sale\Internals\OrderPropsTable::update($arOrderProp['ID'], ['IS_LOCATION4TAX' => 'Y']); } } COption::SetOptionString('crm', '~CRM_INVOICE_UPDATE_12_5_14', 'Y'); } } } catch(Exception $e) {} } if (COption::GetOptionString('crm', '~CRM_INVOICE_UPDATE_12_5_14', 'N') === 'Y') { if (COption::GetOptionString('crm', '~CRM_INVOICE_EXCH1C_UPDATE_12_5_17', 'N') !== 'Y') { if (CModule::IncludeModule('catalog') && CModule::IncludeModule('sale') && CModule::IncludeModule('iblock')) { try { require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/crm/install/exch1c.php"); } catch(Exception $e) { $errMsg[] = $e->getMessage(); $bError = true; } if (!$bError) { COption::SetOptionString('crm', '~CRM_INVOICE_EXCH1C_UPDATE_12_5_17', 'Y'); COption::SetOptionString('sale', '1C_SALE_ACCOUNT_NUMBER_SHOP_PREFIX', 'CRM_'); COption::SetOptionString('crm', '~CRM_INVOICE_EXCH1C_UPDATE_12_5_19', 'Y'); // disable after the separation invoices and orders //self::installDisableSaleEvents(); COption::SetOptionString('crm', '~CRM_INVOICE_DISABLE_SALE_EVENTS_12_5_19', 'Y'); if (!CModule::IncludeModule('catalog')) return false; $arBaseCatalogGroup = CCatalogGroup::GetBaseGroup(); $priceTypeId = intval($arBaseCatalogGroup['ID']); COption::SetOptionInt('crm', 'selected_catalog_group_id', $priceTypeId); unset($arBaseCatalogGroup, $priceTypeId); COption::SetOptionString('crm', '~CRM_EXCH1C_REWRITEDEFCATGRP_12_5_20', 'Y'); LocalRedirect($GLOBALS['APPLICATION']->GetCurPageParam()); return true; } else { $errString = implode('
', $errMsg); ShowError($errString); return false; } } } else return true; } return false; } if (COption::GetOptionString('crm', '~CRM_INVOICE_INSTALL_12_5_7', 'N') !== 'Y') { COption::SetOptionString('crm', '~CRM_INVOICE_INSTALL_12_5_7', 'Y'); try { require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/crm/install/sale_link.php"); } catch(Exception $e) { $errMsg[] = $e->getMessage(); $bError = true; } if (!$bError) { LocalRedirect($GLOBALS['APPLICATION']->GetCurPageParam()); return true; } else { $errString = implode('
', $errMsg); ShowError($errString); COption::SetOptionString('crm', '~CRM_INVOICE_INSTALL_12_5_7', 'N'); return false; } } return false; }

Добавить комментарий