1
0
Fork 0
mirror of synced 2025-04-20 01:21:01 +00:00

sprint-end commit

This commit is contained in:
Sergey Chazov 2020-10-23 18:46:42 +03:00
parent e2ba47ed13
commit 910aa28c4f
5 changed files with 122 additions and 81 deletions

View file

@ -74,3 +74,4 @@ $MESS["BONUS_CARD_NUMBER"] = "Номер карты лояльности (есл
$MESS["SUCCESS_PL_REG"] = "Вы успешно зарегистрировались в программе лояльности.";
$MESS["LP_FIELDS_NOT_EXIST"] = "Ошибка установки модуля ПЛ. Отсутствуют UF поля для USER";
$MESS["REG_LP_ERROR"] = "Ошибка регистрации в Программе лояльности";
$MESS["REGISTER_CONTINUE"] = "Для завершения регистрации в программе лояльности заполните форму.";

View file

@ -4,37 +4,29 @@ use Bitrix\Main\ArgumentException;
use Bitrix\Main\Loader;
use Bitrix\Main\ObjectPropertyException;
use Bitrix\Main\SystemException;
use Intaro\RetailCrm\Component\ConfigProvider;
use Intaro\RetailCrm\Repository\AgreementRepository;
use Intaro\RetailCrm\Service\LoyaltyService;
Loader::includeModule('intaro.retailcrm');
$arResult['LOYALTY_STATUS'] = ConfigProvider::getLoyaltyProgramStatus();
global $USER;
if($USER->IsAuthorized()){
$rsUser = CUser::GetByID($USER->GetID());
$arResult['USER_FIELDS'] = $rsUser->Fetch();
if (isset(
$arResult['USER_FIELDS']['UF_EXT_REG_PL_INTARO'],
$arResult['USER_FIELDS']['UF_AGREE_PL_INTARO'],
$arResult['USER_FIELDS']['UF_PD_PROC_PL_INTARO'],
$arResult['USER_FIELDS']['UF_EXT_REG_PL_INTARO'],
$arResult['USER_FIELDS']['UF_LP_ID_INTARO']
)) {
$arResult['LP_ERRORS'] = true;
AddMessage2Log(GetMessage('LP_FIELDS_NOT_EXIST'));
}else{
$arResult['LP_ERRORS'] = false;
}
//Активна ПЛ ?
if ($arResult['LOYALTY_STATUS'] === 'Y' && $USER->IsAuthorized()) {
$service = new LoyaltyService();
$arResult['LP_REGISTER'] = $service->checkRegInLp();
}
try {
$agreementPersonalData = AgreementRepository::getFirstByWhere(
$agreementPersonalData = AgreementRepository::getFirstByWhere(
['AGREEMENT_TEXT'],
[
['CODE', '=', 'AGREEMENT_PERSONAL_DATA_CODE'],
]
);
$agreementLoyaltyProgram = AgreementRepository::getFirstByWhere(
$agreementLoyaltyProgram = AgreementRepository::getFirstByWhere(
['AGREEMENT_TEXT'],
[
['CODE', '=', 'AGREEMENT_LOYALTY_PROGRAM_CODE'],

View file

@ -83,16 +83,18 @@ if($arResult["SHOW_SMS_FIELD"] == true)
<?if($USER->IsAuthorized()):?>
<p><?php echo GetMessage("MAIN_REGISTER_AUTH") ?></p>
<?php
$this->addExternalJs(SITE_TEMPLATE_PATH . '/script.js');
?>
<?php if ($arResult['LOYALTY_STATUS'] === 'Y'): ?>
<?php $this->addExternalJs(SITE_TEMPLATE_PATH . '/script.js'); ?>
<?php if ($arResult['LP_ERRORS']): ?>
<?=GetMessage('REG_LP_ERROR')?>
<?php else: ?>
<?php else: ?>
<!--елси регистрация в программе лояльности прошла успешно-->
<?php if (isset($arResult['USER_FIELDS']['UF_EXT_REG_PL_INTARO']) && $arResult['USER_FIELDS']['UF_EXT_REG_PL_INTARO'] === 1): ?>
<b><?=GetMessage('SUCCESS_PL_REG')?></b>
<?php elseif ((int)$arResult['USER_FIELDS']['UF_EXT_REG_PL_INTARO'] === 0): ?>
<?php elseif ((int)$arResult['USER_FIELDS']['UF_EXT_REG_PL_INTARO'] === 0): ?>
<div id="regbody">
<b><?=GetMessage('REG_LP_MESSAGE')?></b><br>
<input type="tel" id="loyaltyRegPhone" placeholder="+7 (900) 000-00-00">
@ -107,7 +109,9 @@ if($arResult["SHOW_SMS_FIELD"] == true)
</div>
<div id="msg"></div>
</div>
<?php endif; ?>
<?php endif; ?>
<?php endif; ?>
<?php endif; ?>
<?php else:?>
@ -306,59 +310,62 @@ document.getElementById('bx_auth_secure').style.display = 'inline-block';
array("bVarsFromForm" => $arResult["bVarsFromForm"], "arUserField" => $arUserField, "form_name" => "regform"), null, array("HIDE_ICONS"=>"Y"));?></td></tr>
<?endforeach;?>
<?endif;?>
<tr>
<td></td>
<td><div class="fields boolean" id="main_UF_REG_IN_PL_INTARO">
<div class="fields boolean">
<input type="hidden" value="0" name="UF_REG_IN_PL_INTARO">
<label>
<input type="checkbox" value="1" name="UF_REG_IN_PL_INTARO" onchange="lpFieldToggle()" id="checkbox_UF_REG_IN_PL_INTARO"> <?= GetMessage("UF_REG_IN_PL_INTARO")?>
</label>
<?php if ($arResult['LOYALTY_STATUS'] === 'Y'): ?>
<tr>
<td></td>
<td>
<div class="fields boolean" id="main_UF_REG_IN_PL_INTARO">
<div class="fields boolean">
<input type="hidden" value="0" name="UF_REG_IN_PL_INTARO">
<label>
<input type="checkbox" value="1" name="UF_REG_IN_PL_INTARO" onchange="lpFieldToggle()" id="checkbox_UF_REG_IN_PL_INTARO"> <?=GetMessage("UF_REG_IN_PL_INTARO")?>
</label>
</div>
</div>
</div>
</td>
</tr>
<tr class="lp_toggled_block" style="display: none">
<td><?= GetMessage("BONUS_CARD_NUMBER")?></td>
<td><input size="30" type="text" name="UF_CARD_NUM_INTARO" value=""></td>
</tr>
<tr class="lp_toggled_block" style="display: none">
<td>
<?= GetMessage("REGISTER_FIELD_PERSONAL_PHONE")?>
</td>
<td>
<input size="30" type="text" name="REGISTER[PERSONAL_PHONE]" value>
</td>
</tr>
<tr class="lp_toggled_block" style="display: none">
<td>
<div class="fields boolean" id="main_UF_AGREE_PL_INTARO">
<div class="fields boolean">
<input type="hidden" value="0" name="UF_AGREE_PL_INTARO">
<label>
<input class="lp_agree_checkbox" type="checkbox" value="1" name="UF_AGREE_PL_INTARO" > <?= GetMessage("YES")?>
</label>
</td>
</tr>
<tr class="lp_toggled_block" style="display: none">
<td><?=GetMessage("BONUS_CARD_NUMBER")?></td>
<td><input size="30" type="text" name="UF_CARD_NUM_INTARO" value=""></td>
</tr>
<tr class="lp_toggled_block" style="display: none">
<td>
<?=GetMessage("REGISTER_FIELD_PERSONAL_PHONE")?>
</td>
<td>
<input size="30" type="text" name="REGISTER[PERSONAL_PHONE]" value>
</td>
</tr>
<tr class="lp_toggled_block" style="display: none">
<td>
<div class="fields boolean" id="main_UF_AGREE_PL_INTARO">
<div class="fields boolean">
<input type="hidden" value="0" name="UF_AGREE_PL_INTARO">
<label>
<input class="lp_agree_checkbox" type="checkbox" value="1" name="UF_AGREE_PL_INTARO"> <?=GetMessage("YES")?>
</label>
</div>
</div>
</div>
</td>
<td>
<?= GetMessage("I_AM_AGREE")?> <a class="lp_agreement_link" href="javascript:void(0)" ><?= GetMessage("UF_AGREE_PL_INTARO")?></a>
</td>
</tr>
<tr class="lp_toggled_block" style="display: none">
<td>
<div class="fields boolean" id="main_UF_PD_PROC_PL_INTARO">
<div class="fields boolean"><input type="hidden" value="0" name="UF_PD_PROC_PL_INTARO">
<label>
<input class="lp_agree_checkbox" type="checkbox" value="1" name="UF_PD_PROC_PL_INTARO"> <?= GetMessage("YES")?>
</label>
</td>
<td>
<?=GetMessage("I_AM_AGREE")?> <a class="lp_agreement_link" href="javascript:void(0)"><?=GetMessage("UF_AGREE_PL_INTARO")?></a>
</td>
</tr>
<tr class="lp_toggled_block" style="display: none">
<td>
<div class="fields boolean" id="main_UF_PD_PROC_PL_INTARO">
<div class="fields boolean"><input type="hidden" value="0" name="UF_PD_PROC_PL_INTARO">
<label>
<input class="lp_agree_checkbox" type="checkbox" value="1" name="UF_PD_PROC_PL_INTARO"> <?=GetMessage("YES")?>
</label>
</div>
</div>
</div>
</td>
<td>
<?= GetMessage("I_AM_AGREE")?> <a class="personal_data_agreement_link" href="javascript:void(0)" ><?= GetMessage("UF_PD_PROC_PL_INTARO")?></a>
</td>
</tr>
</td>
<td>
<?=GetMessage("I_AM_AGREE")?> <a class="personal_data_agreement_link" href="javascript:void(0)"><?=GetMessage("UF_PD_PROC_PL_INTARO")?></a>
</td>
</tr>
<?php endif; ?>
<?// ******************** /User properties ***************************************************?>
<?
/* CAPTCHA */

View file

@ -19,12 +19,10 @@ use Bitrix\Main\Event;
use Bitrix\Main\HttpRequest;
use Bitrix\Main\ObjectPropertyException;
use Bitrix\Main\SystemException;
use Bitrix\Sale\Internals\PaymentTable;
use Bitrix\Sale\Order;
use Bitrix\Sale\PaySystem\Manager;
use Exception;
use Intaro\RetailCrm\Component\ConfigProvider;
use Intaro\RetailCrm\Model\Api\User;
use Intaro\RetailCrm\Repository\PaySystemActionRepository;
use Intaro\RetailCrm\Repository\UserRepository;
use Intaro\RetailCrm\Service\LoyaltyService;

View file

@ -10,6 +10,7 @@
* @link http://retailcrm.ru
* @see http://retailcrm.ru/docs
*/
namespace Intaro\RetailCrm\Service;
use Bitrix\Catalog\GroupTable;
@ -55,7 +56,7 @@ class LoyaltyService
{
global $USER;
$userFields = CUser::GetByID($USER->GetID())->Fetch();
return isset($userFields['UF_EXT_REG_PL_INTARO']) && $userFields['UF_EXT_REG_PL_INTARO'] === '1';
}
@ -75,7 +76,7 @@ class LoyaltyService
if (isset($result->errorMsg) && !empty($result->errorMsg)) {
AddMessage2Log($result->errorMsg);
}
return $result;
}
@ -101,7 +102,7 @@ class LoyaltyService
$request->order->discountManualPercent = $discountPercent;
}
/** @var \Intaro\RetailCrm\Component\ApiClient\ClientAdapter $client*/
/** @var \Intaro\RetailCrm\Component\ApiClient\ClientAdapter $client */
$client = ClientFactory::createClientAdapter();
$credentials = $client->getCredentials();
$request->site = $credentials->sitesAvailable[0];
@ -139,7 +140,7 @@ class LoyaltyService
}
$request->order->items[] = $product;
}
$result = $this->client->loyaltyCalculate($request);
if (isset($result->errorMsg) && !empty($result->errorMsg)) {
@ -148,4 +149,46 @@ class LoyaltyService
return $result;
}
//TODO реализовать этот проверки регистрации в ПЛ
/**
* @return array
*/
public function checkRegInLp(): array
{
global $USER;
$rsUser = CUser::GetByID($USER->GetID());
$userFields = $rsUser->Fetch();
$regInLp = [];
//Изъявлял ли ранее пользователь желание участвовать в ПЛ?
if (isset($userFields['UF_REG_IN_PL_INTARO'])
&& $userFields['UF_REG_IN_PL_INTARO'] === '1'
) {
//ДА. Существует ли у него аккаунт?
if (isset($userFields['UF_LP_ID_INTARO'])
&& $userFields['UF_LP_ID_INTARO'] === '1'
) {
//ДА. Активен ли его аккаунт?
if (isset($userFields['UF_EXT_REG_PL_INTARO'])
&& $userFields['UF_EXT_REG_PL_INTARO'] === '1'
) {
//ДА. Отображаем сообщение "Вы зарегистрированы в Программе лояльности"
$regInLp['msg'] = GetMessage('REG_COMPLETE');
} else {
//НЕТ. Отображаем форму для активации
$regInLp['msg'] = GetMessage('ACTIVATE_YOUR_ACCOUNT');
}
} else {
//НЕТ. Выясняем, каких полей не хватает для СОЗДАНИЯ аккаунта, выводим форму
$regInLp['msg'] = GetMessage('COMPLETE_YOUR_REGISTRATION');
}
} else {
//НЕТ. Отображаем форму на создание новой регистрации в ПЛ
$regInLp['msg'] = GetMessage('INVITATION_TO_REGISTER');
}
return $regInLp;
}
}