ref #93307 Исправлена ошибка с получением данных программы лояльности администратора при изменении заказа в админке (#327)
This commit is contained in:
parent
992162c01e
commit
e918317f6a
@ -1,3 +1,6 @@
|
||||
## 2023-12-13 v.6.4.13
|
||||
- Исправлена ошибка с получением данных программы лояльности администратора при изменении заказа в админке
|
||||
|
||||
## 2023-12-12 v.6.4.12
|
||||
- Исправлена критическая ошибка при переходе в настройки модуля
|
||||
|
||||
|
@ -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)) {
|
||||
|
@ -1 +1 @@
|
||||
- Исправлена критическая ошибка при переходе в настройки модуля
|
||||
- Исправлена ошибка с получением данных программы лояльности администратора при изменении заказа в админке
|
||||
|
@ -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'
|
||||
];
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user