예제 #1
0
 public static function getSelectedPriceTypeId()
 {
     if (is_null(self::$selectedPriceTypeId)) {
         $priceTypeId = intval(COption::GetOptionInt('crm', 'selected_catalog_group_id', 0));
         if ($priceTypeId < 1) {
             $arBaseCatalogGroup = CCatalogGroup::GetBaseGroup();
             $priceTypeId = intval($arBaseCatalogGroup['ID']);
         }
         self::$selectedPriceTypeId = $priceTypeId;
     }
     return self::$selectedPriceTypeId;
 }
예제 #2
0
파일: price.php 프로젝트: ASDAFF/entask.ru
	function ReCountFromBase(&$arFields, &$boolBase)
	{
		$arBaseGroup = CCatalogGroup::GetBaseGroup();
		if (!empty($arBaseGroup))
		{
			if ($arFields['CATALOG_GROUP_ID'] == $arBaseGroup['ID'])
			{
				$boolBase = true;
			}
			else
			{
				if (!empty($arFields['EXTRA_ID']) && intval($arFields['EXTRA_ID']) > 0)
				{
					$arExtra = CExtra::GetByID($arFields['EXTRA_ID']);
					if (!empty($arExtra))
					{
						$arFilter = array('PRODUCT_ID' => $arFields['PRODUCT_ID'],'CATALOG_GROUP_ID' => $arBaseGroup['ID']);
						if (isset($arFields['QUANTITY_FROM']))
							$arFilter['QUANTITY_FROM'] = $arFields['QUANTITY_FROM'];
						if (isset($arFields['QUANTITY_TO']))
							$arFilter['QUANTITY_TO'] = $arFields['QUANTITY_TO'];
						$rsBasePrices = CPrice::GetListEx(
							array("QUANTITY_FROM" => "ASC", "QUANTITY_TO" => "ASC"),
							$arFilter,
							false,
							array('nTopCount' => 1),
							array('PRICE','CURRENCY')
						);
						if ($arBasePrice = $rsBasePrices->Fetch())
						{
							$arFields['CURRENCY'] = $arBasePrice['CURRENCY'];
							$arFields['PRICE'] = RoundEx($arBasePrice["PRICE"] * (1 + DoubleVal($arExtra["PERCENTAGE"])/100), CATALOG_VALUE_PRECISION);
						}
						else
						{
							$arFields['EXTRA_ID'] = 0;
						}
					}
					else
					{
						$arFields['EXTRA_ID'] = 0;
					}
				}
			}
		}
	}
예제 #3
0
            $isDisabled = " disabled";
        }
        echo CCurrency::SelectBox("CAT_PURCHASING_CURRENCY", $arBaseProduct['PURCHASING_CURRENCY'], "", true, "", "id='CAT_PURCHASING_CURRENCY' {$isDisabled}");
        ?>
</td>
		</tr>
	<?php 
    }
    ?>
	<tr id="tr_BASE_PRICE" style="display: <?php 
    echo $bUseExtendedPrice ? 'none' : 'table-row';
    ?>
;">
		<td width="40%">
	<?php 
    $arBaseGroup = CCatalogGroup::GetBaseGroup();
    $arBasePrice = CPrice::GetBasePrice($PRODUCT_ID, $arPriceBoundaries[0]["FROM"], $arPriceBoundaries[0]["TO"]);
    echo GetMessage("BASE_PRICE");
    ?>
 (<?php 
    echo GetMessage('C2IT_PRICE_TYPE');
    ?>
 "<?php 
    echo htmlspecialcharsbx(!empty($arBaseGroup['NAME_LANG']) ? $arBaseGroup['NAME_LANG'] : $arBaseGroup["NAME"]);
    ?>
"):
		</td>
		<td width="60%">
<script type="text/javascript">
var arExtra = [], arExtraPrc = [];
	<?php 
<?php

IncludeModuleLangFile(__FILE__);
$profileTypes['avito_commercereal'] = array("CODE" => 'avito_commercereal', "NAME" => GetMessage("ACRIT_EXPORTPRO_AVITO_COMMERCEREAL_NAME"), "DESCRIPTION" => GetMessage("ACRIT_EXPORTPRO_PODDERJIVAETSA_ANDEK"), "REG" => "http://market.yandex.ru/", "HELP" => "http://help.yandex.ru/partnermarket/export/feed.xml", "FIELDS" => array(array("CODE" => "Id", "NAME" => GetMessage("ACRIT_EXPORTPRO_AVITO_COMMERCEREAL_FIELD_ID"), "VALUE" => "ID", "REQUIRED" => 'Y', "TYPE" => 'field'), array("CODE" => "Category", "NAME" => GetMessage("ACRIT_EXPORTPRO_AVITO_COMMERCEREAL_FIELD_CATEGORY"), "REQUIRED" => 'Y', "TYPE" => 'const', "CONTVALUE_TRUE" => GetMessage('ACRIT_EXPORTPRO_AVITO_COMMERCEREAL_CATEGORY_VALUE')), array("CODE" => "DateBegin", "NAME" => GetMessage("ACRIT_EXPORTPRO_AVITO_COMMERCEREAL_FIELD_DATEBEGIN")), array("CODE" => "DateEnd", "NAME" => GetMessage("ACRIT_EXPORTPRO_AVITO_COMMERCEREAL_FIELD_DATEEND")), array("CODE" => "OperationType", "NAME" => GetMessage("ACRIT_EXPORTPRO_AVITO_COMMERCEREAL_FIELD_OPERATIONTYPE"), "REQUIRED" => 'Y'), array("CODE" => "BuildingClass", "NAME" => GetMessage("ACRIT_EXPORTPRO_AVITO_COMMERCEREAL_FIELD_BUILDINGCLASS")), array("CODE" => "BusinessForSale", "NAME" => GetMessage("ACRIT_EXPORTPRO_AVITO_COMMERCEREAL_FIELD_BUSINESSFORSALE")), array("CODE" => "Region", "NAME" => GetMessage("ACRIT_EXPORTPRO_AVITO_COMMERCEREAL_FIELD_REGION")), array("CODE" => "City", "NAME" => GetMessage("ACRIT_EXPORTPRO_AVITO_COMMERCEREAL_FIELD_CITY"), "REQUIRED" => 'Y'), array("CODE" => "Locality", "NAME" => GetMessage("ACRIT_EXPORTPRO_AVITO_COMMERCEREAL_FIELD_LOCALITY")), array("CODE" => "Street", "NAME" => GetMessage("ACRIT_EXPORTPRO_AVITO_COMMERCEREAL_FIELD_STREET")), array("CODE" => "ObjectType", "NAME" => GetMessage("ACRIT_EXPORTPRO_AVITO_COMMERCEREAL_FIELD_OBJECTTYPE"), "REQUIRED" => 'Y'), array("CODE" => "Square", "NAME" => GetMessage("ACRIT_EXPORTPRO_AVITO_COMMERCEREAL_FIELD_SQUARE"), "REQUIRED" => 'Y'), array("CODE" => "Subway", "NAME" => GetMessage("ACRIT_EXPORTPRO_AVITO_COMMERCEREAL_FIELD_SUBWAY")), array("CODE" => "Description", "NAME" => GetMessage("ACRIT_EXPORTPRO_AVITO_COMMERCEREAL_FIELD_DESCRIPTION")), array("CODE" => "Price", "NAME" => GetMessage("ACRIT_EXPORTPRO_AVITO_COMMERCEREAL_FIELD_PRICE"), "TYPE" => "const", "CONTVALUE_TRUE" => "0"), array("CODE" => "ContactPhone", "NAME" => GetMessage("ACRIT_EXPORTPRO_AVITO_COMMERCEREAL_FIELD_CONTACTPHONE")), array("CODE" => "AdStatus", "NAME" => GetMessage("ACRIT_EXPORTPRO_AVITO_COMMERCEREAL_FIELD_ADSTATUS")), array("CODE" => "Image", "NAME" => GetMessage("ACRIT_EXPORTPRO_AVITO_COMMERCEREAL_FIELD_IMAGE"))), "FORMAT" => '<?xml version="1.0"?>
<Ads target="Avito.ru" formatVersion="1">
    #ITEMS#
</Ads>', "DATEFORMAT" => "Y-m-d");
$bCatalog = false;
if (CModule::IncludeModule("catalog")) {
    $arBasePrice = CCatalogGroup::GetBaseGroup();
    $basePriceCode = "CATALOG-PRICE_" . $arBasePrice["ID"];
    $basePriceCodeWithDiscount = "CATALOG-PRICE_" . $arBasePrice["ID"] . "_WD";
    $bCatalog = true;
    $profileTypes['avito_commercereal']["FIELDS"][15] = array("CODE" => "Price", "NAME" => GetMessage("ACRIT_EXPORTPRO_AVITO_COMMERCEREAL_FIELD_PRICE"), "TYPE" => "field", "VALUE" => $basePriceCode);
}
$profileTypes['avito_commercereal']['PORTAL_REQUIREMENTS'] = GetMessage('ACRIT_EXPORTPRO_TYPE_AVITO_COMMERCEREAL_PORTAL_REQUIREMENTS');
$profileTypes['avito_commercereal']['EXAMPLE'] = GetMessage('ACRIT_EXPORTPRO_TYPE_AVITO_COMMERCEREAL_EXAMPLE');
$profileTypes['avito_commercereal']['CURRENCIES'] = "";
$profileTypes['avito_commercereal']['SECTIONS'] = "";
$profileTypes['avito_commercereal']['ITEMS_FORMAT'] = "\n<Ad>\n    <Id>#Id#</Id>\n    <Category>#Category#</Category>\n    <DateBegin>#DateBegin#</DateBegin>\n    <DateEnd>#DateEnd#</DateEnd>\n    <OperationType>#OperationType#</OperationType>\n    <BuildingClass>#BuildingClass#</BuildingClass>\n    <BusinessForSale>#BusinessForSale#</BusinessForSale>\n    <Region>#Region#</Region>\n    <City>#City#</City>\n    <Locality>#Locality#</Locality>\n    <Street>#Street#</Street>\n    <Square>#Square#</Square>\n    <ObjectType>#ObjectType#</ObjectType>\n    <Subway>#Subway#</Subway>\n    <Description>#Description#</Description>\n    <Price>#Price#</Price>\n    <ContactPhone>#ContactPhone#</ContactPhone>\n    <AdStatus>#AdStatus#</AdStatus>\n    <Images>\n        <Image url=\"#SITE_URL##Image#\"></Image>\n    </Images>\n</Ad>\n";
$profileTypes['avito_commercereal']['LOCATION'] = array('avito' => array('name' => GetMessage("ACRIT_EXPORTPRO_AVITO"), 'sub' => array()));
예제 #5
0
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) {
    die;
}
foreach ($arResult as $key => $val) {
    $img = "";
    if ($val["DETAIL_PICTURE"] > 0) {
        $img = $val["DETAIL_PICTURE"];
    } elseif ($val["PREVIEW_PICTURE"] > 0) {
        $img = $val["PREVIEW_PICTURE"];
    }
    $file = CFile::ResizeImageGet($img, array('width' => $arParams["VIEWED_IMG_WIDTH"], 'height' => $arParams["VIEWED_IMG_HEIGHT"]), BX_RESIZE_IMAGE_PROPORTIONAL, true);
    $val["PICTURE"] = $file;
    $arResult[$key] = $val;
}
if (CModule::IncludeModule("catalog")) {
    $basePriceType = CCatalogGroup::GetBaseGroup();
    $basePriceTypeName = $basePriceType["NAME"];
}
/*SKU -- */
foreach ($arResult as $cell => $arElement) {
    if (is_array($arElement["OFFERS"]) && !empty($arElement["OFFERS"])) {
        $minItemPrice = 0;
        $minItemPriceFormat = "";
        foreach ($arElement["OFFERS"] as $arOffer) {
            foreach ($arOffer["PRICES"] as $code => $arPrice) {
                if ($arPrice["CAN_ACCESS"]) {
                    if ($arPrice["DISCOUNT_VALUE"] < $arPrice["VALUE"]) {
                        $minOfferPrice = $arPrice["DISCOUNT_VALUE"];
                        $minOfferPriceFormat = $arPrice["PRINT_DISCOUNT_VALUE"];
                    } else {
                        $minOfferPrice = $arPrice["VALUE"];
 private function isBase($arFields)
 {
     $baseGroup = CCatalogGroup::GetBaseGroup();
     return $arFields['CATALOG_GROUP_ID'] == $baseGroup['ID'];
 }
예제 #7
0
 /**
  * <p>
  * CREATE SALE AND CATALOG MODULES ENTITIES FOR INVOICES IN CRM VERSION 12.5.7
  * <br>UPDATE ORDER OPTION IN CRM VERSION 12.5.14
  * <br>CREATE 1C EXCHANGE OPTIONS DEFAULTS AND DEFAULT INVOICE EXPORT PROFILES IN CRM VERSION 12.5.17
  * <br>...
  * </p>
  */
 public static function installExternalEntities()
 {
     global $DB, $DBType;
     $errMsg = array();
     // at first, check last update version
     if (COption::GetOptionString('crm', '~CRM_INVOICE_UF_QUOTE_ID_14_1_13', 'N') === 'Y') {
         return true;
     }
     if (COption::GetOptionString('crm', '~CRM_EXCH1C_BASKET_XML_IDS_14_1_9', 'N') === 'Y') {
         $bFieldExists = false;
         $obUserField = new CUserTypeEntity();
         $dbRes = $obUserField->GetList(array('SORT' => 'DESC'), array('ENTITY_ID' => 'ORDER'));
         $maxUFSort = 0;
         $i = 0;
         while ($arUF = $dbRes->Fetch()) {
             if ($i++ === 0) {
                 $maxUFSort = intval($arUF['SORT']);
             }
             if ($arUF['FIELD_NAME'] === 'UF_QUOTE_ID') {
                 $bFieldExists = true;
                 break;
             }
         }
         unset($dbRes, $arUF, $i);
         if (!$bFieldExists) {
             $arOrderUserField = array('ENTITY_ID' => 'ORDER', 'FIELD_NAME' => 'UF_QUOTE_ID', 'USER_TYPE_ID' => 'integer', 'XML_ID' => 'uf_quote_id', 'SORT' => strval($maxUFSort + 10), 'MULTIPLE' => null, 'MANDATORY' => null, 'SHOW_FILTER' => 'N', 'SHOW_IN_LIST' => 'N', 'EDIT_IN_LIST' => 'N', 'IS_SEARCHABLE' => null, 'SETTINGS' => array('DEFAULT_VALUE' => null, 'SIZE' => '', 'ROWS' => '1', 'MIN_LENGTH' => '0', 'MAX_LENGTH' => '0', 'REGEXP' => ''), 'EDIT_FORM_LABEL' => array('ru' => '', 'en' => ''), 'LIST_COLUMN_LABEL' => array('ru' => '', 'en' => ''), 'LIST_FILTER_LABEL' => array('ru' => '', 'en' => ''), 'ERROR_MESSAGE' => array('ru' => '', 'en' => ''), 'HELP_MESSAGE' => array('ru' => '', 'en' => ''));
             $userFieldId = $obUserField->Add($arOrderUserField);
             if ($userFieldId <= 0) {
                 $errMsg[] = str_replace("#FIELD_NAME#", $arOrderUserField['FIELD_NAME'], GetMessage('CRM_CANT_ADD_USER_FIELD'));
             }
             unset($userFieldId);
         }
         if (empty($errMsg)) {
             COption::SetOptionString('crm', '~CRM_INVOICE_UF_QUOTE_ID_14_1_13', 'Y');
             return true;
         } else {
             $errString = implode('<br>', $errMsg);
             ShowError($errString);
             return false;
         }
     }
     if (COption::GetOptionString('crm', '~CRM_EXCH1C_REWRITEDEFCATGRP_12_5_20', 'N') === 'Y') {
         // update basket xml_id fields
         if ($DB->TableExists('b_sale_order') && $DB->TableExists('b_sale_basket') && $DB->TableExists('b_iblock') && $DB->TableExists('b_iblock_element')) {
             if ($DB->Query("SELECT RESPONSIBLE_ID FROM b_sale_order WHERE 1=0", true) && $DB->Query("SELECT CATALOG_XML_ID, PRODUCT_XML_ID FROM b_sale_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) {
                     $databaseType = strtoupper($DBType);
                     $strSql = '';
                     switch ($databaseType) {
                         case 'MYSQL':
                             $strSql = "UPDATE b_sale_basket B" . PHP_EOL . "  INNER JOIN b_sale_order 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";
                             break;
                         case 'MSSQL':
                             $strSql = "UPDATE B" . PHP_EOL . "SET" . PHP_EOL . "  B.CATALOG_XML_ID = I.XML_ID," . PHP_EOL . "  B.PRODUCT_XML_ID = IE.XML_ID" . PHP_EOL . "FROM B_SALE_BASKET B" . PHP_EOL . "  INNER JOIN B_SALE_ORDER 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 . "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";
                             break;
                         case 'ORACLE':
                             $strSql = "UPDATE (" . PHP_EOL . "  SELECT" . PHP_EOL . "    B.ID," . PHP_EOL . "    B.CATALOG_XML_ID," . PHP_EOL . "    B.PRODUCT_XML_ID," . PHP_EOL . "    I.XML_ID AS C_XML_ID," . PHP_EOL . "    IE.XML_ID AS P_XML_ID" . PHP_EOL . "  FROM B_SALE_BASKET B" . PHP_EOL . "    INNER JOIN B_SALE_ORDER 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 . "  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" . PHP_EOL . ") U" . PHP_EOL . "SET" . PHP_EOL . "  U.CATALOG_XML_ID = U.C_XML_ID," . PHP_EOL . "  U.PRODUCT_XML_ID = U.P_XML_ID";
                             break;
                     }
                     unset($databaseType);
                     $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
                     unset($strSql);
                 }
             }
         }
         COption::SetOptionString('crm', '~CRM_EXCH1C_BASKET_XML_IDS_14_1_9', 'Y');
         $bFieldExists = false;
         $obUserField = new CUserTypeEntity();
         $dbRes = $obUserField->GetList(array('SORT' => 'DESC'), array('ENTITY_ID' => 'ORDER'));
         $maxUFSort = 0;
         $i = 0;
         while ($arUF = $dbRes->Fetch()) {
             if ($i++ === 0) {
                 $maxUFSort = intval($arUF['SORT']);
             }
             if ($arUF['FIELD_NAME'] === 'UF_QUOTE_ID') {
                 $bFieldExists = true;
                 break;
             }
         }
         unset($dbRes, $arUF, $i);
         if (!$bFieldExists) {
             $arOrderUserField = array('ENTITY_ID' => 'ORDER', 'FIELD_NAME' => 'UF_QUOTE_ID', 'USER_TYPE_ID' => 'integer', 'XML_ID' => 'uf_quote_id', 'SORT' => strval($maxUFSort + 10), 'MULTIPLE' => null, 'MANDATORY' => null, 'SHOW_FILTER' => 'N', 'SHOW_IN_LIST' => 'N', 'EDIT_IN_LIST' => 'N', 'IS_SEARCHABLE' => null, 'SETTINGS' => array('DEFAULT_VALUE' => null, 'SIZE' => '', 'ROWS' => '1', 'MIN_LENGTH' => '0', 'MAX_LENGTH' => '0', 'REGEXP' => ''), 'EDIT_FORM_LABEL' => array('ru' => '', 'en' => ''), 'LIST_COLUMN_LABEL' => array('ru' => '', 'en' => ''), 'LIST_FILTER_LABEL' => array('ru' => '', 'en' => ''), 'ERROR_MESSAGE' => array('ru' => '', 'en' => ''), 'HELP_MESSAGE' => array('ru' => '', 'en' => ''));
             unset($maxUFSort);
             $userFieldId = $obUserField->Add($arOrderUserField);
             if ($userFieldId <= 0) {
                 $errMsg[] = str_replace("#FIELD_NAME#", $arOrderUserField['FIELD_NAME'], GetMessage('CRM_CANT_ADD_USER_FIELD'));
             }
             unset($userFieldId, $obUserField, $arOrderUserField);
         }
         if (empty($errMsg)) {
             COption::SetOptionString('crm', '~CRM_INVOICE_UF_QUOTE_ID_14_1_13', 'Y');
             return true;
         } else {
             $errString = implode('<br>', $errMsg);
             ShowError($errString);
             return false;
         }
     }
     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 (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');
         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 = array('TYPE' => 'LOCATION', 'REQUIED' => 'Y', 'USER_PROPS' => 'Y', 'IS_LOCATION' => 'Y', 'IS_EMAIL' => 'N', 'IS_PROFILE_NAME' => 'N', 'IS_PAYER' => 'N', 'CODE' => 'LOCATION');
                         // update properties
                         $dbOrderProps = CSaleOrderProps::GetList(array('SORT' => 'ASC', 'ID' => 'ASC'), $arPropsFilter, false, false, array('ID', 'IS_LOCATION4TAX'));
                         if ($dbOrderProps !== false) {
                             while ($arOrderProp = $dbOrderProps->Fetch()) {
                                 if ($arOrderProp['IS_LOCATION4TAX'] !== 'Y') {
                                     CSaleOrderProps::Update($arOrderProp['ID'], array('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();
                     }
                     if (empty($errMsg)) {
                         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');
                         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('<br>', $errMsg);
                         ShowError($errString);
                         return false;
                     }
                 }
             } else {
                 return true;
             }
         }
         return false;
     }
     try {
         require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/crm/install/sale_link.php";
     } catch (Exception $e) {
         $errMsg[] = $e->getMessage();
     }
     if (empty($errMsg)) {
         COption::SetOptionString('crm', '~CRM_INVOICE_INSTALL_12_5_7', 'Y');
         LocalRedirect($GLOBALS['APPLICATION']->GetCurPageParam());
         return true;
     } else {
         $errString = implode('<br>', $errMsg);
         ShowError($errString);
         return false;
     }
 }