diff --git a/CHANGELOG.md b/CHANGELOG.md index 7ccfdc52..5e91d63e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +## 2018-05-23 v.2.3.6 +* Улучшена выгрузка свойств товаров типа "справочник" +* Добавлена настройка выгрузки габаритов и веса в заказе +* Добавлена совместимость натройки экспорта для Google Chrome +* Исправлена ошибка при выгрузке истории с пустым городом +* Добавлены проверки на существование модуля Highloadblock +* Исправлен баг с отправкой пустого заказа при удалении в 1С-Битрикс + ## 2018-03-22 v.2.3.5 * В настройку экспорта добавлена настройка свойств типа "справочник"(highloadblock) * Добавлена проверка необходимости резервации товаров при выгрузке заказов из retailCRM diff --git a/intaro.retailcrm/classes/general/events/RetailCrmEvent.php b/intaro.retailcrm/classes/general/events/RetailCrmEvent.php index 88fe226c..7ed8c01a 100644 --- a/intaro.retailcrm/classes/general/events/RetailCrmEvent.php +++ b/intaro.retailcrm/classes/general/events/RetailCrmEvent.php @@ -202,11 +202,10 @@ class RetailCrmEvent * * @param object $event - Payment object */ - function paymentSave($event) - { + { $apiVersion = COption::GetOptionString(self::$MODULE_ID, 'api_version', 0); - + if ((isset($GLOBALS['RETAIL_CRM_HISTORY']) && $GLOBALS['RETAIL_CRM_HISTORY']) || $apiVersion != 'v5') { return; } diff --git a/intaro.retailcrm/classes/general/history/RetailCrmHistory_v5.php b/intaro.retailcrm/classes/general/history/RetailCrmHistory_v5.php index 8f9d2f7d..bd7e3f1d 100644 --- a/intaro.retailcrm/classes/general/history/RetailCrmHistory_v5.php +++ b/intaro.retailcrm/classes/general/history/RetailCrmHistory_v5.php @@ -557,16 +557,21 @@ class RetailCrmHistory $parameters['filter']['PHRASE'] = RCrmActions::fromJSON(trim($loc[0])); } elseif (count($loc) == 2) { $parameters['filter']['PHRASE'] = RCrmActions::fromJSON(trim($loc[1])); - } else{ + } else { RCrmActions::eventLog('RetailCrmHistory::orderHistory', 'RetailCrmHistory::setProp', 'Error location. ' . $order['delivery']['address'][$key] . ' not found add in order number=' . $order['number']); continue; } - $parameters['filter']['NAME.LANGUAGE_ID'] = 'ru'; - $location = \Bitrix\Sale\Location\Search\Finder::find($parameters, array('USE_INDEX' => false, 'USE_ORM' => false))->fetch(); - $somePropValue = $propertyCollection->getItemByOrderPropertyId($propsKey[$orderProp]['ID']); - self::setProp($somePropValue, $location['CODE']); - } else { + $parameters['filter']['NAME.LANGUAGE_ID'] = 'ru'; + + try { + $location = \Bitrix\Sale\Location\Search\Finder::find($parameters, array('USE_INDEX' => false, 'USE_ORM' => false))->fetch(); + $somePropValue = $propertyCollection->getItemByOrderPropertyId($propsKey[$orderProp]['ID']); + self::setProp($somePropValue, $location['CODE']); + } catch (\Bitrix\Main\ArgumentException $argumentException) { + RCrmActions::eventLog('RetailCrmHistory::orderHistory', 'RetailCrmHistory::setProp', 'Location parameter is incorrect in order number=' . $order['number']); + } + } else { RCrmActions::eventLog('RetailCrmHistory::orderHistory', 'RetailCrmHistory::setProp', 'Error location. ' . $order['delivery']['address'][$key] . ' is empty in order number=' . $order['number']); continue; diff --git a/intaro.retailcrm/classes/general/icml/RetailCrmICML.php b/intaro.retailcrm/classes/general/icml/RetailCrmICML.php index 8d8c498d..06b74bba 100644 --- a/intaro.retailcrm/classes/general/icml/RetailCrmICML.php +++ b/intaro.retailcrm/classes/general/icml/RetailCrmICML.php @@ -14,6 +14,8 @@ class RetailCrmICML public $propertiesUnitSKU; public $propertiesProduct; public $propertiesUnitProduct; + public $highloadblockSkuProperties; + public $highloadblockProductProperties; public $application; public $encoding = 'utf-8'; public $encodingDefault = 'utf-8'; @@ -412,10 +414,10 @@ class RetailCrmICML $resPropertiesProduct[$key . "_UNIT"] = $this->measurementLink[$this->propertiesUnitProduct[$id][$key]]; } if (isset($highloadblockProductProps[$propProduct])) { - $propVal = $this->getHBprop($highloadblockProductProps[$propProduct], $offer["PROPERTY_" . $propProduct . "_VALUE"]); + $propVal = $this->getHBprop($highloadblockProductProps[$propProduct], $product["PROPERTY_" . $propProduct . "_VALUE"]); $tableName = $highloadblockProductProps[$propProduct]['USER_TYPE_SETTINGS']['TABLE_NAME']; - $field = $this->highloadblockSkuProperties[$tableName][$iblockOffer['IBLOCK_ID']][$key]; - + $field = $this->highloadblockProductProperties[$tableName][$iblockOffer['IBLOCK_ID']][$key]; + $resPropertiesProduct[$key] = $propVal[$field]; } } @@ -595,20 +597,23 @@ class RetailCrmICML private function getHBprop($hbProp, $xml_id) { - CModule::IncludeModule('highloadblock'); - $hlblockArr = \Bitrix\Highloadblock\HighloadBlockTable::getList([ - 'filter' => ['=TABLE_NAME' => $hbProp['USER_TYPE_SETTINGS']['TABLE_NAME']] - ])->fetch(); + if (CModule::IncludeModule('highloadblock')) { + $hlblockArr = \Bitrix\Highloadblock\HighloadBlockTable::getList(array( + 'filter' => array('=TABLE_NAME' => $hbProp['USER_TYPE_SETTINGS']['TABLE_NAME']) + ))->fetch(); - $hlblock = HL\HighloadBlockTable::getById($hlblockArr["ID"])->fetch(); - $entity = HL\HighloadBlockTable::compileEntity($hlblock); - $entityClass = $entity->getDataClass(); + $hlblock = HL\HighloadBlockTable::getById($hlblockArr["ID"])->fetch(); + $entity = HL\HighloadBlockTable::compileEntity($hlblock); + $entityClass = $entity->getDataClass(); - $result = $entityClass::getList(array( - 'select' => array('*'), - 'filter' => array('UF_XML_ID' => $xml_id) - )); + $result = $entityClass::getList(array( + 'select' => array('*'), + 'filter' => array('UF_XML_ID' => $xml_id) + )); - return $result->fetch(); + return $result->fetch(); + } + + return array(); } -} \ No newline at end of file +} diff --git a/intaro.retailcrm/classes/general/order/RetailCrmOrder_v5.php b/intaro.retailcrm/classes/general/order/RetailCrmOrder_v5.php index f0777ee0..0be2fa7b 100644 --- a/intaro.retailcrm/classes/general/order/RetailCrmOrder_v5.php +++ b/intaro.retailcrm/classes/general/order/RetailCrmOrder_v5.php @@ -20,6 +20,7 @@ class RetailCrmOrder public static $CRM_ORDER_HISTORY_DATE = 'order_history_date'; public static $CRM_CATALOG_BASE_PRICE = 'catalog_base_price'; public static $CRM_ORDER_NUMBERS = 'order_numbers'; + public static $CRM_ORDER_DIMENSIONS = 'order_dimensions'; const CANCEL_PROPERTY_CODE = 'INTAROCRM_IS_CANCELED'; @@ -44,6 +45,8 @@ class RetailCrmOrder return false; } + $dimensions = COption::GetOptionString(self::$MODULE_ID, self::$CRM_ORDER_DIMENSIONS, 'N'); + $order = array( 'number' => $arFields['NUMBER'], 'externalId' => $arFields['ID'], @@ -147,7 +150,7 @@ class RetailCrmOrder $order['items'][] = $item; - if ($send) { + if ($send && $dimensions == 'Y') { $dimensions = RCrmActions::unserializeArrayRecursive($product['DIMENSIONS']); $width += $dimensions['WIDTH']; $height += $dimensions['HEIGHT']; @@ -156,7 +159,7 @@ class RetailCrmOrder } } - if ($send) { + if ($send && $dimensions == 'Y') { $order['width'] = $width; $order['height'] = $height; $order['length'] = $length; diff --git a/intaro.retailcrm/description.ru b/intaro.retailcrm/description.ru index 353a2078..8fda3eeb 100644 --- a/intaro.retailcrm/description.ru +++ b/intaro.retailcrm/description.ru @@ -1,4 +1,6 @@ -- В настройку экспорта добавлена настройка свойств типа "справочник"(highloadblock) -- Добавлена проверка необходимости резервации товаров при выгрузке заказов из retailCRM -- Исправлен вызов рекурсивного метода в RCrmActions -- Добавлены недостающие поля retailcrm.json +- Улучшена выгрузка свойств товаров типа "справочник" +- Добавлена настройка выгрузки габаритов и веса в заказе +- Добавлена совместимость натройки экспорта для Google Chrome +- Исправлена ошибка при выгрузке истории с пустым городом +- Добавлены проверки на существование модуля Highloadblock +- Исправлен баг с отправкой пустого заказа при удалении в 1С-Битрикс diff --git a/intaro.retailcrm/export/export_run.php b/intaro.retailcrm/export/export_run.php index bf88ce10..e6d540a7 100644 --- a/intaro.retailcrm/export/export_run.php +++ b/intaro.retailcrm/export/export_run.php @@ -23,12 +23,16 @@ if (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/retailcrm/expor } } - CModule::IncludeModule('highloadblock'); - $hlblockList = array(); - $hlblockListDb = \Bitrix\Highloadblock\HighloadBlockTable::getList(); + $hlblockModule = false; - while ($hlblockArr = $hlblockListDb->Fetch()) { - $hlblockList[$hlblockArr["TABLE_NAME"]] = $hlblockArr; + if (CModule::IncludeModule('highloadblock')) { + $hlblockModule = true; + $hlblockList = array(); + $hlblockListDb = \Bitrix\Highloadblock\HighloadBlockTable::getList(); + + while ($hlblockArr = $hlblockListDb->Fetch()) { + $hlblockList[$hlblockArr["TABLE_NAME"]] = $hlblockArr; + } } $iblockProperties = array( @@ -61,17 +65,20 @@ if (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/retailcrm/expor } } - foreach ($hlblockList as $hlblockTable => $hlblock) { - $hbProps = ('highloadblock' . $hlblockTable . '_' . $prop); - $hbProps = $$hbProps; + if ($hlblockModule === true) { + foreach ($hlblockList as $hlblockTable => $hlblock) { + $hbProps = ('highloadblock' . $hlblockTable . '_' . $prop); + $hbProps = $$hbProps; - if (is_array($hbProps)) { - foreach ($hbProps as $iblock => $val) { - $IBLOCK_PROPERTY_SKU_HIGHLOADBLOCK[$hlblockTable][$iblock][$prop] = $val; + if (is_array($hbProps)) { + foreach ($hbProps as $iblock => $val) { + $IBLOCK_PROPERTY_SKU_HIGHLOADBLOCK[$hlblockTable][$iblock][$prop] = $val; + } } } } } + $IBLOCK_PROPERTY_PRODUCT = array(); $IBLOCK_PROPERTY_PRODUCT_HIGHLOADBLOCK = array(); $IBLOCK_PROPERTY_UNIT_PRODUCT = array(); @@ -92,13 +99,15 @@ if (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/retailcrm/expor } } - foreach ($hlblockList as $hlblockTable => $hlblock) { - $hbProps = ('highloadblock_product' . $hlblockTable . '_' . $prop); - $hbProps = $$hbProps; + if ($hlblockModule === true) { + foreach ($hlblockList as $hlblockTable => $hlblock) { + $hbProps = ('highloadblock_product' . $hlblockTable . '_' . $prop); + $hbProps = $$hbProps; - if (is_array($hbProps)) { - foreach ($hbProps as $iblock => $val) { - $IBLOCK_PROPERTY_PRODUCT_HIGHLOADBLOCK[$hlblockTable][$iblock][$prop] = $val; + if (is_array($hbProps)) { + foreach ($hbProps as $iblock => $val) { + $IBLOCK_PROPERTY_PRODUCT_HIGHLOADBLOCK[$hlblockTable][$iblock][$prop] = $val; + } } } } @@ -111,8 +120,12 @@ if (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/retailcrm/expor $loader->propertiesUnitSKU = $IBLOCK_PROPERTY_UNIT_SKU; $loader->propertiesProduct = $IBLOCK_PROPERTY_PRODUCT; $loader->propertiesUnitProduct = $IBLOCK_PROPERTY_UNIT_PRODUCT; - $loader->highloadblockSkuProperties = $IBLOCK_PROPERTY_SKU_HIGHLOADBLOCK; - $loader->highloadblockProductProperties = $IBLOCK_PROPERTY_PRODUCT_HIGHLOADBLOCK; + + if ($hlblockModule === true) { + $loader->highloadblockSkuProperties = $IBLOCK_PROPERTY_SKU_HIGHLOADBLOCK; + $loader->highloadblockProductProperties = $IBLOCK_PROPERTY_PRODUCT_HIGHLOADBLOCK; + } + $loader->filename = $SETUP_FILE_NAME; $loader->serverName = $SERVER_NAME; $loader->application = $APPLICATION; diff --git a/intaro.retailcrm/export/export_setup.php b/intaro.retailcrm/export/export_setup.php index 4b4b3546..174354ce 100644 --- a/intaro.retailcrm/export/export_setup.php +++ b/intaro.retailcrm/export/export_setup.php @@ -51,18 +51,20 @@ if (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/retailcrm/expor } //highloadblock - CModule::IncludeModule('highloadblock'); - $hlblockList = array(); - $hlblockListDb = \Bitrix\Highloadblock\HighloadBlockTable::getList(); + if (CModule::IncludeModule('highloadblock')) { + $hlblockModule = true; + $hlblockList = array(); + $hlblockListDb = \Bitrix\Highloadblock\HighloadBlockTable::getList(); - while ($hlblockArr = $hlblockListDb->Fetch()) { - $hlblock = \Bitrix\Highloadblock\HighloadBlockTable::getById($hlblockArr["ID"])->fetch(); - $entity = \Bitrix\Highloadblock\HighloadBlockTable::compileEntity($hlblock); - $hbFields = $entity->getFields(); - $hlblockList[$hlblockArr["TABLE_NAME"]]['LABEL'] = $hlblockArr["NAME"]; + while ($hlblockArr = $hlblockListDb->Fetch()) { + $hlblock = \Bitrix\Highloadblock\HighloadBlockTable::getById($hlblockArr["ID"])->fetch(); + $entity = \Bitrix\Highloadblock\HighloadBlockTable::compileEntity($hlblock); + $hbFields = $entity->getFields(); + $hlblockList[$hlblockArr["TABLE_NAME"]]['LABEL'] = $hlblockArr["NAME"]; - foreach ($hbFields as $hbFieldCode => $hbField) { - $hlblockList[$hlblockArr["TABLE_NAME"]]['FIELDS'][] = $hbFieldCode; + foreach ($hbFields as $hbFieldCode => $hbField) { + $hlblockList[$hlblockArr["TABLE_NAME"]]['FIELDS'][] = $hbFieldCode; + } } } @@ -88,7 +90,6 @@ if (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/retailcrm/expor } } - $IBLOCK_PROPERTY_PRODUCT = array(); $IBLOCK_PROPERTY_UNIT_PRODUCT = array(); foreach ($iblockProperties as $prop) { @@ -612,13 +613,13 @@ if (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/retailcrm/expor

+ $SETUP_FILE_NAME : + (COption::GetOptionString( + 'catalog', + 'export_default_path', + '/bitrix/catalog_export/')) + .'retailcrm'.'.xml' + ); ?>" size="50">

@@ -733,17 +734,21 @@ if (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/retailcrm/expor $("#" + bid).siblings('#highloadblock').remove(); } } + + if ($(obj).find('option')[obj.selectedIndex].className == 'not-highloadblock') { + var a = $(obj).find('option')[obj.selectedIndex].parent('select').siblings('#highloadblock'); + $(a).remove(); + } + + if ($(obj).find('option')[obj.selectedIndex].className == 'highloadblock') { + getHbFromAjax($(obj).find('option')[obj.selectedIndex], 'sku'); + } + + if ($(obj).find('option')[obj.selectedIndex].className == 'highloadblock-product') { + getHbFromAjax($(obj).find('option')[obj.selectedIndex], 'product'); + } }; - $('.highloadblock').on('click', function() { - getHbFromAjax($(this), 'sku'); - }); - $('.highloadblock-product').on('click', function() { - getHbFromAjax($(this), 'product'); - }); - $('.not-highloadblock').on('click', function() { - var a = $(this).parent('select').siblings('#highloadblock'); - $(a).remove(); - }); + function getHbFromAjax(that, type) { var url = $('td .adm-list-table-cell').parents('form').attr('action'); var get = ''; @@ -790,12 +795,14 @@ if (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/retailcrm/expor $vals .= ",IBLOCK_PROPERTY_PRODUCT_" . $val; $vals .= ",IBLOCK_PROPERTY_UNIT_PRODUCT_" . $val; - foreach ($hlblockList as $hlblockTable => $hlblock) { - $vals .= ',highloadblock'. $hlblockTable .'_' . $val; - } + if ($hlblockModule === true) { + foreach ($hlblockList as $hlblockTable => $hlblock) { + $vals .= ',highloadblock' . $hlblockTable . '_' . $val; + } - foreach ($hlblockList as $hlblockTable => $hlblock) { - $vals .= ',highloadblock_product'. $hlblockTable .'_' . $val; + foreach ($hlblockList as $hlblockTable => $hlblock) { + $vals .= ',highloadblock_product' . $hlblockTable . '_' . $val; + } } } @@ -807,7 +814,6 @@ if (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/retailcrm/expor "> - \ No newline at end of file +?> diff --git a/intaro.retailcrm/install/index.php b/intaro.retailcrm/install/index.php index 71a47c46..b8549258 100644 --- a/intaro.retailcrm/install/index.php +++ b/intaro.retailcrm/install/index.php @@ -768,19 +768,22 @@ class intaro_retailcrm extends CModule $iblocks = $_POST['IBLOCK_EXPORT']; } + $hlblockModule = false; //highloadblock - CModule::IncludeModule('highloadblock'); - $hlblockList = array(); - $hlblockListDb = \Bitrix\Highloadblock\HighloadBlockTable::getList(); + if (CModule::IncludeModule('highloadblock')) { + $hlblockModule = true; + $hlblockList = array(); + $hlblockListDb = \Bitrix\Highloadblock\HighloadBlockTable::getList(); - while ($hlblockArr = $hlblockListDb->Fetch()) { - $hlblock = \Bitrix\Highloadblock\HighloadBlockTable::getById($hlblockArr["ID"])->fetch(); - $entity = \Bitrix\Highloadblock\HighloadBlockTable::compileEntity($hlblock); - $hbFields = $entity->getFields(); - $hlblockList[$hlblockArr["TABLE_NAME"]]['LABEL'] = $hlblockArr["NAME"]; + while ($hlblockArr = $hlblockListDb->Fetch()) { + $hlblock = \Bitrix\Highloadblock\HighloadBlockTable::getById($hlblockArr["ID"])->fetch(); + $entity = \Bitrix\Highloadblock\HighloadBlockTable::compileEntity($hlblock); + $hbFields = $entity->getFields(); + $hlblockList[$hlblockArr["TABLE_NAME"]]['LABEL'] = $hlblockArr["NAME"]; - foreach ($hbFields as $hbFieldCode => $hbField) { - $hlblockList[$hlblockArr["TABLE_NAME"]]['FIELDS'][] = $hbFieldCode; + foreach ($hbFields as $hbFieldCode => $hbField) { + $hlblockList[$hlblockArr["TABLE_NAME"]]['FIELDS'][] = $hbFieldCode; + } } } @@ -805,13 +808,16 @@ class intaro_retailcrm extends CModule foreach ($_POST['IBLOCK_PROPERTY_UNIT_SKU'. '_' . $prop] as $iblock => $val) { $propertiesUnitSKU[$iblock][$prop] = $val; } - foreach ($hlblockList as $tableName => $hb) { - foreach ($_POST['highloadblock' . $tableName . '_' . $prop] as $iblock => $val) { - $propertiesHbSKU[$tableName][$iblock][$prop] = $val; + + if ($hlblockModule === true) { + foreach ($hlblockList as $tableName => $hb) { + foreach ($_POST['highloadblock' . $tableName . '_' . $prop] as $iblock => $val) { + $propertiesHbSKU[$tableName][$iblock][$prop] = $val; + } } } } - + $propertiesProduct = array(); $propertiesUnitProduct = array(); $propertiesHbProduct = array(); @@ -822,9 +828,12 @@ class intaro_retailcrm extends CModule foreach ($_POST['IBLOCK_PROPERTY_UNIT_PRODUCT'. '_' . $prop] as $iblock => $val) { $propertiesUnitProduct[$iblock][$prop] = $val; } - foreach ($hlblockList as $tableName => $hb) { - foreach ($_POST['highloadblock_product' . $tableName . '_' . $prop] as $iblock => $val) { - $propertiesHbProduct[$tableName][$iblock][$prop] = $val; + + if ($hlblockModule === true) { + foreach ($hlblockList as $tableName => $hb) { + foreach ($_POST['highloadblock_product' . $tableName . '_' . $prop] as $iblock => $val) { + $propertiesHbProduct[$tableName][$iblock][$prop] = $val; + } } } } @@ -834,7 +843,7 @@ class intaro_retailcrm extends CModule } else { $filename = $_POST['SETUP_FILE_NAME']; } - + if (!isset($_POST['TYPE_LOADING'])) { $typeLoading = 0; } else { @@ -850,11 +859,11 @@ class intaro_retailcrm extends CModule if ($typeLoading != 'none' && $profileName == "") { $arResult['errCode'] = 'ERR_FIELDS_PROFILE'; } - + if ($filename == "") { $arResult['errCode'] = 'ERR_FIELDS_FILE'; } - + if (isset($arResult['errCode']) && $arResult['errCode']) { $arOldValues = array( 'IBLOCK_EXPORT' => $iblocks, @@ -870,7 +879,7 @@ class intaro_retailcrm extends CModule $APPLICATION->IncludeAdminFile( GetMessage('MODULE_INSTALL_TITLE'), $this->INSTALL_PATH . '/step5.php' ); - + return; } @@ -878,7 +887,7 @@ class intaro_retailcrm extends CModule RegisterModuleDependences("sale", "OnOrderUpdate", $this->MODULE_ID, "RetailCrmEvent", "onUpdateOrder"); RegisterModuleDependences("main", "OnAfterUserUpdate", $this->MODULE_ID, "RetailCrmEvent", "OnAfterUserUpdate"); RegisterModuleDependences("sale", "OnSaleOrderEntitySaved", $this->MODULE_ID, "RetailCrmEvent", "orderSave"); - RegisterModuleDependences("sale", "OnSaleOrderEntityDelete", $this->MODULE_ID, "RetailCrmEvent", "orderDelete"); + RegisterModuleDependences("sale", "OnSaleOrderDeleted", $this->MODULE_ID, "RetailCrmEvent", "orderDelete"); RegisterModuleDependences("sale", "OnSalePaymentEntitySaved", $this->MODULE_ID, "RetailCrmEvent", "paymentSave"); RegisterModuleDependences("sale", "OnSalePaymentEntityDeleted", $this->MODULE_ID, "RetailCrmEvent", "paymentDelete"); @@ -888,6 +897,19 @@ class intaro_retailcrm extends CModule COption::SetOptionString($this->MODULE_ID, $this->CRM_COLLECTOR, 'N'); COption::SetOptionString($this->MODULE_ID, $this->CRM_UA, 'N'); + //agent + $dateAgent = new DateTime(); + $intAgent = new DateInterval('PT60S'); // PT60S - 60 sec; + $dateAgent->add($intAgent); + + CAgent::AddAgent( + "RCrmActions::orderAgent();", $this->MODULE_ID, "N", 600, // interval - 10 mins + $dateAgent->format('d.m.Y H:i:s'), // date of first check + "Y", // agent is active + $dateAgent->format('d.m.Y H:i:s'), // date of first start + 30 + ); + $this->CopyFiles(); if (isset($_POST['LOAD_NOW'])) { $loader = new RetailCrmICML(); @@ -896,14 +918,18 @@ class intaro_retailcrm extends CModule $loader->propertiesProduct = $propertiesProduct; $loader->propertiesUnitSKU = $propertiesUnitSKU; $loader->propertiesSKU = $propertiesSKU; - $loader->highloadblockSkuProperties = $propertiesHbSKU; - $loader->highloadblockProductProperties = $propertiesHbProduct; + + if ($hlblockModule === true) { + $loader->highloadblockSkuProperties = $propertiesHbSKU; + $loader->highloadblockProductProperties = $propertiesHbProduct; + } + $loader->filename = $filename; $loader->serverName = \Bitrix\Main\Context::getCurrent()->getServer()->getHttpHost(); $loader->application = $APPLICATION; $loader->Load(); } - + if ($typeLoading == 'agent' || $typeLoading == 'cron') { if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/bitrix/php_interface/include/catalog_export/' . $this->RETAIL_CRM_EXPORT . '_run.php')) { $dbProfile = CCatalogExport::GetList(array(), array("FILE_NAME" => $this->RETAIL_CRM_EXPORT)); @@ -915,6 +941,7 @@ class intaro_retailcrm extends CModule } } } + $ar = $this->GetProfileSetupVars( $iblocks, $propertiesProduct, @@ -1010,19 +1037,6 @@ class intaro_retailcrm extends CModule } } - //agent - $dateAgent = new DateTime(); - $intAgent = new DateInterval('PT60S'); // PT60S - 60 sec; - $dateAgent->add($intAgent); - - CAgent::AddAgent( - "RCrmActions::orderAgent();", $this->MODULE_ID, "N", 600, // interval - 10 mins - $dateAgent->format('d.m.Y H:i:s'), // date of first check - "Y", // agent is active - $dateAgent->format('d.m.Y H:i:s'), // date of first start - 30 - ); - $api_host = COption::GetOptionString($this->MODULE_ID, $this->CRM_API_HOST_OPTION, 0); $api_key = COption::GetOptionString($this->MODULE_ID, $this->CRM_API_KEY_OPTION, 0); $this->RETAIL_CRM_API = new \RetailCrm\ApiClient($api_host, $api_key); @@ -1036,7 +1050,7 @@ class intaro_retailcrm extends CModule } $APPLICATION->IncludeAdminFile( - GetMessage('MODULE_INSTALL_TITLE'), $this->INSTALL_PATH . '/step6.php' + GetMessage('MODULE_INSTALL_TITLE'), $this->INSTALL_PATH . '/step6.php' ); } } @@ -1095,7 +1109,7 @@ class intaro_retailcrm extends CModule UnRegisterModuleDependences("sale", "OnOrderUpdate", $this->MODULE_ID, "RetailCrmEvent", "onUpdateOrder"); UnRegisterModuleDependences("main", "OnAfterUserUpdate", $this->MODULE_ID, "RetailCrmEvent", "OnAfterUserUpdate"); UnRegisterModuleDependences("sale", "OnSaleOrderEntitySaved", $this->MODULE_ID, "RetailCrmEvent", "orderSave"); - UnRegisterModuleDependences("sale", "OnSaleOrderEntityDelete", $this->MODULE_ID, "RetailCrmEvent", "orderDelete"); + UnRegisterModuleDependences("sale", "OnSaleBeforeOrderDelete", $this->MODULE_ID, "RetailCrmEvent", "orderDelete"); UnRegisterModuleDependences("main", "OnBeforeProlog", $this->MODULE_ID, "RetailCrmCollector", "add"); UnRegisterModuleDependences("main", "OnBeforeProlog", $this->MODULE_ID, "RetailCrmUa", "add"); UnRegisterModuleDependences("sale", "OnSalePaymentEntitySaved", $this->MODULE_ID, "RetailCrmEvent", "paymentSave"); @@ -1170,14 +1184,18 @@ class intaro_retailcrm extends CModule foreach ($propertiesUnitProduct as $iblock => $arr) foreach ($arr as $id => $val) $strVars .= 'IBLOCK_PROPERTY_UNIT_PRODUCT_' . $id . '[' . $iblock . ']=' . $val . '&'; - foreach ($propertiesHbSKU as $table => $arr) - foreach ($arr as $iblock => $val) - foreach ($val as $id => $value) - $strVars .= 'highloadblock' . $table . '_' . $id . '[' . $iblock . ']=' . $value . '&'; - foreach ($propertiesHbProduct as $table => $arr) - foreach ($arr as $iblock => $val) - foreach ($val as $id => $value) - $strVars .= 'highloadblock_product' . $table . '_' . $id . '[' . $iblock . ']=' . $value . '&'; + if ($propertiesHbSKU) { + foreach ($propertiesHbSKU as $table => $arr) + foreach ($arr as $iblock => $val) + foreach ($val as $id => $value) + $strVars .= 'highloadblock' . $table . '_' . $id . '[' . $iblock . ']=' . $value . '&'; + } + if ($propertiesHbProduct) { + foreach ($propertiesHbProduct as $table => $arr) + foreach ($arr as $iblock => $val) + foreach ($val as $id => $value) + $strVars .= 'highloadblock_product' . $table . '_' . $id . '[' . $iblock . ']=' . $value . '&'; + } $strVars .= 'SETUP_FILE_NAME=' . urlencode($filename); @@ -1276,4 +1294,4 @@ class intaro_retailcrm extends CModule return $res; } -} \ No newline at end of file +} diff --git a/intaro.retailcrm/install/step5.php b/intaro.retailcrm/install/step5.php index e01b603c..418fd55f 100644 --- a/intaro.retailcrm/install/step5.php +++ b/intaro.retailcrm/install/step5.php @@ -151,7 +151,6 @@ if (!empty($oldValues)) { $boolExport = (in_array($iblock['ID'], $IBLOCK_EXPORT)); else $boolExport = true; - $arIBlockList[] = array( 'ID' => $iblock['ID'], @@ -457,8 +456,6 @@ if (!empty($oldValues)) {
- - @@ -469,14 +466,13 @@ if (!empty($oldValues)) {

- + $SETUP_FILE_NAME : + (COption::GetOptionString( + 'catalog', + 'export_default_path', + '/bitrix/catalog_export/')) + .'retailcrm'/* .mt_rand(0, 999999) */.'.xml' + ); ?>" size="50">


@@ -536,9 +532,9 @@ if (!empty($oldValues)) { transition : BX.easing.transitions.linear, step : function(state){ for (i = 0; i < cnt; i++) - { - BX('IBLOCK_EXPORT_TABLE'+(i+1)).style.opacity = state.opacity/100; - } + { + BX('IBLOCK_EXPORT_TABLE'+(i+1)).style.opacity = state.opacity/100; + } }, complete : function() { for (i = 0; i < cnt; i++) @@ -594,6 +590,19 @@ if (!empty($oldValues)) { $("#" + bid).siblings('#highloadblock').remove(); } } + + if ($(obj).find('option')[obj.selectedIndex].className == 'not-highloadblock') { + var a = $(obj).find('option')[obj.selectedIndex].parent('select').siblings('#highloadblock'); + $(a).remove(); + } + + if ($(obj).find('option')[obj.selectedIndex].className == 'highloadblock') { + getHbFromAjax($(obj).find('option')[obj.selectedIndex], 'sku'); + } + + if ($(obj).find('option')[obj.selectedIndex].className == 'highloadblock-product') { + getHbFromAjax($(obj).find('option')[obj.selectedIndex], 'product'); + } }; function checkProfile(obj) { @@ -602,16 +611,7 @@ if (!empty($oldValues)) { else $('#profile-field').hide(); }; - $('.highloadblock').on('click', function() { - getHbFromAjax($(this), 'sku'); - }); - $('.highloadblock-product').on('click', function() { - getHbFromAjax($(this), 'product'); - }); - $('.not-highloadblock').on('click', function() { - var a = $(this).parent('select').siblings('#highloadblock'); - $(a).remove(); - }); + function getHbFromAjax(that, type) { var url = $('td .adm-list-table-cell').parents('form').attr('action'); var td = $(that).parents('td .adm-list-table-cell'); diff --git a/intaro.retailcrm/install/version.php b/intaro.retailcrm/install/version.php index 3cb39ae8..f8dc1101 100644 --- a/intaro.retailcrm/install/version.php +++ b/intaro.retailcrm/install/version.php @@ -1,5 +1,5 @@ "2.3.5", - "VERSION_DATE" => "2018-03-22 17:15:00" + "VERSION" => "2.3.6", + "VERSION_DATE" => "2018-05-23 13:15:00" ); diff --git a/intaro.retailcrm/lang/ru/options.php b/intaro.retailcrm/lang/ru/options.php index 81a188b2..826b42c0 100644 --- a/intaro.retailcrm/lang/ru/options.php +++ b/intaro.retailcrm/lang/ru/options.php @@ -73,6 +73,7 @@ $MESS ['ORDER_NUMBERS'] = 'Транслировать номера заказо $MESS ['CRM_API_VERSION'] = 'Версия API клиента'; $MESS ['CURRENCY'] = 'Валюта, устанавливаемая в заказе при выгрузке из CRM'; +$MESS ['ORDER_DIMENSIONS'] = 'Передавать габариты и вес товаров в заказе'; $MESS ['INVENTORIES_UPLOAD'] = 'Включить выгрузку остатков в разрезе складов'; $MESS ['INVENTORIES'] = 'Склады'; diff --git a/intaro.retailcrm/options.php b/intaro.retailcrm/options.php index c0658dcc..459ea511 100644 --- a/intaro.retailcrm/options.php +++ b/intaro.retailcrm/options.php @@ -42,6 +42,7 @@ $CRM_API_VERSION = 'api_version'; $CRM_CURRENCY = 'currency'; $CRM_ADDRESS_OPTIONS = 'address_options'; +$CRM_DIMENSIONS = 'order_dimensions'; if(!CModule::IncludeModule('intaro.retailcrm') || !CModule::IncludeModule('sale') || !CModule::IncludeModule('iblock') || !CModule::IncludeModule('catalog')) return; @@ -278,7 +279,7 @@ if (isset($_POST['Update']) && ($_POST['Update'] == 'Y')) { // remove depenedencies UnRegisterModuleDependences("sale", "OnSaleOrderEntitySaved", $mid, "RetailCrmEvent", "orderSave"); UnRegisterModuleDependences("sale", "OnOrderUpdate", $mid, "RetailCrmEvent", "onUpdateOrder"); - UnRegisterModuleDependences("sale", "OnSaleOrderEntityDelete", $mid, "RetailCrmEvent", "orderDelete"); + UnRegisterModuleDependences("sale", "OnSaleOrderDeleted", $mid, "RetailCrmEvent", "orderDelete"); UnRegisterModuleDependences("sale", "OnSalePaymentEntitySaved", $mid, "RetailCrmEvent", "paymentSave"); UnRegisterModuleDependences("sale", "OnSalePaymentEntityDeleted", $mid, "RetailCrmEvent", "paymentDelete"); @@ -286,7 +287,7 @@ if (isset($_POST['Update']) && ($_POST['Update'] == 'Y')) { // event dependencies RegisterModuleDependences("sale", "OnSaleOrderEntitySaved", $mid, "RetailCrmEvent", "orderSave"); RegisterModuleDependences("sale", "OnOrderUpdate", $mid, "RetailCrmEvent", "onUpdateOrder"); - RegisterModuleDependences("sale", "OnSaleOrderEntityDelete", $mid, "RetailCrmEvent", "orderDelete"); + RegisterModuleDependences("sale", "OnSaleOrderDeleted", $mid, "RetailCrmEvent", "orderDelete"); RegisterModuleDependences("sale", "OnSalePaymentEntitySaved", $mid, "RetailCrmEvent", "paymentSave"); RegisterModuleDependences("sale", "OnSalePaymentEntityDeleted", $mid, "RetailCrmEvent", "paymentDelete"); } @@ -335,7 +336,9 @@ if (isset($_POST['Update']) && ($_POST['Update'] == 'Y')) { } //order numbers $orderNumbers = htmlspecialchars(trim($_POST['order-numbers'])) ? htmlspecialchars(trim($_POST['order-numbers'])) : 'N'; - + + $orderDimensions = htmlspecialchars(trim($_POST[$CRM_DIMENSIONS])) ? htmlspecialchars(trim($_POST[$CRM_DIMENSIONS])) : 'N'; + //stores $bitrixStoresArr = array(); $bitrixShopsArr = array(); @@ -480,7 +483,7 @@ if (isset($_POST['Update']) && ($_POST['Update'] == 'Y')) { } } - if ($_POST['currency']) { + if ($_POST[$CRM_CURRENCY]) { COption::SetOptionString($mid, $CRM_CURRENCY, $_POST['currency']); } @@ -514,6 +517,7 @@ if (isset($_POST['Update']) && ($_POST['Update'] == 'Y')) { COption::SetOptionString($mid, $CRM_UA, $ua); COption::SetOptionString($mid, $CRM_UA_KEYS, serialize(RCrmActions::clearArr($uaKeys))); + COption::SetOptionString($mid, $CRM_DIMENSIONS, $orderDimensions); $uri .= '&ok=Y'; LocalRedirect($uri); @@ -620,6 +624,7 @@ if (isset($_POST['Update']) && ($_POST['Update'] == 'Y')) { $currencyOption = COption::GetOptionString($mid, $CRM_CURRENCY, 0) ? COption::GetOptionString($mid, $CRM_CURRENCY, 0) : $baseCurrency; $currencyList = \Bitrix\Currency\CurrencyManager::getCurrencyList(); + $optionsOrderDimensions = COption::GetOptionString($mid, $CRM_DIMENSIONS, 'N'); $addressOptions = unserialize(COption::GetOptionString($mid, $CRM_ADDRESS_OPTIONS, 0)); $aTabs = array( @@ -1075,7 +1080,16 @@ if (isset($_POST['Update']) && ($_POST['Update'] == 'Y')) { - + + + + + + + + @@ -1112,7 +1126,7 @@ if (isset($_POST['Update']) && ($_POST['Update'] == 'Y')) { - + 0) :?>