1
0
mirror of synced 2025-01-31 23:31:41 +03:00

Merge pull request #44 from iyzoer/master

v2.3.6
This commit is contained in:
Alex Lushpai 2018-05-23 14:27:52 +03:00 committed by GitHub
commit 83d3ec1dc1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 240 additions and 166 deletions

View File

@ -1,3 +1,11 @@
## 2018-05-23 v.2.3.6
* Улучшена выгрузка свойств товаров типа "справочник"
* Добавлена настройка выгрузки габаритов и веса в заказе
* Добавлена совместимость натройки экспорта для Google Chrome
* Исправлена ошибка при выгрузке истории с пустым городом
* Добавлены проверки на существование модуля Highloadblock
* Исправлен баг с отправкой пустого заказа при удалении в 1С-Битрикс
## 2018-03-22 v.2.3.5 ## 2018-03-22 v.2.3.5
* В настройку экспорта добавлена настройка свойств типа "справочник"(highloadblock) * В настройку экспорта добавлена настройка свойств типа "справочник"(highloadblock)
* Добавлена проверка необходимости резервации товаров при выгрузке заказов из retailCRM * Добавлена проверка необходимости резервации товаров при выгрузке заказов из retailCRM

View File

@ -202,7 +202,6 @@ class RetailCrmEvent
* *
* @param object $event - Payment object * @param object $event - Payment object
*/ */
function paymentSave($event) function paymentSave($event)
{ {
$apiVersion = COption::GetOptionString(self::$MODULE_ID, 'api_version', 0); $apiVersion = COption::GetOptionString(self::$MODULE_ID, 'api_version', 0);

View File

@ -561,11 +561,16 @@ class RetailCrmHistory
RCrmActions::eventLog('RetailCrmHistory::orderHistory', 'RetailCrmHistory::setProp', 'Error location. ' . $order['delivery']['address'][$key] . ' not found add in order number=' . $order['number']); RCrmActions::eventLog('RetailCrmHistory::orderHistory', 'RetailCrmHistory::setProp', 'Error location. ' . $order['delivery']['address'][$key] . ' not found add in order number=' . $order['number']);
continue; continue;
} }
$parameters['filter']['NAME.LANGUAGE_ID'] = 'ru';
$location = \Bitrix\Sale\Location\Search\Finder::find($parameters, array('USE_INDEX' => false, 'USE_ORM' => false))->fetch();
$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']); $somePropValue = $propertyCollection->getItemByOrderPropertyId($propsKey[$orderProp]['ID']);
self::setProp($somePropValue, $location['CODE']); 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 { } else {
RCrmActions::eventLog('RetailCrmHistory::orderHistory', 'RetailCrmHistory::setProp', 'Error location. ' . $order['delivery']['address'][$key] . ' is empty in order number=' . $order['number']); RCrmActions::eventLog('RetailCrmHistory::orderHistory', 'RetailCrmHistory::setProp', 'Error location. ' . $order['delivery']['address'][$key] . ' is empty in order number=' . $order['number']);

View File

@ -14,6 +14,8 @@ class RetailCrmICML
public $propertiesUnitSKU; public $propertiesUnitSKU;
public $propertiesProduct; public $propertiesProduct;
public $propertiesUnitProduct; public $propertiesUnitProduct;
public $highloadblockSkuProperties;
public $highloadblockProductProperties;
public $application; public $application;
public $encoding = 'utf-8'; public $encoding = 'utf-8';
public $encodingDefault = 'utf-8'; public $encodingDefault = 'utf-8';
@ -412,9 +414,9 @@ class RetailCrmICML
$resPropertiesProduct[$key . "_UNIT"] = $this->measurementLink[$this->propertiesUnitProduct[$id][$key]]; $resPropertiesProduct[$key . "_UNIT"] = $this->measurementLink[$this->propertiesUnitProduct[$id][$key]];
} }
if (isset($highloadblockProductProps[$propProduct])) { 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']; $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]; $resPropertiesProduct[$key] = $propVal[$field];
} }
@ -595,10 +597,10 @@ class RetailCrmICML
private function getHBprop($hbProp, $xml_id) private function getHBprop($hbProp, $xml_id)
{ {
CModule::IncludeModule('highloadblock'); if (CModule::IncludeModule('highloadblock')) {
$hlblockArr = \Bitrix\Highloadblock\HighloadBlockTable::getList([ $hlblockArr = \Bitrix\Highloadblock\HighloadBlockTable::getList(array(
'filter' => ['=TABLE_NAME' => $hbProp['USER_TYPE_SETTINGS']['TABLE_NAME']] 'filter' => array('=TABLE_NAME' => $hbProp['USER_TYPE_SETTINGS']['TABLE_NAME'])
])->fetch(); ))->fetch();
$hlblock = HL\HighloadBlockTable::getById($hlblockArr["ID"])->fetch(); $hlblock = HL\HighloadBlockTable::getById($hlblockArr["ID"])->fetch();
$entity = HL\HighloadBlockTable::compileEntity($hlblock); $entity = HL\HighloadBlockTable::compileEntity($hlblock);
@ -611,4 +613,7 @@ class RetailCrmICML
return $result->fetch(); return $result->fetch();
} }
return array();
}
} }

View File

@ -20,6 +20,7 @@ class RetailCrmOrder
public static $CRM_ORDER_HISTORY_DATE = 'order_history_date'; public static $CRM_ORDER_HISTORY_DATE = 'order_history_date';
public static $CRM_CATALOG_BASE_PRICE = 'catalog_base_price'; public static $CRM_CATALOG_BASE_PRICE = 'catalog_base_price';
public static $CRM_ORDER_NUMBERS = 'order_numbers'; public static $CRM_ORDER_NUMBERS = 'order_numbers';
public static $CRM_ORDER_DIMENSIONS = 'order_dimensions';
const CANCEL_PROPERTY_CODE = 'INTAROCRM_IS_CANCELED'; const CANCEL_PROPERTY_CODE = 'INTAROCRM_IS_CANCELED';
@ -44,6 +45,8 @@ class RetailCrmOrder
return false; return false;
} }
$dimensions = COption::GetOptionString(self::$MODULE_ID, self::$CRM_ORDER_DIMENSIONS, 'N');
$order = array( $order = array(
'number' => $arFields['NUMBER'], 'number' => $arFields['NUMBER'],
'externalId' => $arFields['ID'], 'externalId' => $arFields['ID'],
@ -147,7 +150,7 @@ class RetailCrmOrder
$order['items'][] = $item; $order['items'][] = $item;
if ($send) { if ($send && $dimensions == 'Y') {
$dimensions = RCrmActions::unserializeArrayRecursive($product['DIMENSIONS']); $dimensions = RCrmActions::unserializeArrayRecursive($product['DIMENSIONS']);
$width += $dimensions['WIDTH']; $width += $dimensions['WIDTH'];
$height += $dimensions['HEIGHT']; $height += $dimensions['HEIGHT'];
@ -156,7 +159,7 @@ class RetailCrmOrder
} }
} }
if ($send) { if ($send && $dimensions == 'Y') {
$order['width'] = $width; $order['width'] = $width;
$order['height'] = $height; $order['height'] = $height;
$order['length'] = $length; $order['length'] = $length;

View File

@ -1,4 +1,6 @@
- В настройку экспорта добавлена настройка свойств типа "справочник"(highloadblock) - Улучшена выгрузка свойств товаров типа "справочник"
- Добавлена проверка необходимости резервации товаров при выгрузке заказов из retailCRM - Добавлена настройка выгрузки габаритов и веса в заказе
- Исправлен вызов рекурсивного метода в RCrmActions - Добавлена совместимость натройки экспорта для Google Chrome
- Добавлены недостающие поля retailcrm.json - Исправлена ошибка при выгрузке истории с пустым городом
- Добавлены проверки на существование модуля Highloadblock
- Исправлен баг с отправкой пустого заказа при удалении в 1С-Битрикс

View File

@ -23,13 +23,17 @@ if (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/retailcrm/expor
} }
} }
CModule::IncludeModule('highloadblock'); $hlblockModule = false;
if (CModule::IncludeModule('highloadblock')) {
$hlblockModule = true;
$hlblockList = array(); $hlblockList = array();
$hlblockListDb = \Bitrix\Highloadblock\HighloadBlockTable::getList(); $hlblockListDb = \Bitrix\Highloadblock\HighloadBlockTable::getList();
while ($hlblockArr = $hlblockListDb->Fetch()) { while ($hlblockArr = $hlblockListDb->Fetch()) {
$hlblockList[$hlblockArr["TABLE_NAME"]] = $hlblockArr; $hlblockList[$hlblockArr["TABLE_NAME"]] = $hlblockArr;
} }
}
$iblockProperties = array( $iblockProperties = array(
"article" => "article", "article" => "article",
@ -61,6 +65,7 @@ if (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/retailcrm/expor
} }
} }
if ($hlblockModule === true) {
foreach ($hlblockList as $hlblockTable => $hlblock) { foreach ($hlblockList as $hlblockTable => $hlblock) {
$hbProps = ('highloadblock' . $hlblockTable . '_' . $prop); $hbProps = ('highloadblock' . $hlblockTable . '_' . $prop);
$hbProps = $$hbProps; $hbProps = $$hbProps;
@ -72,6 +77,8 @@ if (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/retailcrm/expor
} }
} }
} }
}
$IBLOCK_PROPERTY_PRODUCT = array(); $IBLOCK_PROPERTY_PRODUCT = array();
$IBLOCK_PROPERTY_PRODUCT_HIGHLOADBLOCK = array(); $IBLOCK_PROPERTY_PRODUCT_HIGHLOADBLOCK = array();
$IBLOCK_PROPERTY_UNIT_PRODUCT = array(); $IBLOCK_PROPERTY_UNIT_PRODUCT = array();
@ -92,6 +99,7 @@ if (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/retailcrm/expor
} }
} }
if ($hlblockModule === true) {
foreach ($hlblockList as $hlblockTable => $hlblock) { foreach ($hlblockList as $hlblockTable => $hlblock) {
$hbProps = ('highloadblock_product' . $hlblockTable . '_' . $prop); $hbProps = ('highloadblock_product' . $hlblockTable . '_' . $prop);
$hbProps = $$hbProps; $hbProps = $$hbProps;
@ -103,6 +111,7 @@ if (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/retailcrm/expor
} }
} }
} }
}
$loader = new RetailCrmICML(); $loader = new RetailCrmICML();
$loader->profileID = $PROFILE_ID; $loader->profileID = $PROFILE_ID;
@ -111,8 +120,12 @@ if (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/retailcrm/expor
$loader->propertiesUnitSKU = $IBLOCK_PROPERTY_UNIT_SKU; $loader->propertiesUnitSKU = $IBLOCK_PROPERTY_UNIT_SKU;
$loader->propertiesProduct = $IBLOCK_PROPERTY_PRODUCT; $loader->propertiesProduct = $IBLOCK_PROPERTY_PRODUCT;
$loader->propertiesUnitProduct = $IBLOCK_PROPERTY_UNIT_PRODUCT; $loader->propertiesUnitProduct = $IBLOCK_PROPERTY_UNIT_PRODUCT;
if ($hlblockModule === true) {
$loader->highloadblockSkuProperties = $IBLOCK_PROPERTY_SKU_HIGHLOADBLOCK; $loader->highloadblockSkuProperties = $IBLOCK_PROPERTY_SKU_HIGHLOADBLOCK;
$loader->highloadblockProductProperties = $IBLOCK_PROPERTY_PRODUCT_HIGHLOADBLOCK; $loader->highloadblockProductProperties = $IBLOCK_PROPERTY_PRODUCT_HIGHLOADBLOCK;
}
$loader->filename = $SETUP_FILE_NAME; $loader->filename = $SETUP_FILE_NAME;
$loader->serverName = $SERVER_NAME; $loader->serverName = $SERVER_NAME;
$loader->application = $APPLICATION; $loader->application = $APPLICATION;

View File

@ -51,7 +51,8 @@ if (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/retailcrm/expor
} }
//highloadblock //highloadblock
CModule::IncludeModule('highloadblock'); if (CModule::IncludeModule('highloadblock')) {
$hlblockModule = true;
$hlblockList = array(); $hlblockList = array();
$hlblockListDb = \Bitrix\Highloadblock\HighloadBlockTable::getList(); $hlblockListDb = \Bitrix\Highloadblock\HighloadBlockTable::getList();
@ -65,6 +66,7 @@ if (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/retailcrm/expor
$hlblockList[$hlblockArr["TABLE_NAME"]]['FIELDS'][] = $hbFieldCode; $hlblockList[$hlblockArr["TABLE_NAME"]]['FIELDS'][] = $hbFieldCode;
} }
} }
}
if (($ACTION == 'EXPORT' || $ACTION == 'EXPORT_EDIT' || $ACTION == 'EXPORT_COPY') && $STEP == 1) if (($ACTION == 'EXPORT' || $ACTION == 'EXPORT_EDIT' || $ACTION == 'EXPORT_COPY') && $STEP == 1)
{ {
@ -88,7 +90,6 @@ if (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/retailcrm/expor
} }
} }
$IBLOCK_PROPERTY_PRODUCT = array(); $IBLOCK_PROPERTY_PRODUCT = array();
$IBLOCK_PROPERTY_UNIT_PRODUCT = array(); $IBLOCK_PROPERTY_UNIT_PRODUCT = array();
foreach ($iblockProperties as $prop) { foreach ($iblockProperties as $prop) {
@ -733,17 +734,21 @@ if (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/retailcrm/expor
$("#" + bid).siblings('#highloadblock').remove(); $("#" + bid).siblings('#highloadblock').remove();
} }
} }
};
$('.highloadblock').on('click', function() { if ($(obj).find('option')[obj.selectedIndex].className == 'not-highloadblock') {
getHbFromAjax($(this), 'sku'); var a = $(obj).find('option')[obj.selectedIndex].parent('select').siblings('#highloadblock');
});
$('.highloadblock-product').on('click', function() {
getHbFromAjax($(this), 'product');
});
$('.not-highloadblock').on('click', function() {
var a = $(this).parent('select').siblings('#highloadblock');
$(a).remove(); $(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 getHbFromAjax(that, type) { function getHbFromAjax(that, type) {
var url = $('td .adm-list-table-cell').parents('form').attr('action'); var url = $('td .adm-list-table-cell').parents('form').attr('action');
var get = '<?php echo http_build_query($_GET); ?>'; var get = '<?php echo http_build_query($_GET); ?>';
@ -790,6 +795,7 @@ if (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/retailcrm/expor
$vals .= ",IBLOCK_PROPERTY_PRODUCT_" . $val; $vals .= ",IBLOCK_PROPERTY_PRODUCT_" . $val;
$vals .= ",IBLOCK_PROPERTY_UNIT_PRODUCT_" . $val; $vals .= ",IBLOCK_PROPERTY_UNIT_PRODUCT_" . $val;
if ($hlblockModule === true) {
foreach ($hlblockList as $hlblockTable => $hlblock) { foreach ($hlblockList as $hlblockTable => $hlblock) {
$vals .= ',highloadblock' . $hlblockTable . '_' . $val; $vals .= ',highloadblock' . $hlblockTable . '_' . $val;
} }
@ -798,6 +804,7 @@ if (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/retailcrm/expor
$vals .= ',highloadblock_product' . $hlblockTable . '_' . $val; $vals .= ',highloadblock_product' . $hlblockTable . '_' . $val;
} }
} }
}
?> ?>
<input type="hidden" name="lang" value="<?echo LANGUAGE_ID ?>"> <input type="hidden" name="lang" value="<?echo LANGUAGE_ID ?>">
@ -807,7 +814,6 @@ if (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/retailcrm/expor
<input type="hidden" name="SETUP_FIELDS_LIST" value="<? echo $vals ?>"> <input type="hidden" name="SETUP_FIELDS_LIST" value="<? echo $vals ?>">
<input type="submit" value="<?echo ($ACTION=="EXPORT")?GetMessage("CET_EXPORT"):GetMessage("CET_SAVE")?>"> <input type="submit" value="<?echo ($ACTION=="EXPORT")?GetMessage("CET_EXPORT"):GetMessage("CET_SAVE")?>">
</form> </form>
<? <?

View File

@ -768,8 +768,10 @@ class intaro_retailcrm extends CModule
$iblocks = $_POST['IBLOCK_EXPORT']; $iblocks = $_POST['IBLOCK_EXPORT'];
} }
$hlblockModule = false;
//highloadblock //highloadblock
CModule::IncludeModule('highloadblock'); if (CModule::IncludeModule('highloadblock')) {
$hlblockModule = true;
$hlblockList = array(); $hlblockList = array();
$hlblockListDb = \Bitrix\Highloadblock\HighloadBlockTable::getList(); $hlblockListDb = \Bitrix\Highloadblock\HighloadBlockTable::getList();
@ -783,6 +785,7 @@ class intaro_retailcrm extends CModule
$hlblockList[$hlblockArr["TABLE_NAME"]]['FIELDS'][] = $hbFieldCode; $hlblockList[$hlblockArr["TABLE_NAME"]]['FIELDS'][] = $hbFieldCode;
} }
} }
}
$iblockProperties = array( $iblockProperties = array(
"article" => "article", "article" => "article",
@ -805,12 +808,15 @@ class intaro_retailcrm extends CModule
foreach ($_POST['IBLOCK_PROPERTY_UNIT_SKU'. '_' . $prop] as $iblock => $val) { foreach ($_POST['IBLOCK_PROPERTY_UNIT_SKU'. '_' . $prop] as $iblock => $val) {
$propertiesUnitSKU[$iblock][$prop] = $val; $propertiesUnitSKU[$iblock][$prop] = $val;
} }
if ($hlblockModule === true) {
foreach ($hlblockList as $tableName => $hb) { foreach ($hlblockList as $tableName => $hb) {
foreach ($_POST['highloadblock' . $tableName . '_' . $prop] as $iblock => $val) { foreach ($_POST['highloadblock' . $tableName . '_' . $prop] as $iblock => $val) {
$propertiesHbSKU[$tableName][$iblock][$prop] = $val; $propertiesHbSKU[$tableName][$iblock][$prop] = $val;
} }
} }
} }
}
$propertiesProduct = array(); $propertiesProduct = array();
$propertiesUnitProduct = array(); $propertiesUnitProduct = array();
@ -822,12 +828,15 @@ class intaro_retailcrm extends CModule
foreach ($_POST['IBLOCK_PROPERTY_UNIT_PRODUCT'. '_' . $prop] as $iblock => $val) { foreach ($_POST['IBLOCK_PROPERTY_UNIT_PRODUCT'. '_' . $prop] as $iblock => $val) {
$propertiesUnitProduct[$iblock][$prop] = $val; $propertiesUnitProduct[$iblock][$prop] = $val;
} }
if ($hlblockModule === true) {
foreach ($hlblockList as $tableName => $hb) { foreach ($hlblockList as $tableName => $hb) {
foreach ($_POST['highloadblock_product' . $tableName . '_' . $prop] as $iblock => $val) { foreach ($_POST['highloadblock_product' . $tableName . '_' . $prop] as $iblock => $val) {
$propertiesHbProduct[$tableName][$iblock][$prop] = $val; $propertiesHbProduct[$tableName][$iblock][$prop] = $val;
} }
} }
} }
}
if (!isset($_POST['SETUP_FILE_NAME'])) { if (!isset($_POST['SETUP_FILE_NAME'])) {
$arResult['errCode'] = 'ERR_FIELDS_FILE'; $arResult['errCode'] = 'ERR_FIELDS_FILE';
@ -878,7 +887,7 @@ class intaro_retailcrm extends CModule
RegisterModuleDependences("sale", "OnOrderUpdate", $this->MODULE_ID, "RetailCrmEvent", "onUpdateOrder"); RegisterModuleDependences("sale", "OnOrderUpdate", $this->MODULE_ID, "RetailCrmEvent", "onUpdateOrder");
RegisterModuleDependences("main", "OnAfterUserUpdate", $this->MODULE_ID, "RetailCrmEvent", "OnAfterUserUpdate"); RegisterModuleDependences("main", "OnAfterUserUpdate", $this->MODULE_ID, "RetailCrmEvent", "OnAfterUserUpdate");
RegisterModuleDependences("sale", "OnSaleOrderEntitySaved", $this->MODULE_ID, "RetailCrmEvent", "orderSave"); 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", "OnSalePaymentEntitySaved", $this->MODULE_ID, "RetailCrmEvent", "paymentSave");
RegisterModuleDependences("sale", "OnSalePaymentEntityDeleted", $this->MODULE_ID, "RetailCrmEvent", "paymentDelete"); 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_COLLECTOR, 'N');
COption::SetOptionString($this->MODULE_ID, $this->CRM_UA, '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(); $this->CopyFiles();
if (isset($_POST['LOAD_NOW'])) { if (isset($_POST['LOAD_NOW'])) {
$loader = new RetailCrmICML(); $loader = new RetailCrmICML();
@ -896,8 +918,12 @@ class intaro_retailcrm extends CModule
$loader->propertiesProduct = $propertiesProduct; $loader->propertiesProduct = $propertiesProduct;
$loader->propertiesUnitSKU = $propertiesUnitSKU; $loader->propertiesUnitSKU = $propertiesUnitSKU;
$loader->propertiesSKU = $propertiesSKU; $loader->propertiesSKU = $propertiesSKU;
if ($hlblockModule === true) {
$loader->highloadblockSkuProperties = $propertiesHbSKU; $loader->highloadblockSkuProperties = $propertiesHbSKU;
$loader->highloadblockProductProperties = $propertiesHbProduct; $loader->highloadblockProductProperties = $propertiesHbProduct;
}
$loader->filename = $filename; $loader->filename = $filename;
$loader->serverName = \Bitrix\Main\Context::getCurrent()->getServer()->getHttpHost(); $loader->serverName = \Bitrix\Main\Context::getCurrent()->getServer()->getHttpHost();
$loader->application = $APPLICATION; $loader->application = $APPLICATION;
@ -915,6 +941,7 @@ class intaro_retailcrm extends CModule
} }
} }
} }
$ar = $this->GetProfileSetupVars( $ar = $this->GetProfileSetupVars(
$iblocks, $iblocks,
$propertiesProduct, $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_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); $api_key = COption::GetOptionString($this->MODULE_ID, $this->CRM_API_KEY_OPTION, 0);
$this->RETAIL_CRM_API = new \RetailCrm\ApiClient($api_host, $api_key); $this->RETAIL_CRM_API = new \RetailCrm\ApiClient($api_host, $api_key);
@ -1095,7 +1109,7 @@ class intaro_retailcrm extends CModule
UnRegisterModuleDependences("sale", "OnOrderUpdate", $this->MODULE_ID, "RetailCrmEvent", "onUpdateOrder"); UnRegisterModuleDependences("sale", "OnOrderUpdate", $this->MODULE_ID, "RetailCrmEvent", "onUpdateOrder");
UnRegisterModuleDependences("main", "OnAfterUserUpdate", $this->MODULE_ID, "RetailCrmEvent", "OnAfterUserUpdate"); UnRegisterModuleDependences("main", "OnAfterUserUpdate", $this->MODULE_ID, "RetailCrmEvent", "OnAfterUserUpdate");
UnRegisterModuleDependences("sale", "OnSaleOrderEntitySaved", $this->MODULE_ID, "RetailCrmEvent", "orderSave"); 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, "RetailCrmCollector", "add");
UnRegisterModuleDependences("main", "OnBeforeProlog", $this->MODULE_ID, "RetailCrmUa", "add"); UnRegisterModuleDependences("main", "OnBeforeProlog", $this->MODULE_ID, "RetailCrmUa", "add");
UnRegisterModuleDependences("sale", "OnSalePaymentEntitySaved", $this->MODULE_ID, "RetailCrmEvent", "paymentSave"); UnRegisterModuleDependences("sale", "OnSalePaymentEntitySaved", $this->MODULE_ID, "RetailCrmEvent", "paymentSave");
@ -1170,14 +1184,18 @@ class intaro_retailcrm extends CModule
foreach ($propertiesUnitProduct as $iblock => $arr) foreach ($propertiesUnitProduct as $iblock => $arr)
foreach ($arr as $id => $val) foreach ($arr as $id => $val)
$strVars .= 'IBLOCK_PROPERTY_UNIT_PRODUCT_' . $id . '[' . $iblock . ']=' . $val . '&'; $strVars .= 'IBLOCK_PROPERTY_UNIT_PRODUCT_' . $id . '[' . $iblock . ']=' . $val . '&';
if ($propertiesHbSKU) {
foreach ($propertiesHbSKU as $table => $arr) foreach ($propertiesHbSKU as $table => $arr)
foreach ($arr as $iblock => $val) foreach ($arr as $iblock => $val)
foreach ($val as $id => $value) foreach ($val as $id => $value)
$strVars .= 'highloadblock' . $table . '_' . $id . '[' . $iblock . ']=' . $value . '&'; $strVars .= 'highloadblock' . $table . '_' . $id . '[' . $iblock . ']=' . $value . '&';
}
if ($propertiesHbProduct) {
foreach ($propertiesHbProduct as $table => $arr) foreach ($propertiesHbProduct as $table => $arr)
foreach ($arr as $iblock => $val) foreach ($arr as $iblock => $val)
foreach ($val as $id => $value) foreach ($val as $id => $value)
$strVars .= 'highloadblock_product' . $table . '_' . $id . '[' . $iblock . ']=' . $value . '&'; $strVars .= 'highloadblock_product' . $table . '_' . $id . '[' . $iblock . ']=' . $value . '&';
}
$strVars .= 'SETUP_FILE_NAME=' . urlencode($filename); $strVars .= 'SETUP_FILE_NAME=' . urlencode($filename);

View File

@ -152,7 +152,6 @@ if (!empty($oldValues)) {
else else
$boolExport = true; $boolExport = true;
$arIBlockList[] = array( $arIBlockList[] = array(
'ID' => $iblock['ID'], 'ID' => $iblock['ID'],
'NAME' => $iblock['NAME'], 'NAME' => $iblock['NAME'],
@ -457,8 +456,6 @@ if (!empty($oldValues)) {
<br> <br>
</div> </div>
</div> </div>
<? endforeach;?> <? endforeach;?>
</div> </div>
@ -476,7 +473,6 @@ if (!empty($oldValues)) {
'/bitrix/catalog_export/')) '/bitrix/catalog_export/'))
.'retailcrm'/* .mt_rand(0, 999999) */.'.xml' .'retailcrm'/* .mt_rand(0, 999999) */.'.xml'
); ?>" size="50"> ); ?>" size="50">
<br> <br>
<br> <br>
<br> <br>
@ -594,6 +590,19 @@ if (!empty($oldValues)) {
$("#" + bid).siblings('#highloadblock').remove(); $("#" + 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) function checkProfile(obj)
{ {
@ -602,16 +611,7 @@ if (!empty($oldValues)) {
else else
$('#profile-field').hide(); $('#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) { function getHbFromAjax(that, type) {
var url = $('td .adm-list-table-cell').parents('form').attr('action'); var url = $('td .adm-list-table-cell').parents('form').attr('action');
var td = $(that).parents('td .adm-list-table-cell'); var td = $(that).parents('td .adm-list-table-cell');

View File

@ -1,5 +1,5 @@
<? <?
$arModuleVersion = array( $arModuleVersion = array(
"VERSION" => "2.3.5", "VERSION" => "2.3.6",
"VERSION_DATE" => "2018-03-22 17:15:00" "VERSION_DATE" => "2018-05-23 13:15:00"
); );

View File

@ -73,6 +73,7 @@ $MESS ['ORDER_NUMBERS'] = 'Транслировать номера заказо
$MESS ['CRM_API_VERSION'] = 'Версия API клиента'; $MESS ['CRM_API_VERSION'] = 'Версия API клиента';
$MESS ['CURRENCY'] = 'Валюта, устанавливаемая в заказе при выгрузке из CRM'; $MESS ['CURRENCY'] = 'Валюта, устанавливаемая в заказе при выгрузке из CRM';
$MESS ['ORDER_DIMENSIONS'] = 'Передавать габариты и вес товаров в заказе';
$MESS ['INVENTORIES_UPLOAD'] = 'Включить выгрузку остатков в разрезе складов'; $MESS ['INVENTORIES_UPLOAD'] = 'Включить выгрузку остатков в разрезе складов';
$MESS ['INVENTORIES'] = 'Склады'; $MESS ['INVENTORIES'] = 'Склады';

View File

@ -42,6 +42,7 @@ $CRM_API_VERSION = 'api_version';
$CRM_CURRENCY = 'currency'; $CRM_CURRENCY = 'currency';
$CRM_ADDRESS_OPTIONS = 'address_options'; $CRM_ADDRESS_OPTIONS = 'address_options';
$CRM_DIMENSIONS = 'order_dimensions';
if(!CModule::IncludeModule('intaro.retailcrm') || !CModule::IncludeModule('sale') || !CModule::IncludeModule('iblock') || !CModule::IncludeModule('catalog')) if(!CModule::IncludeModule('intaro.retailcrm') || !CModule::IncludeModule('sale') || !CModule::IncludeModule('iblock') || !CModule::IncludeModule('catalog'))
return; return;
@ -278,7 +279,7 @@ if (isset($_POST['Update']) && ($_POST['Update'] == 'Y')) {
// remove depenedencies // remove depenedencies
UnRegisterModuleDependences("sale", "OnSaleOrderEntitySaved", $mid, "RetailCrmEvent", "orderSave"); UnRegisterModuleDependences("sale", "OnSaleOrderEntitySaved", $mid, "RetailCrmEvent", "orderSave");
UnRegisterModuleDependences("sale", "OnOrderUpdate", $mid, "RetailCrmEvent", "onUpdateOrder"); 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", "OnSalePaymentEntitySaved", $mid, "RetailCrmEvent", "paymentSave");
UnRegisterModuleDependences("sale", "OnSalePaymentEntityDeleted", $mid, "RetailCrmEvent", "paymentDelete"); UnRegisterModuleDependences("sale", "OnSalePaymentEntityDeleted", $mid, "RetailCrmEvent", "paymentDelete");
@ -286,7 +287,7 @@ if (isset($_POST['Update']) && ($_POST['Update'] == 'Y')) {
// event dependencies // event dependencies
RegisterModuleDependences("sale", "OnSaleOrderEntitySaved", $mid, "RetailCrmEvent", "orderSave"); RegisterModuleDependences("sale", "OnSaleOrderEntitySaved", $mid, "RetailCrmEvent", "orderSave");
RegisterModuleDependences("sale", "OnOrderUpdate", $mid, "RetailCrmEvent", "onUpdateOrder"); 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", "OnSalePaymentEntitySaved", $mid, "RetailCrmEvent", "paymentSave");
RegisterModuleDependences("sale", "OnSalePaymentEntityDeleted", $mid, "RetailCrmEvent", "paymentDelete"); RegisterModuleDependences("sale", "OnSalePaymentEntityDeleted", $mid, "RetailCrmEvent", "paymentDelete");
} }
@ -336,6 +337,8 @@ if (isset($_POST['Update']) && ($_POST['Update'] == 'Y')) {
//order numbers //order numbers
$orderNumbers = htmlspecialchars(trim($_POST['order-numbers'])) ? htmlspecialchars(trim($_POST['order-numbers'])) : 'N'; $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 //stores
$bitrixStoresArr = array(); $bitrixStoresArr = array();
$bitrixShopsArr = 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']); 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, $ua);
COption::SetOptionString($mid, $CRM_UA_KEYS, serialize(RCrmActions::clearArr($uaKeys))); COption::SetOptionString($mid, $CRM_UA_KEYS, serialize(RCrmActions::clearArr($uaKeys)));
COption::SetOptionString($mid, $CRM_DIMENSIONS, $orderDimensions);
$uri .= '&ok=Y'; $uri .= '&ok=Y';
LocalRedirect($uri); 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; $currencyOption = COption::GetOptionString($mid, $CRM_CURRENCY, 0) ? COption::GetOptionString($mid, $CRM_CURRENCY, 0) : $baseCurrency;
$currencyList = \Bitrix\Currency\CurrencyManager::getCurrencyList(); $currencyList = \Bitrix\Currency\CurrencyManager::getCurrencyList();
$optionsOrderDimensions = COption::GetOptionString($mid, $CRM_DIMENSIONS, 'N');
$addressOptions = unserialize(COption::GetOptionString($mid, $CRM_ADDRESS_OPTIONS, 0)); $addressOptions = unserialize(COption::GetOptionString($mid, $CRM_ADDRESS_OPTIONS, 0));
$aTabs = array( $aTabs = array(
@ -1076,6 +1081,15 @@ if (isset($_POST['Update']) && ($_POST['Update'] == 'Y')) {
</b> </b>
</td> </td>
</tr> </tr>
<tr>
<td colspan="2" class="option-head option-other-top option-other-bottom">
<b>
<label>
<input class="addr" type="checkbox" name="order_dimensions" value="Y" <?php if($optionsOrderDimensions == 'Y') echo "checked"; ?>> <?php echo GetMessage('ORDER_DIMENSIONS'); ?>
</label>
</b>
</td>
</tr>
<tr> <tr>
<td colspan="2" class="option-head option-other-top option-other-bottom"> <td colspan="2" class="option-head option-other-top option-other-bottom">
<b> <b>