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
|
## 2023-12-12 v.6.4.12
|
||||||
- Исправлена критическая ошибка при переходе в настройки модуля
|
- Исправлена критическая ошибка при переходе в настройки модуля
|
||||||
|
|
||||||
|
@ -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)) {
|
||||||
|
@ -1 +1 @@
|
|||||||
- Исправлена критическая ошибка при переходе в настройки модуля
|
- Исправлена ошибка с получением данных программы лояльности администратора при изменении заказа в админке
|
||||||
|
@ -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'
|
||||||
];
|
];
|
||||||
|
@ -211,13 +211,19 @@ class LoyaltyAccountService
|
|||||||
/**
|
/**
|
||||||
* Возвращает статус пользователя в системе лояльности
|
* Возвращает статус пользователя в системе лояльности
|
||||||
*
|
*
|
||||||
|
* @param $userId
|
||||||
|
*
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public static function getLoyaltyPersonalStatus(): bool
|
public static function getLoyaltyPersonalStatus($userId = null): bool
|
||||||
{
|
{
|
||||||
|
if ($userId === null) {
|
||||||
global $USER;
|
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);
|
||||||
|
Loading…
Reference in New Issue
Block a user