1
0
mirror of synced 2024-11-22 13:26:10 +03:00

Merge pull request #52 from iyzoer/master

v2.3.13
This commit is contained in:
Alex Lushpai 2018-10-25 10:47:40 +03:00 committed by GitHub
commit 93db4eb3c7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 136 additions and 66 deletions

View File

@ -1,3 +1,7 @@
## 2018-10-25 v.2.3.13
* Добавлен функционал для активации модуля в маркетплейсе retailCRM
* Исправлен баг при генерации каталога с подстановкой схемы
## 2018-10-17 v.2.3.12 ## 2018-10-17 v.2.3.12
* Исрпавлена некорректная выгрузка остатков по складам * Исрпавлена некорректная выгрузка остатков по складам
* Исправлена отправка габаритов товаров в заказах * Исправлена отправка габаритов товаров в заказах

View File

@ -123,7 +123,7 @@ class ApiClient
$parameters $parameters
); );
} }
/** /**
* Change user status * Change user status
* *
@ -608,7 +608,7 @@ class ApiClient
$parameters $parameters
); );
} }
/** /**
* Combine orders * Combine orders
* *
@ -723,13 +723,13 @@ class ApiClient
'Note id must be set' 'Note id must be set'
); );
} }
return $this->client->makeRequest( return $this->client->makeRequest(
"/orders/payments/$id/delete", "/orders/payments/$id/delete",
Client::METHOD_POST Client::METHOD_POST
); );
} }
/** /**
* Combine customers * Combine customers
* *
@ -1063,7 +1063,7 @@ class ApiClient
Client::METHOD_GET Client::METHOD_GET
); );
} }
/** /**
* Get tasks list * Get tasks list
* *
@ -1168,7 +1168,7 @@ class ApiClient
Client::METHOD_GET Client::METHOD_GET
); );
} }
/** /**
* Get orders assembly list * Get orders assembly list
* *
@ -1397,7 +1397,7 @@ class ApiClient
$this->fillSite($site, array('offers' => json_encode($offers))) $this->fillSite($site, array('offers' => json_encode($offers)))
); );
} }
/** /**
* Upload store prices * Upload store prices
* *
@ -1483,6 +1483,7 @@ class ApiClient
Client::METHOD_GET Client::METHOD_GET
); );
} }
/** /**
* Edit module configuration * Edit module configuration
* *
@ -1857,7 +1858,7 @@ class ApiClient
array('productStatus' => json_encode($data)) array('productStatus' => json_encode($data))
); );
} }
/** /**
* Get products groups * Get products groups
* *
@ -2196,7 +2197,7 @@ class ApiClient
$parameters $parameters
); );
} }
/** /**
* Get segments list * Get segments list
* *

View File

@ -13,15 +13,15 @@ class RCrmActions
$arSites = array(); $arSites = array();
$rsSites = CSite::GetList($by, $sort, array('ACTIVE' => 'Y')); $rsSites = CSite::GetList($by, $sort, array('ACTIVE' => 'Y'));
while ($ar = $rsSites->Fetch()) { while ($ar = $rsSites->Fetch()) {
$arSites[] = $ar; $arSites[] = $ar;
} }
return $arSites; return $arSites;
} }
public static function OrderTypesList($arSites) public static function OrderTypesList($arSites)
{ {
$orderTypesList = array(); $orderTypesList = array();
foreach ($arSites as $site) { foreach ($arSites as $site) {
$personTypes = \Bitrix\Sale\PersonType::load($site['LID']); $personTypes = \Bitrix\Sale\PersonType::load($site['LID']);
$bitrixOrderTypesList = array(); $bitrixOrderTypesList = array();
@ -33,10 +33,10 @@ class RCrmActions
} }
$orderTypesList = $orderTypesList + $bitrixOrderTypesList; $orderTypesList = $orderTypesList + $bitrixOrderTypesList;
} }
return $orderTypesList; return $orderTypesList;
} }
public static function DeliveryList() public static function DeliveryList()
{ {
$bitrixDeliveryTypesList = array(); $bitrixDeliveryTypesList = array();
@ -49,9 +49,9 @@ class RCrmActions
} }
} }
foreach ($arDeliveryServiceAll as $arDeliveryService) { foreach ($arDeliveryServiceAll as $arDeliveryService) {
if ((($arDeliveryService['PARENT_ID'] == '0' || $arDeliveryService['PARENT_ID'] == null) || if ((($arDeliveryService['PARENT_ID'] == '0' || $arDeliveryService['PARENT_ID'] == null) ||
in_array($arDeliveryService['PARENT_ID'], $groups)) && in_array($arDeliveryService['PARENT_ID'], $groups)) &&
$arDeliveryService['ID'] != $noOrderId && $arDeliveryService['ID'] != $noOrderId &&
$arDeliveryService['CLASS_NAME'] != '\Bitrix\Sale\Delivery\Services\Group') { $arDeliveryService['CLASS_NAME'] != '\Bitrix\Sale\Delivery\Services\Group') {
if (in_array($arDeliveryService['PARENT_ID'], $groups)) { if (in_array($arDeliveryService['PARENT_ID'], $groups)) {
$arDeliveryService['PARENT_ID'] = 0; $arDeliveryService['PARENT_ID'] = 0;
@ -62,7 +62,7 @@ class RCrmActions
return $bitrixDeliveryTypesList; return $bitrixDeliveryTypesList;
} }
public static function PaymentList() public static function PaymentList()
{ {
$bitrixPaymentTypesList = array(); $bitrixPaymentTypesList = array();
@ -73,9 +73,9 @@ class RCrmActions
while ($payment = $dbPaymentAll->fetch()) { while ($payment = $dbPaymentAll->fetch()) {
$bitrixPaymentTypesList[] = $payment; $bitrixPaymentTypesList[] = $payment;
} }
return $bitrixPaymentTypesList; return $bitrixPaymentTypesList;
} }
public static function StatusesList() public static function StatusesList()
{ {
@ -90,7 +90,7 @@ class RCrmActions
'NAME' => $arStatus['NAME'], 'NAME' => $arStatus['NAME'],
); );
} }
return $bitrixPaymentStatusesList; return $bitrixPaymentStatusesList;
} }
@ -104,11 +104,11 @@ class RCrmActions
while ($prop = $arPropsAll->Fetch()) { while ($prop = $arPropsAll->Fetch()) {
$bitrixPropsList[$prop['PERSON_TYPE_ID']][] = $prop; $bitrixPropsList[$prop['PERSON_TYPE_ID']][] = $prop;
} }
return $bitrixPropsList; return $bitrixPropsList;
} }
public static function PricesExportList() public static function PricesExportList()
{ {
$priceId = COption::GetOptionString(self::$MODULE_ID, 'catalog_base_price', 0); $priceId = COption::GetOptionString(self::$MODULE_ID, 'catalog_base_price', 0);
$catalogExportPrices = array(); $catalogExportPrices = array();
@ -117,21 +117,21 @@ class RCrmActions
{ {
$catalogExportPrices[$arPriceType['ID']] = $arPriceType; $catalogExportPrices[$arPriceType['ID']] = $arPriceType;
} }
return $catalogExportPrices; return $catalogExportPrices;
} }
public static function StoresExportList() public static function StoresExportList()
{ {
$catalogExportStores = array(); $catalogExportStores = array();
$dbStores = CCatalogStore::GetList(array(), array("ACTIVE" => "Y"), false, false, array('ID', 'TITLE')); $dbStores = CCatalogStore::GetList(array(), array("ACTIVE" => "Y"), false, false, array('ID', 'TITLE'));
while ($stores = $dbStores->Fetch()) { while ($stores = $dbStores->Fetch()) {
$catalogExportStores[] = $stores; $catalogExportStores[] = $stores;
} }
return $catalogExportStores; return $catalogExportStores;
} }
public static function IblocksExportList() public static function IblocksExportList()
{ {
$catalogExportIblocks = array(); $catalogExportIblocks = array();
@ -154,10 +154,10 @@ class RCrmActions
} }
} }
} }
return $catalogExportIblocks; return $catalogExportIblocks;
} }
/** /**
* *
* w+ event in bitrix log * w+ event in bitrix log
@ -208,7 +208,7 @@ class RCrmActions
RetailCrmHistory::customerHistory(); RetailCrmHistory::customerHistory();
RetailCrmHistory::orderHistory(); RetailCrmHistory::orderHistory();
self::uploadOrdersAgent(); self::uploadOrdersAgent();
return 'RCrmActions::orderAgent();'; return 'RCrmActions::orderAgent();';
} }
@ -295,7 +295,7 @@ class RCrmActions
} else { } else {
$newFio = explode(" ", $fio, 3); $newFio = explode(" ", $fio, 3);
} }
switch (count($newFio)) { switch (count($newFio)) {
default: default:
case 0: case 0:
@ -322,31 +322,74 @@ class RCrmActions
return $result; return $result;
} }
public static function sendConfiguration($api, $api_version, $active = true)
{
$scheme = isset($_SERVER['HTTPS']) ? 'https://' : 'http://';
$baseUrl = $scheme . $_SERVER['HTTP_HOST'];
$integrationCode = 'bitrix';
$logo = 'https://s3.eu-central-1.amazonaws.com/retailcrm-billing/images/5af47fe682bf2-1c-bitrix-logo.svg';
$accountUrl = $baseUrl . '/bitrix/admin';
$clientId = COption::GetOptionString(self::$MODULE_ID, 'client_id', 0);
if (!$clientId) {
$clientId = uniqid();
COption::SetOptionString(self::$MODULE_ID, 'client_id', $clientId);
}
$code = $integrationCode . '-' . $clientId;
if ($api_version == 'v4') {
$configuration = array(
'name' => GetMessage('API_MODULE_NAME'),
'code' => $code,
'logo' => $logo,
'configurationUrl' => $accountUrl,
'active' => $active
);
self::apiMethod($api, 'marketplaceSettingsEdit', __METHOD__, $configuration);
} else {
$configuration = array(
'clientId' => $clientId,
'code' => $code,
'integrationCode' => $integrationCode,
'active' => $active,
'name' => GetMessage('API_MODULE_NAME'),
'logo' => $logo,
'baseUrl' => $baseUrl,
'accountUrl' => $accountUrl
);
self::apiMethod($api, 'integrationModulesEdit', __METHOD__, $configuration);
}
}
public static function apiMethod($api, $methodApi, $method, $params, $site = null) public static function apiMethod($api, $methodApi, $method, $params, $site = null)
{ {
switch ($methodApi) { switch ($methodApi) {
case 'ordersPaymentDelete': case 'ordersPaymentDelete':
case 'ordersHistory': case 'ordersHistory':
case 'customerHistory': case 'customerHistory':
case 'ordersFixExternalIds': case 'ordersFixExternalIds':
case 'customersFixExternalIds': case 'customersFixExternalIds':
return self::proxy($api, $methodApi, $method, array($params)); return self::proxy($api, $methodApi, $method, array($params));
case 'orderGet': case 'orderGet':
return self::proxy($api, 'ordersGet', $method, array($params, 'id', $site)); return self::proxy($api, 'ordersGet', $method, array($params, 'id', $site));
case 'ordersGet': case 'ordersGet':
case 'ordersEdit': case 'ordersEdit':
case 'customersGet': case 'customersGet':
case 'customersEdit': case 'customersEdit':
return self::proxy($api, $methodApi, $method, array($params, 'externalId', $site)); return self::proxy($api, $methodApi, $method, array($params, 'externalId', $site));
case 'paymentEditById': case 'paymentEditById':
return self::proxy($api, 'ordersPaymentEdit', $method, array($params, 'id', $site)); return self::proxy($api, 'ordersPaymentEdit', $method, array($params, 'id', $site));
case 'paymentEditByExternalId': case 'paymentEditByExternalId':
return self::proxy($api, 'ordersPaymentEdit', $method, array($params, 'externalId', $site)); return self::proxy($api, 'ordersPaymentEdit', $method, array($params, 'externalId', $site));
default: default:
return self::proxy($api, $methodApi, $method, array($params, $site)); return self::proxy($api, $methodApi, $method, array($params, $site));
} }
@ -403,12 +446,12 @@ class RCrmActions
); );
$log->write(array( $log->write(array(
'api' => $version, 'api' => $version,
'methodApi' => $methodApi, 'methodApi' => $methodApi,
'errorMsg' => $e->getMessage(), 'errorMsg' => $e->getMessage(),
'errors' => $e->getCode(), 'errors' => $e->getCode(),
'params' => $params 'params' => $params
), 'apiErrors'); ), 'apiErrors');
if (function_exists('retailCrmApiResult')) { if (function_exists('retailCrmApiResult')) {
retailCrmApiResult($methodApi, false, 'CurlException'); retailCrmApiResult($methodApi, false, 'CurlException');
} }
@ -421,12 +464,12 @@ class RCrmActions
); );
$log->write(array( $log->write(array(
'api' => $version, 'api' => $version,
'methodApi' => $methodApi, 'methodApi' => $methodApi,
'errorMsg' => $e->getMessage(), 'errorMsg' => $e->getMessage(),
'errors' => $e->getCode(), 'errors' => $e->getCode(),
'params' => $params 'params' => $params
), 'apiErrors'); ), 'apiErrors');
if (function_exists('retailCrmApiResult')) { if (function_exists('retailCrmApiResult')) {
retailCrmApiResult($methodApi, false, 'ArgumentException'); retailCrmApiResult($methodApi, false, 'ArgumentException');
} }

View File

@ -74,7 +74,7 @@ class RetailCrmICML
$defaultSite = CSite::GetList($by = "def", $order = "desc", array('DEF' => 'Y'))->Fetch(); $defaultSite = CSite::GetList($by = "def", $order = "desc", array('DEF' => 'Y'))->Fetch();
$this->encodingDefault = $defaultSite["CHARSET"]; $this->encodingDefault = $defaultSite["CHARSET"];
$url = 'https://' . $this->serverName; $url = 'https://' . $this->defaultServerName;
$curlHandler = curl_init(); $curlHandler = curl_init();
curl_setopt($curlHandler, CURLOPT_URL, $url); curl_setopt($curlHandler, CURLOPT_URL, $url);
$responseBody = curl_exec($curlHandler); $responseBody = curl_exec($curlHandler);

View File

@ -1,2 +1 @@
- Исправлена передача габаритов товаров в заказе - Добавлен функционал для активации модуля в маркетплейсе retailCRM
- Исправлена передача остатков по складам

View File

@ -69,6 +69,8 @@ class intaro_retailcrm extends CModule
var $CRM_API_VERSION = 'api_version'; var $CRM_API_VERSION = 'api_version';
var $HISTORY_TIME = 'history_time'; var $HISTORY_TIME = 'history_time';
var $CLIENT_ID = 'client_id';
var $INSTALL_PATH; var $INSTALL_PATH;
function intaro_retailcrm() function intaro_retailcrm()
@ -1042,15 +1044,10 @@ class intaro_retailcrm extends CModule
$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);
$api_version = COption::GetOptionString($this->MODULE_ID, $this->CRM_API_VERSION, 0);
$this->RETAIL_CRM_API = new \RetailCrm\ApiClient($api_host, $api_key); $this->RETAIL_CRM_API = new \RetailCrm\ApiClient($api_host, $api_key);
try {
$this->RETAIL_CRM_API->statisticUpdate(); RCrmActions::sendConfiguration($this->RETAIL_CRM_API, $api_version);
} catch (\RetailCrm\Exception\CurlException $e) {
RCrmActions::eventLog(
'intaro.retailcrm/install/index.php', 'RetailCrm\ApiClient::statisticUpdate::CurlException',
$e->getCode() . ': ' . $e->getMessage()
);
}
$APPLICATION->IncludeAdminFile( $APPLICATION->IncludeAdminFile(
GetMessage('MODULE_INSTALL_TITLE'), $this->INSTALL_PATH . '/step6.php' GetMessage('MODULE_INSTALL_TITLE'), $this->INSTALL_PATH . '/step6.php'
@ -1062,6 +1059,27 @@ class intaro_retailcrm extends CModule
{ {
global $APPLICATION; global $APPLICATION;
$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_version = COption::GetOptionString($this->MODULE_ID, $this->CRM_API_VERSION, 0);
include($this->INSTALL_PATH . '/../classes/general/Http/Client.php');
include($this->INSTALL_PATH . '/../classes/general/Response/ApiResponse.php');
include($this->INSTALL_PATH . '/../classes/general/Exception/InvalidJsonException.php');
include($this->INSTALL_PATH . '/../classes/general/Exception/CurlException.php');
if ($api_version == 'v4') {
include($this->INSTALL_PATH . '/../classes/general/ApiClient_v4.php');
include($this->INSTALL_PATH . '/../classes/general/order/RetailCrmOrder_v4.php');
include($this->INSTALL_PATH . '/../classes/general/history/RetailCrmHistory_v4.php');
} elseif ($api_version == 'v5') {
include($this->INSTALL_PATH . '/../classes/general/ApiClient_v5.php');
include($this->INSTALL_PATH . '/../classes/general/order/RetailCrmOrder_v5.php');
include($this->INSTALL_PATH . '/../classes/general/history/RetailCrmHistory_v5.php');
}
$retail_crm_api = new \RetailCrm\ApiClient($api_host, $api_key);
CAgent::RemoveAgent("RCrmActions::orderAgent();", $this->MODULE_ID); CAgent::RemoveAgent("RCrmActions::orderAgent();", $this->MODULE_ID);
CAgent::RemoveAgent("RetailCrmInventories::inventoriesUpload();", $this->MODULE_ID); CAgent::RemoveAgent("RetailCrmInventories::inventoriesUpload();", $this->MODULE_ID);
CAgent::RemoveAgent("RetailCrmPrices::pricesUpload();", $this->MODULE_ID); CAgent::RemoveAgent("RetailCrmPrices::pricesUpload();", $this->MODULE_ID);
@ -1108,6 +1126,7 @@ class intaro_retailcrm extends CModule
COption::RemoveOption($this->MODULE_ID, $this->CRM_API_VERSION); COption::RemoveOption($this->MODULE_ID, $this->CRM_API_VERSION);
COption::RemoveOption($this->MODULE_ID, $this->HISTORY_TIME); COption::RemoveOption($this->MODULE_ID, $this->HISTORY_TIME);
COption::RemoveOption($this->MODULE_ID, $this->CLIENT_ID);
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");
@ -1131,12 +1150,14 @@ class intaro_retailcrm extends CModule
} }
} }
RCrmActions::sendConfiguration($retail_crm_api, $api_version, false);
$this->DeleteFiles(); $this->DeleteFiles();
UnRegisterModule($this->MODULE_ID); UnRegisterModule($this->MODULE_ID);
$APPLICATION->IncludeAdminFile( $APPLICATION->IncludeAdminFile(
GetMessage('MODULE_UNINSTALL_TITLE'), $this->INSTALL_PATH . '/unstep1.php' GetMessage('MODULE_UNINSTALL_TITLE'), $this->INSTALL_PATH . '/unstep1.php'
); );
} }

View File

@ -1,5 +1,5 @@
<? <?
$arModuleVersion = array( $arModuleVersion = array(
"VERSION" => "2.3.12", "VERSION" => "2.3.13",
"VERSION_DATE" => "2018-10-17 13:50:00" "VERSION_DATE" => "2018-10-25 10:40:00"
); );

View File

@ -0,0 +1,2 @@
<?php
$MESS ['API_MODULE_NAME'] = '1С-Битрикс';