1
0
mirror of synced 2024-11-22 05:16:09 +03:00

ref #92570 Исправление вывода справочников при установке модуля (#333)

This commit is contained in:
Kocmonavtik 2024-01-15 12:27:40 +03:00 committed by GitHub
parent a66ec1d663
commit d9cdfced49
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 42 additions and 6 deletions

View File

@ -1,3 +1,6 @@
## 2024-01-09 v.6.5.5
- Исправлен вывод справочников при установке модуля
## 2023-12-29 v.6.5.4 ## 2023-12-29 v.6.5.4
- Исправлена передача адреса доставки - Исправлена передача адреса доставки

View File

@ -1 +1 @@
- Исправлена передача адреса доставки - Исправлен вывод справочников при установке модуля

View File

@ -89,6 +89,7 @@ class intaro_retailcrm extends CModule
public $CLIENT_ID = 'client_id'; public $CLIENT_ID = 'client_id';
public $PROTOCOL = 'protocol'; public $PROTOCOL = 'protocol';
public $INSTALL_PATH; public $INSTALL_PATH;
public $SITES_AVAILABLE = 'sites_available';
public function __construct() public function __construct()
{ {
@ -376,15 +377,21 @@ class intaro_retailcrm extends CModule
if (count($arResult['arSites']) > 1) { if (count($arResult['arSites']) > 1) {
$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);
$isEmptySites = true;
foreach ($arResult['arSites'] as $site) { foreach ($arResult['arSites'] as $site) {
$siteCode[$site['LID']] = null; $siteCode[$site['LID']] = null;
if ($_POST['sites-id-' . $site['LID']] && !empty($_POST['sites-id-' . $site['LID']])) { if ($_POST['sites-id-' . $site['LID']] && !empty($_POST['sites-id-' . $site['LID']])) {
$siteCode[$site['LID']] = htmlspecialchars(trim($_POST['sites-id-' . $site['LID']])); $siteCode[$site['LID']] = htmlspecialchars(trim($_POST['sites-id-' . $site['LID']]));
$isEmptySites = false;
} }
} }
if ($isEmptySites) {
$arResult['errCode'] = 'ERR_EMPTY_SITES_LIST';
}
$arResult['arCurrencySites'] = RCrmActions::getCurrencySites(); $arResult['arCurrencySites'] = RCrmActions::getCurrencySites();
$result = $this->getReferenceShops($api_host, $api_key); $result = $this->getReferenceShops($api_host, $api_key);
@ -397,9 +404,11 @@ class intaro_retailcrm extends CModule
foreach ($arResult['arSites'] as $bitrixSite) { foreach ($arResult['arSites'] as $bitrixSite) {
$LID = $bitrixSite['LID'] ?? null; $LID = $bitrixSite['LID'] ?? null;
$cmsCurrency = $arResult['arCurrencySites'][$LID] ?? null; $cmsCurrency = $arResult['arCurrencySites'][$LID] ?? null;
$crmCurrency = $arResult['sitesList'][$siteCode[$LID]]['currency'] ?? null;
$arResult['errCode'] = CurrencyService::validateCurrency($cmsCurrency, $crmCurrency); if (isset($arResult['sitesList'][$siteCode[$LID]])) {
$crmCurrency = $arResult['sitesList'][$siteCode[$LID]]['currency'] ?? null;
$arResult['errCode'] = CurrencyService::validateCurrency($cmsCurrency, $crmCurrency);
}
} }
if (count($arResult['arSites']) != count($siteCode)) { if (count($arResult['arSites']) != count($siteCode)) {
@ -453,6 +462,25 @@ class intaro_retailcrm extends CModule
COption::SetOptionString($this->MODULE_ID, $this->CRM_API_HOST_OPTION, $api_host); COption::SetOptionString($this->MODULE_ID, $this->CRM_API_HOST_OPTION, $api_host);
COption::SetOptionString($this->MODULE_ID, $this->CRM_API_KEY_OPTION, $api_key); COption::SetOptionString($this->MODULE_ID, $this->CRM_API_KEY_OPTION, $api_key);
COption::SetOptionString($this->MODULE_ID, $this->CRM_SITES_LIST, serialize([])); COption::SetOptionString($this->MODULE_ID, $this->CRM_SITES_LIST, serialize([]));
try {
$credentials = $this->RETAIL_CRM_API->getCredentials();
COption::SetOptionString(
$this->MODULE_ID,
$this->SITES_AVAILABLE,
$credentials->sitesAvailable[0] ?? ''
);
} catch (ArgumentOutOfRangeException | CurlException $exception) {
$arResult['errCode'] = 'ERR_GET_SITE_CRM';
$APPLICATION->IncludeAdminFile(
GetMessage('MODULE_INSTALL_TITLE'), $this->INSTALL_PATH . '/step1.php'
);
return false;
}
} }
try { try {

View File

@ -1,6 +1,6 @@
<?php <?php
$arModuleVersion = [ $arModuleVersion = [
'VERSION' => '6.5.4', 'VERSION' => '6.5.5',
'VERSION_DATE' => '2023-12-29 15:00:00' 'VERSION_DATE' => '2024-01-09 15:30:00'
]; ];

View File

@ -11,7 +11,8 @@ $MESS ['ERR_403'] = 'Wrong apiKey.';
$MESS ['ERR_0'] = 'Server connection timeout error.'; $MESS ['ERR_0'] = 'Server connection timeout error.';
$MESS ['ERR_FIELDS_API_HOST'] = 'Fields are filled incorrectly.'; $MESS ['ERR_FIELDS_API_HOST'] = 'Fields are filled incorrectly.';
$MESS ['ERR_METHOD_NOT_FOUND'] = 'Check availability of API methods for current key.'; $MESS ['ERR_METHOD_NOT_FOUND'] = 'Check availability of API methods for current key.';
//$MESS ['URL_NOT_FOUND'] = 'One or more sites have empty "server URL" field.'; $MESS ['ERR_EMPTY_SITES_LIST'] = 'At least 1 store must be matched';
$MESS ['ERR_GET_SITE_CRM'] = 'Failed to retrieve CRM store';
$MESS ['INFO_1'] = 'Enter the address of RetailCRM instance (for example, https://demo.retailcrm.ru) and API key.'; $MESS ['INFO_1'] = 'Enter the address of RetailCRM instance (for example, https://demo.retailcrm.ru) and API key.';
$MESS ['INFO_2'] = 'API key can be generated when the store is registered in RetailCRM (Administration > Integration).'; $MESS ['INFO_2'] = 'API key can be generated when the store is registered in RetailCRM (Administration > Integration).';
$MESS ['INFO_3'] = 'Store code in 1C-Bitrix must correspond with the store code in RetailCRM (Administration > Stores).'; $MESS ['INFO_3'] = 'Store code in 1C-Bitrix must correspond with the store code in RetailCRM (Administration > Stores).';

View File

@ -8,6 +8,7 @@ $MESS ['ERR_6'] = 'CRM address may be incorrect.';
$MESS ['ERR_403'] = 'Wrong apiKey.'; $MESS ['ERR_403'] = 'Wrong apiKey.';
$MESS ['ERR_0'] = 'Server connection timeout error.'; $MESS ['ERR_0'] = 'Server connection timeout error.';
$MESS ['ERR_FIELDS_API_HOST'] = 'Fields are filled incorrectly.'; $MESS ['ERR_FIELDS_API_HOST'] = 'Fields are filled incorrectly.';
$MESS ['ERR_EMPTY_SITES_LIST'] = 'At least 1 store must be matched';
$MESS ['INFO_1'] = 'Set the correspondence between 1C-Bitrix and RetailCRM stores.'; $MESS ['INFO_1'] = 'Set the correspondence between 1C-Bitrix and RetailCRM stores.';
$MESS ['INFO_2'] = 'All your stores in RetailCRM must have a common API key!'; $MESS ['INFO_2'] = 'All your stores in RetailCRM must have a common API key!';
$MESS ['ERR_CURRENCY_SITES'] = 'The currency of the site differs from the currency of the store in CRM. $MESS ['ERR_CURRENCY_SITES'] = 'The currency of the site differs from the currency of the store in CRM.

View File

@ -11,12 +11,14 @@ $MESS ['ERR_403'] = 'Неверный apiKey.';
$MESS ['ERR_0'] = 'Превышено время ожидания ответа от сервера.'; $MESS ['ERR_0'] = 'Превышено время ожидания ответа от сервера.';
$MESS ['ERR_FIELDS_API_HOST'] = 'Неверно заполнены поля.'; $MESS ['ERR_FIELDS_API_HOST'] = 'Неверно заполнены поля.';
$MESS ['ERR_METHOD_NOT_FOUND'] = 'Проверьте доступность методов API по текущему ключу.'; $MESS ['ERR_METHOD_NOT_FOUND'] = 'Проверьте доступность методов API по текущему ключу.';
$MESS ['ERR_EMPTY_SITES_LIST'] = 'Необходимо соотнести по крайней мере 1 магазин';
$MESS ['ERR_COUNT_SITES'] = 'Введенный вами API Ключ относится более чем к одному магазину. $MESS ['ERR_COUNT_SITES'] = 'Введенный вами API Ключ относится более чем к одному магазину.
Измените настройки доступа для API ключа, он должен работать только с одним магазином в CRM'; Измените настройки доступа для API ключа, он должен работать только с одним магазином в CRM';
$MESS ['ERR_CURRENCY_SITES'] = 'Валюта сайта отличается от валюты магазина в CRM. $MESS ['ERR_CURRENCY_SITES'] = 'Валюта сайта отличается от валюты магазина в CRM.
Для корректной работы интеграции, валюты в CRM и CMS должны совпадать'; Для корректной работы интеграции, валюты в CRM и CMS должны совпадать';
$MESS ['ERR_CMS_CURRENCY'] = 'Не удалось получить валюту сайта Bitrix'; $MESS ['ERR_CMS_CURRENCY'] = 'Не удалось получить валюту сайта Bitrix';
$MESS ['ERR_CRM_CURRENCY'] = 'Не удалось получить валюту магазина CRM'; $MESS ['ERR_CRM_CURRENCY'] = 'Не удалось получить валюту магазина CRM';
$MESS ['ERR_GET_SITE_CRM'] = 'Не удалось получить магазин CRM';
$MESS ['INFO_1'] = 'Введите адрес экземпляра RetailCRM (например, https://demo.retailcrm.ru) и API-ключ.'; $MESS ['INFO_1'] = 'Введите адрес экземпляра RetailCRM (например, https://demo.retailcrm.ru) и API-ключ.';
$MESS ['INFO_2'] = 'API-ключ можно сгенерировать при регистрации магазина в RetailCRM (Администрирование > Интеграция).'; $MESS ['INFO_2'] = 'API-ключ можно сгенерировать при регистрации магазина в RetailCRM (Администрирование > Интеграция).';
$MESS ['INFO_3'] = 'Код сайта в 1С-Битрикс должен совпадать с кодом сайта в RetailCRM (Администрирование > Магазины).'; $MESS ['INFO_3'] = 'Код сайта в 1С-Битрикс должен совпадать с кодом сайта в RetailCRM (Администрирование > Магазины).';

View File

@ -8,6 +8,7 @@ $MESS ['ERR_6'] = 'Возможно неверно введен адрес Retai
$MESS ['ERR_403'] = 'Неверный apiKey.'; $MESS ['ERR_403'] = 'Неверный apiKey.';
$MESS ['ERR_0'] = 'Превышено время ожидания ответа от сервера.'; $MESS ['ERR_0'] = 'Превышено время ожидания ответа от сервера.';
$MESS ['ERR_FIELDS_API_HOST'] = 'Неверно заполнены поля.'; $MESS ['ERR_FIELDS_API_HOST'] = 'Неверно заполнены поля.';
$MESS ['ERR_EMPTY_SITES_LIST'] = 'Необходимо соотнести по крайней мере 1 магазин';
$MESS ['INFO_1'] = 'Задайте соответствия между Вашими магазинами в 1С-Битрикс и RetailCRM.'; $MESS ['INFO_1'] = 'Задайте соответствия между Вашими магазинами в 1С-Битрикс и RetailCRM.';
$MESS ['INFO_2'] = 'У всех Ваших магазинов в RetailCRM должен быть общий API-ключ!'; $MESS ['INFO_2'] = 'У всех Ваших магазинов в RetailCRM должен быть общий API-ключ!';
$MESS ['ERR_CURRENCY_SITES'] = 'Валюта сайта отличается от валюты магазина в CRM. $MESS ['ERR_CURRENCY_SITES'] = 'Валюта сайта отличается от валюты магазина в CRM.