1
0
Fork 0
mirror of synced 2025-04-18 16:41:02 +00:00

fix for softlock when customer cannot be registered in loyalty

This commit is contained in:
Pavel 2021-11-09 15:49:46 +03:00
parent 13adda8e22
commit 866333d205
6 changed files with 66 additions and 4 deletions

View file

@ -8,6 +8,7 @@ $MESS["I_AM_AGREE"] = "Я согласен с условиями";
$MESS["UF_PD_PROC_PL_INTARO"] = "обработки персональных данных:";
$MESS["LP_CARD_NUMBER"] = "Номер карты программы лояльности";
$MESS["SEND"] = "Отправить";
$MESS["TRY_AGAIN"] = "Попробовать снова";
$MESS["VERIFICATION_CODE"] = "Код подтверждения";
$MESS["SEND_VERIFICATION_CODE"] = "Отправьте код подтверждения";
$MESS["REG_LP_MESSAGE"] = "Для завершения регистрации в программе лояльности введите номер телефона и номер карты программы лояльности";

View file

@ -35,6 +35,18 @@ function saveUserLpFields() {
);
}
function resetUserLpFields() {
BX.ajax.runAction('intaro:retailcrm.api.loyalty.register.resetUserLpFields').then(
function(response) {
if (response.data.result === true) {
location.reload();
} else {
$('#errMsg').text(response.data.msg)
}
}
);
}
function activateAccount() {
let checkboxes = [];
let numbers = [];

View file

@ -82,6 +82,10 @@ if ($arResult["SHOW_SMS_FIELD"] == true) {
<div id="lpRegMsg" class="lpRegMsg"><?=$arResult['LP_REGISTER']['msg']?></div>
<?php } ?>
<?php if (isset($arResult['LP_REGISTER']['form']['button']) && !isset($arResult['LP_REGISTER']['form']['fields'])) { ?>
<input type="button" onclick="<?=$arResult['LP_REGISTER']['form']['button']['action']?>()" value="<?=GetMessage('TRY_AGAIN')?>">
<?php } ?>
<?php
if (isset($arResult['LP_REGISTER']['form']['fields'])) { ?>
<div id="lpRegForm">
@ -220,4 +224,4 @@ if ($arResult["SHOW_SMS_FIELD"] == true) {
<?php else: ?>
<?=GetMessage('NOT_AUTHORIZED')?>
<?php endif; ?>
</div>
</div>

View file

@ -49,6 +49,42 @@ class Register extends Controller
new Authentication,
],
],
'resetUserLpFields' => [
'-prefilters' => [
new Authentication,
],
],
];
}
/**
* Сбрасывает информацию о регистрации пользователя в ПЛ. Позволяет пройти регистрацию заново.
*
* @return array
*/
public function resetUserLpFieldsAction(): array
{
global $USER_FIELD_MANAGER;
$customer = (new CurrentUserProvider())->get();
if ($customer === null) {
return [
'result' => false,
'msg' => GetMessage('NOT_REGISTER'),
];
}
$result = $USER_FIELD_MANAGER->Update('USER', $customer->getId(), [
'UF_CARD_NUM_INTARO' => '',
'UF_REG_IN_PL_INTARO' => false,
'UF_AGREE_PL_INTARO' => false,
'UF_PD_PROC_PL_INTARO' => false
]);
return [
'result' => $result,
'msg' => GetMessage('NOT_REGISTER'),
];
}

View file

@ -7,6 +7,7 @@ $MESS['SMS_VERIFICATION'] = 'Для активации аккаунта необ
$MESS['SEND'] = 'Отправить';
$MESS['COMPLETE_YOUR_REGISTRATION'] = 'Для завершения регистрации в Программе лояльности необходимо заполнить форму.';
$MESS['CREATE'] = 'Создать';
$MESS['TRY_AGAIN'] = 'Попробовать снова';
$MESS['INVITATION_TO_REGISTER'] = 'Для регистрации в Программе лояльности заполните форму.';
$MESS['REGISTER_ERROR'] = 'Ошибка регистрации в Программе лояльности';
$MESS['ACTIVATE_ERROR'] = 'Ошибка активации аккаунта в программе лояльности.';

View file

@ -230,6 +230,13 @@ class LoyaltyAccountService
header('Refresh 0');
}
if (isset($createResponse['error']) && $createResponse['error']) {
$createResponse['form']['button'] = [
'name' => GetMessage('TRY_AGAIN'),
'action' => 'resetUserLpFields'
];
}
return $createResponse;
}
@ -504,7 +511,7 @@ class LoyaltyAccountService
$errorMsg = Utils::getErrorMsg($createResponse);
if ($errorMsg !== null) {
return ['msg' => $errorMsg];
return ['msg' => $errorMsg, 'error' => true];
}
//Создать получилось, но аккаунт не активен
@ -515,13 +522,14 @@ class LoyaltyAccountService
&& isset($createResponse->loyaltyAccount->id)
) {
return [
'msg' => GetMessage('GO_TO_PERSONAL')
'msg' => GetMessage('GO_TO_PERSONAL'),
'error' => false
];
}
if ($createResponse !== null && $createResponse->success === true) {
//Повторная регистрация оказалась удачной
return ['msg' => GetMessage('REG_COMPLETE')];
return ['msg' => GetMessage('REG_COMPLETE'), 'error' => false];
}
return [];