1
0
mirror of synced 2024-11-21 12:56:11 +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
- Исправлена критическая ошибка при переходе в настройки модуля

View File

@ -8,6 +8,7 @@ use Bitrix\Sale\Internals\Fields;
use Bitrix\Sale\Internals\OrderTable;
use Bitrix\Sale\Location\LocationTable;
use Bitrix\Sale\Order;
use Intaro\RetailCrm\Component\ApiClient\ClientAdapter;
use Intaro\RetailCrm\Component\Factory\ClientFactory;
use Intaro\RetailCrm\Component\ServiceLocator;
use Intaro\RetailCrm\Service\LoyaltyService;
@ -422,13 +423,14 @@ class RetailCrmOrder
Logger::getInstance()->write($order, 'orderSend');
/** @var \Intaro\RetailCrm\Component\ApiClient\ClientAdapter $client */
/** @var ClientAdapter $client */
$client = ClientFactory::createClientAdapter();
$userId = $arOrder['USER_ID'];
$arUser = UserTable::getById($userId)->fetch();
// 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];
if ($arUser['NAME'] !== '' && in_array($arUser['NAME'], $fioCrm)) {

View File

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

View File

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

View File

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