1
0
mirror of synced 2024-11-21 21:06:09 +03:00

ref #93307 Исправлена ошибка с получением данных программы лояльности администратора при изменении заказа в админке (#327)

This commit is contained in:
Uryvskiy Dima 2023-12-13 17:22:33 +03:00 committed by GitHub
parent 992162c01e
commit e918317f6a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 28 additions and 16 deletions

View File

@ -1,3 +1,6 @@
## 2023-12-13 v.6.4.13
- Исправлена ошибка с получением данных программы лояльности администратора при изменении заказа в админке
## 2023-12-12 v.6.4.12 ## 2023-12-12 v.6.4.12
- Исправлена критическая ошибка при переходе в настройки модуля - Исправлена критическая ошибка при переходе в настройки модуля

View File

@ -8,6 +8,7 @@ use Bitrix\Sale\Internals\Fields;
use Bitrix\Sale\Internals\OrderTable; use Bitrix\Sale\Internals\OrderTable;
use Bitrix\Sale\Location\LocationTable; use Bitrix\Sale\Location\LocationTable;
use Bitrix\Sale\Order; use Bitrix\Sale\Order;
use Intaro\RetailCrm\Component\ApiClient\ClientAdapter;
use Intaro\RetailCrm\Component\Factory\ClientFactory; use Intaro\RetailCrm\Component\Factory\ClientFactory;
use Intaro\RetailCrm\Component\ServiceLocator; use Intaro\RetailCrm\Component\ServiceLocator;
use Intaro\RetailCrm\Service\LoyaltyService; use Intaro\RetailCrm\Service\LoyaltyService;
@ -422,13 +423,14 @@ class RetailCrmOrder
Logger::getInstance()->write($order, 'orderSend'); Logger::getInstance()->write($order, 'orderSend');
/** @var \Intaro\RetailCrm\Component\ApiClient\ClientAdapter $client */ /** @var ClientAdapter $client */
$client = ClientFactory::createClientAdapter(); $client = ClientFactory::createClientAdapter();
$userId = $arOrder['USER_ID'];
$arUser = UserTable::getById($userId)->fetch();
// Check and set privilegeType // Check and set privilegeType
$order['privilegeType'] = LoyaltyAccountService::getPrivilegeType($client, $arParams); $order['privilegeType'] = LoyaltyAccountService::getPrivilegeType($client, $userId, $arParams);
$arUser = UserTable::getById($arOrder['USER_ID'])->fetch();
$fioCrm = [$order['firstName'] ?? null, $order['lastName'] ?? null, $order['patronymic'] ?? null]; $fioCrm = [$order['firstName'] ?? null, $order['lastName'] ?? null, $order['patronymic'] ?? null];
if ($arUser['NAME'] !== '' && in_array($arUser['NAME'], $fioCrm)) { if ($arUser['NAME'] !== '' && in_array($arUser['NAME'], $fioCrm)) {

View File

@ -1 +1 @@
- Исправлена критическая ошибка при переходе в настройки модуля - Исправлена ошибка с получением данных программы лояльности администратора при изменении заказа в админке

View File

@ -1,6 +1,6 @@
<?php <?php
$arModuleVersion = [ $arModuleVersion = [
'VERSION' => '6.4.12', 'VERSION' => '6.4.13',
'VERSION_DATE' => '2023-12-12 17:00:00' 'VERSION_DATE' => '2023-12-13 17:00:00'
]; ];

View File

@ -211,13 +211,19 @@ class LoyaltyAccountService
/** /**
* Возвращает статус пользователя в системе лояльности * Возвращает статус пользователя в системе лояльности
* *
* @param $userId
*
* @return bool * @return bool
*/ */
public static function getLoyaltyPersonalStatus(): bool public static function getLoyaltyPersonalStatus($userId = null): bool
{ {
global $USER; if ($userId === null) {
global $USER;
$userFields = CUser::GetByID($USER->GetID())->Fetch(); $userId = $USER->GetID();
}
$userFields = CUser::GetByID($userId)->Fetch();
return isset($userFields['UF_EXT_REG_PL_INTARO']) && $userFields['UF_EXT_REG_PL_INTARO'] === '1'; return isset($userFields['UF_EXT_REG_PL_INTARO']) && $userFields['UF_EXT_REG_PL_INTARO'] === '1';
} }
@ -225,13 +231,13 @@ class LoyaltyAccountService
/** /**
* Возвращает ID аккаунта в программе лояльности * Возвращает ID аккаунта в программе лояльности
* *
* @param $userId
*
* @return int|null * @return int|null
*/ */
public static function getLoyaltyAccountId(): ?int public static function getLoyaltyAccountId($userId): ?int
{ {
global $USER; $userFields = CUser::GetByID($userId)->Fetch();
$userFields = CUser::GetByID($USER->GetID())->Fetch();
return $userFields['UF_LP_ID_INTARO'] ?? null; return $userFields['UF_LP_ID_INTARO'] ?? null;
} }
@ -244,18 +250,19 @@ class LoyaltyAccountService
* 4. Программа лояльности деактивирована в CRM. * 4. Программа лояльности деактивирована в CRM.
* *
* @param $client * @param $client
* @param $userId
* @param array $arParams * @param array $arParams
* *
* @return string * @return string
*/ */
public static function getPrivilegeType($client, array $arParams = []): string public static function getPrivilegeType($client, $userId, array $arParams = []): string
{ {
$file = 'loyaltyStatus'; $file = 'loyaltyStatus';
$privilegeType = 'none'; $privilegeType = 'none';
if (!empty($arParams['customerCorporate']['privilegeType'])) { if (!empty($arParams['customerCorporate']['privilegeType'])) {
$privilegeType = $arParams['crmOrder']['privilegeType']; $privilegeType = $arParams['crmOrder']['privilegeType'];
} elseif (ConfigProvider::getLoyaltyProgramStatus() === 'Y' && self::getLoyaltyPersonalStatus()) { } elseif (ConfigProvider::getLoyaltyProgramStatus() === 'Y' && self::getLoyaltyPersonalStatus($userId)) {
$privilegeType = 'loyalty_level'; $privilegeType = 'loyalty_level';
} }
@ -267,7 +274,7 @@ class LoyaltyAccountService
return 'none'; return 'none';
} }
$loyaltyAccountId = self::getLoyaltyAccountId(); $loyaltyAccountId = self::getLoyaltyAccountId($userId);
if ($loyaltyAccountId === null) { if ($loyaltyAccountId === null) {
Logger::getInstance()->write('Участие клиента не найдено', $file); Logger::getInstance()->write('Участие клиента не найдено', $file);