1
0
Fork 0
mirror of synced 2025-04-04 14:23:33 +03:00

ref #91590 Добавлены провеки валюты пр иустановке и настройке модуля.

Добавлена верстка для вывода сообщений
This commit is contained in:
Ivan Chaplygin 2023-08-23 17:55:21 +03:00
parent 8ce4f5d6c6
commit abf7e6df3e
4 changed files with 56 additions and 12 deletions

View file

@ -1438,6 +1438,8 @@ class intaro_retailcrm extends CModule
try {
$result = $client->makeRequest('/reference/sites', 'GET');
$bitrixSites = RCrmActions::getSitesList();
$bitrixBaseCurrency = CCurrency::GetBaseCurrency();
} catch (CurlException $e) {
RCrmActions::eventLog(
'intaro.retailcrm/install/index.php', 'RetailCrm\ApiClient::sitesList',
@ -1445,21 +1447,38 @@ class intaro_retailcrm extends CModule
);
$res['errCode'] = 'ERR_' . $e->getCode();
}
if (!isset($result) || $result->getStatusCode() == 200) {
ConfigProvider::setApiVersion(self::V5);
$res['sitesList'] = $APPLICATION->ConvertCharsetArray(
$result->sites,
'utf-8',
SITE_CHARSET
);
return $res;
}
$res['errCode'] = 'ERR_METHOD_NOT_FOUND';
//Проверка, что был получен корректный ответ
if (isset($result) && $result->getStatusCode() == 200) {
//Проверка количества магазинов, доступных по апи
if (count($bitrixSites) < count($result->sites)) {
$res['errCode'] = 'ERR_COUNT_SITES';
}
//Проверка совпадения базовой валюты CMS
if (!isset($res)) {
foreach ($result->sites as $site) {
if ($site['currency'] !== $bitrixBaseCurrency) {
$res['errCode'] = 'ERR_CURRENCY_SITES';
}
}
}
if (!isset($res)) {
ConfigProvider::setApiVersion(self::V5);
$res['sitesList'] = $APPLICATION->ConvertCharsetArray(
$result->sites,
'utf-8',
SITE_CHARSET
);
}
} else {
$res['errCode'] = 'ERR_METHOD_NOT_FOUND';
}
return $res;
}

View file

@ -11,6 +11,8 @@ $MESS ['ERR_403'] = 'Неверный apiKey.';
$MESS ['ERR_0'] = 'Превышено время ожидания ответа от сервера.';
$MESS ['ERR_FIELDS_API_HOST'] = 'Неверно заполнены поля.';
$MESS ['ERR_METHOD_NOT_FOUND'] = 'Проверьте доступность методов API по текущему ключу.';
$MESS ['ERR_COUNT_SITES'] = 'По введенному ключу апи доступно больше магазинов, чем существует в cms';
$MESS ['ERR_CURRENCY_SITES'] = 'Базовая валюта отличается от валюты магазина в CRM';
//$MESS ['URL_NOT_FOUND'] = 'В настройках одного или нескольких сайтов не заполнено поле "URL сервера".';
$MESS ['INFO_1'] = 'Введите адрес экземпляра RetailCRM (например, https://demo.retailcrm.ru) и API-ключ.';
$MESS ['INFO_2'] = 'API-ключ можно сгенерировать при регистрации магазина в RetailCRM (Администрирование > Интеграция).';

View file

@ -27,6 +27,8 @@ $MESS ['ORDER_UPLOAD_INFO'] = 'Для загрузки всех заказов
$MESS ['INTEGRATION_PAYMENT_LIST'] = 'Для интеграционных оплат статус не передаётся';
$MESS ['INTEGRATIONS'] = ' (интеграционная)';
$MESS ['ERR_CURRENCY_SITES'] = 'Базовая валюта отличается от валюты магазина в CRM!';
$MESS ['ICRM_OPTIONS_SUBMIT_TITLE'] = 'Сохранить настройки';
$MESS ['ICRM_OPTIONS_SUBMIT_VALUE'] = 'Сохранить';

View file

@ -1061,6 +1061,15 @@ if (isset($_POST['Update']) && ($_POST['Update'] === 'Y')) {
$currencyOption = COption::GetOptionString($mid, $CRM_CURRENCY, 0) ?: $baseCurrency;
$currencyList = \Bitrix\Currency\CurrencyManager::getCurrencyList();
$errCurrency = null;
foreach ($arResult['sitesList'] as $site) {
if ($site['currency'] !== $baseCurrency) {
$errCurrency['site'] = ' (' . $site['name'] . ')';
$errCurrency['errorText'] = 'ERR_CURRENCY_SITES';
}
}
$customFields = [['code' => '__default_empty_value__', 'name' => GetMessage('SELECT_VALUE')]];
$crmCouponFieldOption = COption::GetOptionString($mid, $CRM_COUPON_FIELD, 0) ?: null;
$page = 1;
@ -1462,7 +1471,8 @@ if (isset($_POST['Update']) && ($_POST['Update'] === 'Y')) {
<tr class="heading">
<td colspan="2"><b><?php echo GetMessage('ICRM_CONN_SETTINGS'); ?></b></td>
</tr>
<tr>
<tr >
<td width="50%" class="adm-detail-content-cell-l"><?php echo GetMessage('ICRM_API_HOST'); ?></td>
<td width="50%" class="adm-detail-content-cell-r"><input type="text" id="api_host" name="api_host" value="<?php echo $api_host; ?>"></td>
</tr>
@ -1470,6 +1480,17 @@ if (isset($_POST['Update']) && ($_POST['Update'] === 'Y')) {
<td width="50%" class="adm-detail-content-cell-l"><?php echo GetMessage('ICRM_API_KEY'); ?></td>
<td width="50%" class="adm-detail-content-cell-r"><input type="text" id="api_key" name="api_key" value="<?php echo $api_key; ?>"></td>
</tr>
<?php if ($errCurrency): ?>
<tr align="center">
<td colspan="2">
<strong style="color:red" >
<?php echo GetMessage($errCurrency['errorText']) . $errCurrency['site']; ?>
</strong>
</td>
</tr>
<?php endif; ?>
<?php if (count($arResult['arSites']) > 1): ?>
<tr class="heading">
<td colspan="2" style="background-color: transparent;">