parent
4f438b6f0f
commit
0a6c409e11
@ -1,3 +1,6 @@
|
|||||||
|
## 2023-08-31 v.6.4.4
|
||||||
|
- Исправлены ошибки при работе с программой лояльности
|
||||||
|
|
||||||
## 2023-08-29 v.6.4.3
|
## 2023-08-29 v.6.4.3
|
||||||
- Добавлена валидация валют при установке и настройке модуля
|
- Добавлена валидация валют при установке и настройке модуля
|
||||||
|
|
||||||
|
@ -310,11 +310,11 @@ class ApiClient
|
|||||||
* @param string $by (default: 'externalId')
|
* @param string $by (default: 'externalId')
|
||||||
* @param string $site (default: null)
|
* @param string $site (default: null)
|
||||||
*
|
*
|
||||||
|
* @return ApiResponse
|
||||||
* @throws \InvalidArgumentException
|
* @throws \InvalidArgumentException
|
||||||
* @throws \RetailCrm\Exception\CurlException
|
* @throws \RetailCrm\Exception\CurlException
|
||||||
* @throws \RetailCrm\Exception\InvalidJsonException
|
* @throws \RetailCrm\Exception\InvalidJsonException
|
||||||
*
|
*
|
||||||
* @return \RetailCrm\Response\ApiResponse
|
|
||||||
*/
|
*/
|
||||||
public function customersCorporateCompanies(
|
public function customersCorporateCompanies(
|
||||||
$id,
|
$id,
|
||||||
@ -371,7 +371,7 @@ class ApiClient
|
|||||||
* @param string $by (default: 'externalId')
|
* @param string $by (default: 'externalId')
|
||||||
* @param string $site (default: null)
|
* @param string $site (default: null)
|
||||||
*
|
*
|
||||||
* @return \RetailCrm\Response\ApiResponse
|
* @return ApiResponse
|
||||||
* @throws \RetailCrm\Exception\CurlException
|
* @throws \RetailCrm\Exception\CurlException
|
||||||
* @throws \RetailCrm\Exception\InvalidJsonException
|
* @throws \RetailCrm\Exception\InvalidJsonException
|
||||||
*
|
*
|
||||||
@ -403,11 +403,11 @@ class ApiClient
|
|||||||
* @param string $by (default: 'externalId')
|
* @param string $by (default: 'externalId')
|
||||||
* @param string $site (default: null)
|
* @param string $site (default: null)
|
||||||
*
|
*
|
||||||
|
* @return ApiResponse
|
||||||
* @throws \InvalidArgumentException
|
* @throws \InvalidArgumentException
|
||||||
* @throws \RetailCrm\Exception\CurlException
|
* @throws \RetailCrm\Exception\CurlException
|
||||||
* @throws \RetailCrm\Exception\InvalidJsonException
|
* @throws \RetailCrm\Exception\InvalidJsonException
|
||||||
*
|
*
|
||||||
* @return \RetailCrm\Response\ApiResponse
|
|
||||||
*/
|
*/
|
||||||
public function customersCorporateContacts(
|
public function customersCorporateContacts(
|
||||||
$id,
|
$id,
|
||||||
@ -443,11 +443,11 @@ class ApiClient
|
|||||||
* @param int $page (default: null)
|
* @param int $page (default: null)
|
||||||
* @param int $limit (default: null)
|
* @param int $limit (default: null)
|
||||||
*
|
*
|
||||||
* @throws \InvalidArgumentException
|
* @return ApiResponse
|
||||||
* @throws \RetailCrm\Exception\CurlException
|
* @throws \RetailCrm\Exception\CurlException
|
||||||
* @throws \RetailCrm\Exception\InvalidJsonException
|
* @throws \RetailCrm\Exception\InvalidJsonException
|
||||||
*
|
*
|
||||||
* @return \RetailCrm\Response\ApiResponse
|
* @throws \InvalidArgumentException
|
||||||
*/
|
*/
|
||||||
public function customersCorporateList(array $filter = [], $page = null, $limit = null)
|
public function customersCorporateList(array $filter = [], $page = null, $limit = null)
|
||||||
{
|
{
|
||||||
@ -476,11 +476,11 @@ class ApiClient
|
|||||||
* @param int $page (default: null)
|
* @param int $page (default: null)
|
||||||
* @param int $limit (default: null)
|
* @param int $limit (default: null)
|
||||||
*
|
*
|
||||||
* @throws \InvalidArgumentException
|
* @return ApiResponse
|
||||||
* @throws \RetailCrm\Exception\CurlException
|
* @throws \RetailCrm\Exception\CurlException
|
||||||
* @throws \RetailCrm\Exception\InvalidJsonException
|
* @throws \RetailCrm\Exception\InvalidJsonException
|
||||||
*
|
*
|
||||||
* @return \RetailCrm\Response\ApiResponse
|
* @throws \InvalidArgumentException
|
||||||
*/
|
*/
|
||||||
public function customersCorporateNotesList(array $filter = [], $page = null, $limit = null)
|
public function customersCorporateNotesList(array $filter = [], $page = null, $limit = null)
|
||||||
{
|
{
|
||||||
@ -508,11 +508,11 @@ class ApiClient
|
|||||||
* @param array $note (default: array())
|
* @param array $note (default: array())
|
||||||
* @param string $site (default: null)
|
* @param string $site (default: null)
|
||||||
*
|
*
|
||||||
* @throws \InvalidArgumentException
|
* @return ApiResponse
|
||||||
* @throws \RetailCrm\Exception\CurlException
|
* @throws \RetailCrm\Exception\CurlException
|
||||||
* @throws \RetailCrm\Exception\InvalidJsonException
|
* @throws \RetailCrm\Exception\InvalidJsonException
|
||||||
*
|
*
|
||||||
* @return \RetailCrm\Response\ApiResponse
|
* @throws \InvalidArgumentException
|
||||||
*/
|
*/
|
||||||
public function customersCorporateNotesCreate($note, $site = null)
|
public function customersCorporateNotesCreate($note, $site = null)
|
||||||
{
|
{
|
||||||
@ -534,11 +534,11 @@ class ApiClient
|
|||||||
*
|
*
|
||||||
* @param integer $id
|
* @param integer $id
|
||||||
*
|
*
|
||||||
* @throws \InvalidArgumentException
|
* @return ApiResponse
|
||||||
* @throws \RetailCrm\Exception\CurlException
|
* @throws \RetailCrm\Exception\CurlException
|
||||||
* @throws \RetailCrm\Exception\InvalidJsonException
|
* @throws \RetailCrm\Exception\InvalidJsonException
|
||||||
*
|
*
|
||||||
* @return \RetailCrm\Response\ApiResponse
|
* @throws \InvalidArgumentException
|
||||||
*/
|
*/
|
||||||
public function customersCorporateNotesDelete($id)
|
public function customersCorporateNotesDelete($id)
|
||||||
{
|
{
|
||||||
@ -564,11 +564,11 @@ class ApiClient
|
|||||||
* @param string $by (default: 'externalId')
|
* @param string $by (default: 'externalId')
|
||||||
* @param string $site (default: null)
|
* @param string $site (default: null)
|
||||||
*
|
*
|
||||||
|
* @return ApiResponse
|
||||||
* @throws \InvalidArgumentException
|
* @throws \InvalidArgumentException
|
||||||
* @throws \RetailCrm\Exception\CurlException
|
* @throws \RetailCrm\Exception\CurlException
|
||||||
* @throws \RetailCrm\Exception\InvalidJsonException
|
* @throws \RetailCrm\Exception\InvalidJsonException
|
||||||
*
|
*
|
||||||
* @return \RetailCrm\Response\ApiResponse
|
|
||||||
*/
|
*/
|
||||||
public function customersCorporateAddresses(
|
public function customersCorporateAddresses(
|
||||||
$id,
|
$id,
|
||||||
@ -605,7 +605,7 @@ class ApiClient
|
|||||||
* @param string $by (default: 'externalId')
|
* @param string $by (default: 'externalId')
|
||||||
* @param null $site (default: null)
|
* @param null $site (default: null)
|
||||||
*
|
*
|
||||||
* @return \RetailCrm\Response\ApiResponse
|
* @return ApiResponse
|
||||||
*/
|
*/
|
||||||
public function customersCorporateAddressesCreate($id, array $address = [], $by = 'externalId', $site = null): ApiResponse
|
public function customersCorporateAddressesCreate($id, array $address = [], $by = 'externalId', $site = null): ApiResponse
|
||||||
{
|
{
|
||||||
@ -626,11 +626,11 @@ class ApiClient
|
|||||||
* @param string $addressBy (default: 'externalId')
|
* @param string $addressBy (default: 'externalId')
|
||||||
* @param string $site (default: null)
|
* @param string $site (default: null)
|
||||||
*
|
*
|
||||||
|
* @return ApiResponse
|
||||||
* @throws \InvalidArgumentException
|
* @throws \InvalidArgumentException
|
||||||
* @throws \RetailCrm\Exception\CurlException
|
* @throws \RetailCrm\Exception\CurlException
|
||||||
* @throws \RetailCrm\Exception\InvalidJsonException
|
* @throws \RetailCrm\Exception\InvalidJsonException
|
||||||
*
|
*
|
||||||
* @return \RetailCrm\Response\ApiResponse
|
|
||||||
*/
|
*/
|
||||||
public function customersCorporateAddressesEdit(
|
public function customersCorporateAddressesEdit(
|
||||||
$customerId,
|
$customerId,
|
||||||
@ -670,11 +670,11 @@ class ApiClient
|
|||||||
* @param string $by (default: 'externalId')
|
* @param string $by (default: 'externalId')
|
||||||
* @param string $site (default: null)
|
* @param string $site (default: null)
|
||||||
*
|
*
|
||||||
* @throws \InvalidArgumentException
|
* @return ApiResponse
|
||||||
* @throws \RetailCrm\Exception\CurlException
|
* @throws \RetailCrm\Exception\CurlException
|
||||||
* @throws \RetailCrm\Exception\InvalidJsonException
|
* @throws \RetailCrm\Exception\InvalidJsonException
|
||||||
*
|
*
|
||||||
* @return \RetailCrm\Response\ApiResponse
|
* @throws \InvalidArgumentException
|
||||||
*/
|
*/
|
||||||
public function customersCorporateCompaniesCreate($id, array $company = [], $by = 'externalId', $site = null)
|
public function customersCorporateCompaniesCreate($id, array $company = [], $by = 'externalId', $site = null)
|
||||||
{
|
{
|
||||||
@ -696,7 +696,7 @@ class ApiClient
|
|||||||
* @param string $companyBy (default: 'externalId')
|
* @param string $companyBy (default: 'externalId')
|
||||||
* @param string $site (default: null)
|
* @param string $site (default: null)
|
||||||
*
|
*
|
||||||
* @return \RetailCrm\Response\ApiResponse
|
* @return ApiResponse
|
||||||
* @throws \InvalidArgumentException
|
* @throws \InvalidArgumentException
|
||||||
* @throws \RetailCrm\Exception\CurlException
|
* @throws \RetailCrm\Exception\CurlException
|
||||||
* @throws \RetailCrm\Exception\InvalidJsonException
|
* @throws \RetailCrm\Exception\InvalidJsonException
|
||||||
@ -732,7 +732,7 @@ class ApiClient
|
|||||||
* @param string $contactBy (default: 'externalId')
|
* @param string $contactBy (default: 'externalId')
|
||||||
* @param string $site (default: null)
|
* @param string $site (default: null)
|
||||||
*
|
*
|
||||||
* @return \RetailCrm\Response\ApiResponse
|
* @return ApiResponse
|
||||||
* @throws \InvalidArgumentException
|
* @throws \InvalidArgumentException
|
||||||
* @throws \RetailCrm\Exception\CurlException
|
* @throws \RetailCrm\Exception\CurlException
|
||||||
* @throws \RetailCrm\Exception\InvalidJsonException
|
* @throws \RetailCrm\Exception\InvalidJsonException
|
||||||
@ -765,7 +765,7 @@ class ApiClient
|
|||||||
* @param string $by (default: 'externalId')
|
* @param string $by (default: 'externalId')
|
||||||
* @param null $site (default: null)
|
* @param null $site (default: null)
|
||||||
*
|
*
|
||||||
* @return \RetailCrm\Response\ApiResponse
|
* @return ApiResponse
|
||||||
*/
|
*/
|
||||||
public function customersCorporateEdit(
|
public function customersCorporateEdit(
|
||||||
array $params,
|
array $params,
|
||||||
@ -2883,7 +2883,8 @@ class ApiClient
|
|||||||
/**
|
/**
|
||||||
* @param array $request
|
* @param array $request
|
||||||
* @param int $checkId
|
* @param int $checkId
|
||||||
* @return \RetailCrm\Response\ApiResponse
|
*
|
||||||
|
* @return ApiResponse
|
||||||
* @throws \RetailCrm\Exception\CurlException
|
* @throws \RetailCrm\Exception\CurlException
|
||||||
*/
|
*/
|
||||||
public function checkStatusPlVerification(array $request, int $checkId): ApiResponse
|
public function checkStatusPlVerification(array $request, int $checkId): ApiResponse
|
||||||
@ -2897,7 +2898,8 @@ class ApiClient
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array $request
|
* @param array $request
|
||||||
* @return \RetailCrm\Response\ApiResponse
|
*
|
||||||
|
* @return ApiResponse
|
||||||
* @throws \RetailCrm\Exception\CurlException
|
* @throws \RetailCrm\Exception\CurlException
|
||||||
*/
|
*/
|
||||||
public function loyaltyOrderApply(array $request): ApiResponse
|
public function loyaltyOrderApply(array $request): ApiResponse
|
||||||
@ -2915,7 +2917,8 @@ class ApiClient
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array $request
|
* @param array $request
|
||||||
* @return \RetailCrm\Response\ApiResponse
|
*
|
||||||
|
* @return ApiResponse
|
||||||
* @throws \RetailCrm\Exception\CurlException
|
* @throws \RetailCrm\Exception\CurlException
|
||||||
*/
|
*/
|
||||||
public function loyaltyOrderCalculate(array $request): ApiResponse
|
public function loyaltyOrderCalculate(array $request): ApiResponse
|
||||||
@ -2932,7 +2935,7 @@ class ApiClient
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return \RetailCrm\Response\ApiResponse
|
* @return ApiResponse
|
||||||
* @throws \RetailCrm\Exception\CurlException
|
* @throws \RetailCrm\Exception\CurlException
|
||||||
*/
|
*/
|
||||||
public function getCredentials(): ApiResponse
|
public function getCredentials(): ApiResponse
|
||||||
@ -2945,7 +2948,8 @@ class ApiClient
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array $request
|
* @param array $request
|
||||||
* @return \RetailCrm\Response\ApiResponse
|
*
|
||||||
|
* @return ApiResponse
|
||||||
* @throws \RetailCrm\Exception\CurlException
|
* @throws \RetailCrm\Exception\CurlException
|
||||||
*/
|
*/
|
||||||
public function createLoyaltyAccount(array $request): ApiResponse
|
public function createLoyaltyAccount(array $request): ApiResponse
|
||||||
@ -2962,7 +2966,8 @@ class ApiClient
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param int $loyaltyId
|
* @param int $loyaltyId
|
||||||
* @return \RetailCrm\Response\ApiResponse
|
*
|
||||||
|
* @return ApiResponse
|
||||||
* @throws \RetailCrm\Exception\CurlException
|
* @throws \RetailCrm\Exception\CurlException
|
||||||
*/
|
*/
|
||||||
public function activateLoyaltyAccount(int $loyaltyId): ApiResponse
|
public function activateLoyaltyAccount(int $loyaltyId): ApiResponse
|
||||||
@ -2975,7 +2980,8 @@ class ApiClient
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array $request
|
* @param array $request
|
||||||
* @return \RetailCrm\Response\ApiResponse
|
*
|
||||||
|
* @return ApiResponse
|
||||||
* @throws \RetailCrm\Exception\CurlException
|
* @throws \RetailCrm\Exception\CurlException
|
||||||
*/
|
*/
|
||||||
public function sendVerificationCode(array $request): ApiResponse
|
public function sendVerificationCode(array $request): ApiResponse
|
||||||
@ -2991,7 +2997,8 @@ class ApiClient
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array $request
|
* @param array $request
|
||||||
* @return \RetailCrm\Response\ApiResponse
|
*
|
||||||
|
* @return ApiResponse
|
||||||
* @throws \RetailCrm\Exception\CurlException
|
* @throws \RetailCrm\Exception\CurlException
|
||||||
*/
|
*/
|
||||||
public function getLoyaltyAccounts(array $request): ApiResponse
|
public function getLoyaltyAccounts(array $request): ApiResponse
|
||||||
@ -3005,7 +3012,8 @@ class ApiClient
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param int $loyaltyId
|
* @param int $loyaltyId
|
||||||
* @return \RetailCrm\Response\ApiResponse
|
*
|
||||||
|
* @return ApiResponse
|
||||||
* @throws \RetailCrm\Exception\CurlException
|
* @throws \RetailCrm\Exception\CurlException
|
||||||
*/
|
*/
|
||||||
public function getLoyaltyLoyalty(int $loyaltyId): ApiResponse
|
public function getLoyaltyLoyalty(int $loyaltyId): ApiResponse
|
||||||
@ -3017,7 +3025,7 @@ class ApiClient
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return \RetailCrm\Response\ApiResponse
|
* @return ApiResponse
|
||||||
* @throws \RetailCrm\Exception\CurlException
|
* @throws \RetailCrm\Exception\CurlException
|
||||||
*/
|
*/
|
||||||
public function getLoyaltyLoyalties(): ApiResponse
|
public function getLoyaltyLoyalties(): ApiResponse
|
||||||
@ -3028,11 +3036,21 @@ class ApiClient
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param int $accountId
|
||||||
|
*
|
||||||
|
* @return ApiResponse
|
||||||
|
*/
|
||||||
|
public function getLoyaltyAccount(int $accountId): ApiResponse
|
||||||
|
{
|
||||||
|
return $this->client->makeRequest('/loyalty/account/' . $accountId, Client::METHOD_GET);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array $request
|
* @param array $request
|
||||||
* @param int $accountId
|
* @param int $accountId
|
||||||
*
|
*
|
||||||
* @return \RetailCrm\Response\ApiResponse
|
* @return ApiResponse
|
||||||
* @throws \RetailCrm\Exception\CurlException
|
* @throws \RetailCrm\Exception\CurlException
|
||||||
*/
|
*/
|
||||||
public function editLoyaltyAccount(array $request, int $accountId): ApiResponse
|
public function editLoyaltyAccount(array $request, int $accountId): ApiResponse
|
||||||
@ -3049,7 +3067,7 @@ class ApiClient
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array $request
|
* @param array $request
|
||||||
* @return \RetailCrm\Response\ApiResponse
|
* @return ApiResponse
|
||||||
* @throws \RetailCrm\Exception\CurlException
|
* @throws \RetailCrm\Exception\CurlException
|
||||||
*/
|
*/
|
||||||
protected function confirmLpVerificationBySMS(array $request): ApiResponse
|
protected function confirmLpVerificationBySMS(array $request): ApiResponse
|
||||||
@ -3063,7 +3081,7 @@ class ApiClient
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array $request
|
* @param array $request
|
||||||
* @return \RetailCrm\Response\ApiResponse
|
* @return ApiResponse
|
||||||
* @throws \RetailCrm\Exception\CurlException
|
* @throws \RetailCrm\Exception\CurlException
|
||||||
*/
|
*/
|
||||||
public function sendSmsForLpVerification(array $request): ApiResponse
|
public function sendSmsForLpVerification(array $request): ApiResponse
|
||||||
|
@ -391,14 +391,6 @@ class RetailCrmOrder
|
|||||||
$order['payments'] = $payments;
|
$order['payments'] = $payments;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($arParams['crmOrder']['privilegeType'])) {
|
|
||||||
$order['privilegeType'] = $arParams['crmOrder']['privilegeType'];
|
|
||||||
} elseif (ConfigProvider::getLoyaltyProgramStatus() === 'Y' && LoyaltyAccountService::getLoyaltyPersonalStatus()) {
|
|
||||||
$order['privilegeType'] = 'loyalty_level';
|
|
||||||
} else {
|
|
||||||
$order['privilegeType'] = 'none';
|
|
||||||
}
|
|
||||||
|
|
||||||
//send
|
//send
|
||||||
if (function_exists('retailCrmBeforeOrderSend')) {
|
if (function_exists('retailCrmBeforeOrderSend')) {
|
||||||
$newResOrder = retailCrmBeforeOrderSend($order, $arOrder);
|
$newResOrder = retailCrmBeforeOrderSend($order, $arOrder);
|
||||||
@ -427,6 +419,9 @@ class RetailCrmOrder
|
|||||||
/** @var \Intaro\RetailCrm\Component\ApiClient\ClientAdapter $client */
|
/** @var \Intaro\RetailCrm\Component\ApiClient\ClientAdapter $client */
|
||||||
$client = ClientFactory::createClientAdapter();
|
$client = ClientFactory::createClientAdapter();
|
||||||
|
|
||||||
|
// Check and set privilegeType
|
||||||
|
$order['privilegeType'] = LoyaltyAccountService::getPrivilegeType($client, $arParams);
|
||||||
|
|
||||||
if ($send) {
|
if ($send) {
|
||||||
if ($methodApi === 'ordersCreate') {
|
if ($methodApi === 'ordersCreate') {
|
||||||
if (isset($arParams['customerCorporate']) && !empty($order['contact']['externalId'])) {
|
if (isset($arParams['customerCorporate']) && !empty($order['contact']['externalId'])) {
|
||||||
|
@ -1 +1 @@
|
|||||||
- Добавлена валидация валют при установке и настройке модуля
|
- Исправлены ошибки при работе с программой лояльности
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
$arModuleVersion = [
|
$arModuleVersion = [
|
||||||
'VERSION' => '6.4.3',
|
'VERSION' => '6.4.4',
|
||||||
'VERSION_DATE' => '2023-08-29 16:00:00'
|
'VERSION_DATE' => '2023-09-01 10:00:00'
|
||||||
];
|
];
|
||||||
|
@ -20,7 +20,8 @@ use Intaro\RetailCrm\Model\Api\Request\Loyalty\Account\LoyaltyAccountCreateReque
|
|||||||
use Intaro\RetailCrm\Model\Api\Request\Loyalty\Account\LoyaltyAccountEditRequest;
|
use Intaro\RetailCrm\Model\Api\Request\Loyalty\Account\LoyaltyAccountEditRequest;
|
||||||
use Intaro\RetailCrm\Model\Api\Request\Loyalty\Account\LoyaltyAccountRequest;
|
use Intaro\RetailCrm\Model\Api\Request\Loyalty\Account\LoyaltyAccountRequest;
|
||||||
use Intaro\RetailCrm\Model\Api\Response\Loyalty\Account\LoyaltyAccountEditResponse;
|
use Intaro\RetailCrm\Model\Api\Response\Loyalty\Account\LoyaltyAccountEditResponse;
|
||||||
use Intaro\RetailCrm\Model\Api\Response\Loyalty\Account\LoyaltyAccountResponse;
|
use Intaro\RetailCrm\Model\Api\Response\Loyalty\Account\LoyaltyAccountGetResponse;
|
||||||
|
use Intaro\RetailCrm\Model\Api\Response\Loyalty\Account\LoyaltyAccountsResponse;
|
||||||
use Intaro\RetailCrm\Model\Api\Request\Loyalty\LoyaltyCalculateRequest;
|
use Intaro\RetailCrm\Model\Api\Request\Loyalty\LoyaltyCalculateRequest;
|
||||||
use Intaro\RetailCrm\Model\Api\Request\Order\Loyalty\OrderLoyaltyApplyRequest;
|
use Intaro\RetailCrm\Model\Api\Request\Order\Loyalty\OrderLoyaltyApplyRequest;
|
||||||
use Intaro\RetailCrm\Model\Api\Request\SmsVerification\SmsVerificationConfirmRequest;
|
use Intaro\RetailCrm\Model\Api\Request\SmsVerification\SmsVerificationConfirmRequest;
|
||||||
@ -33,7 +34,7 @@ use Intaro\RetailCrm\Model\Api\Response\Order\Loyalty\OrderLoyaltyApplyResponse;
|
|||||||
use Intaro\RetailCrm\Model\Api\Response\SmsVerification\SmsVerificationConfirmResponse;
|
use Intaro\RetailCrm\Model\Api\Response\SmsVerification\SmsVerificationConfirmResponse;
|
||||||
use Intaro\RetailCrm\Model\Api\Response\SmsVerification\SmsVerificationStatusRequest;
|
use Intaro\RetailCrm\Model\Api\Response\SmsVerification\SmsVerificationStatusRequest;
|
||||||
use Intaro\RetailCrm\Model\Api\Response\SmsVerification\SmsVerificationStatusResponse;
|
use Intaro\RetailCrm\Model\Api\Response\SmsVerification\SmsVerificationStatusResponse;
|
||||||
use RetailCrm\Response\ApiResponse;
|
use ReflectionException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Trait LoyaltyTrait
|
* Trait LoyaltyTrait
|
||||||
@ -42,8 +43,10 @@ use RetailCrm\Response\ApiResponse;
|
|||||||
trait LoyaltyTrait
|
trait LoyaltyTrait
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @param \Intaro\RetailCrm\Model\Api\Response\SmsVerification\SmsVerificationStatusRequest $request
|
* @param SmsVerificationStatusRequest $request
|
||||||
* @return \Intaro\RetailCrm\Model\Api\Response\SmsVerification\SmsVerificationStatusResponse|null
|
*
|
||||||
|
* @return SmsVerificationStatusResponse|null
|
||||||
|
* @throws ReflectionException
|
||||||
*/
|
*/
|
||||||
public function checkStatusPlVerification(SmsVerificationStatusRequest $request): ?SmsVerificationStatusResponse
|
public function checkStatusPlVerification(SmsVerificationStatusRequest $request): ?SmsVerificationStatusResponse
|
||||||
{
|
{
|
||||||
@ -54,8 +57,10 @@ trait LoyaltyTrait
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param \Intaro\RetailCrm\Model\Api\Request\Order\Loyalty\OrderLoyaltyApplyRequest $request
|
* @param OrderLoyaltyApplyRequest $request
|
||||||
* @return mixed
|
*
|
||||||
|
* @return OrderLoyaltyApplyResponse|null
|
||||||
|
* @throws ReflectionException
|
||||||
*/
|
*/
|
||||||
public function loyaltyOrderApply(OrderLoyaltyApplyRequest $request): ?OrderLoyaltyApplyResponse
|
public function loyaltyOrderApply(OrderLoyaltyApplyRequest $request): ?OrderLoyaltyApplyResponse
|
||||||
{
|
{
|
||||||
@ -66,8 +71,10 @@ trait LoyaltyTrait
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param \Intaro\RetailCrm\Model\Api\Request\Loyalty\LoyaltyCalculateRequest $request
|
* @param LoyaltyCalculateRequest $request
|
||||||
* @return mixed
|
*
|
||||||
|
* @return LoyaltyCalculateResponse|null
|
||||||
|
* @throws ReflectionException
|
||||||
*/
|
*/
|
||||||
public function loyaltyCalculate(LoyaltyCalculateRequest $request): ?LoyaltyCalculateResponse
|
public function loyaltyCalculate(LoyaltyCalculateRequest $request): ?LoyaltyCalculateResponse
|
||||||
{
|
{
|
||||||
@ -78,8 +85,36 @@ trait LoyaltyTrait
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param \Intaro\RetailCrm\Model\Api\Request\Loyalty\Account\LoyaltyAccountCreateRequest $request
|
* @param int $accountId
|
||||||
* @return \Intaro\RetailCrm\Model\Api\Response\Loyalty\Account\LoyaltyAccountCreateResponse|null
|
*
|
||||||
|
* @return LoyaltyAccountGetResponse|null
|
||||||
|
*/
|
||||||
|
public function getLoyaltyAccount(int $accountId): ?LoyaltyAccountGetResponse
|
||||||
|
{
|
||||||
|
$response = $this->client->getLoyaltyAccount($accountId);
|
||||||
|
|
||||||
|
return Deserializer::deserializeArray($response->getResponseBody(), LoyaltyAccountGetResponse::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param LoyaltyAccountRequest $request
|
||||||
|
*
|
||||||
|
* @return LoyaltyAccountsResponse|null
|
||||||
|
* @throws ReflectionException
|
||||||
|
*/
|
||||||
|
public function getLoyaltyAccounts(LoyaltyAccountRequest $request): ?LoyaltyAccountsResponse
|
||||||
|
{
|
||||||
|
$serialized = Serializer::serializeArray($request);
|
||||||
|
$response = $this->client->getLoyaltyAccounts($serialized);
|
||||||
|
|
||||||
|
return Deserializer::deserializeArray($response->getResponseBody(), LoyaltyAccountsResponse::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param LoyaltyAccountCreateRequest $request
|
||||||
|
*
|
||||||
|
* @return LoyaltyAccountCreateResponse|null
|
||||||
|
* @throws ReflectionException
|
||||||
*/
|
*/
|
||||||
public function createLoyaltyAccount(LoyaltyAccountCreateRequest $request): ?LoyaltyAccountCreateResponse
|
public function createLoyaltyAccount(LoyaltyAccountCreateRequest $request): ?LoyaltyAccountCreateResponse
|
||||||
{
|
{
|
||||||
@ -90,8 +125,24 @@ trait LoyaltyTrait
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param \Intaro\RetailCrm\Model\Api\Request\Loyalty\Account\LoyaltyAccountActivateRequest $request
|
* @param LoyaltyAccountEditRequest $request
|
||||||
* @return \Intaro\RetailCrm\Model\Api\Response\Loyalty\Account\LoyaltyAccountActivateResponse|null
|
*
|
||||||
|
* @return LoyaltyAccountEditResponse|null
|
||||||
|
* @throws ReflectionException
|
||||||
|
*/
|
||||||
|
public function editLoyaltyAccount(LoyaltyAccountEditRequest $request): ?LoyaltyAccountEditResponse
|
||||||
|
{
|
||||||
|
$serialized = Serializer::serializeArray($request);
|
||||||
|
$response = $this->client->editLoyaltyAccount($serialized, $request->id);
|
||||||
|
|
||||||
|
return Deserializer::deserializeArray($response->getResponseBody(), LoyaltyAccountEditResponse::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param LoyaltyAccountActivateRequest $request
|
||||||
|
*
|
||||||
|
* @return LoyaltyAccountActivateResponse|null
|
||||||
|
* @throws ReflectionException
|
||||||
*/
|
*/
|
||||||
public function activateLoyaltyAccount(LoyaltyAccountActivateRequest $request): ?LoyaltyAccountActivateResponse
|
public function activateLoyaltyAccount(LoyaltyAccountActivateRequest $request): ?LoyaltyAccountActivateResponse
|
||||||
{
|
{
|
||||||
@ -101,9 +152,12 @@ trait LoyaltyTrait
|
|||||||
return Deserializer::deserializeArray($response->getResponseBody(), LoyaltyAccountActivateResponse::class);
|
return Deserializer::deserializeArray($response->getResponseBody(), LoyaltyAccountActivateResponse::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param \Intaro\RetailCrm\Model\Api\Request\SmsVerification\SmsVerificationConfirmRequest $request
|
* @param SmsVerificationConfirmRequest $request
|
||||||
* @return \Intaro\RetailCrm\Model\Api\Response\Loyalty\Account\LoyaltyAccountActivateResponse|null
|
*
|
||||||
|
* @return LoyaltyAccountActivateResponse|null
|
||||||
|
* @throws ReflectionException
|
||||||
*/
|
*/
|
||||||
public function sendVerificationCode(SmsVerificationConfirmRequest $request): ?SmsVerificationConfirmResponse
|
public function sendVerificationCode(SmsVerificationConfirmRequest $request): ?SmsVerificationConfirmResponse
|
||||||
{
|
{
|
||||||
@ -113,22 +167,10 @@ trait LoyaltyTrait
|
|||||||
return Deserializer::deserializeArray($response->getResponseBody(), SmsVerificationConfirmResponse::class);
|
return Deserializer::deserializeArray($response->getResponseBody(), SmsVerificationConfirmResponse::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @param \Intaro\RetailCrm\Model\Api\Request\Loyalty\Account\LoyaltyAccountRequest $request
|
|
||||||
* @return \Intaro\RetailCrm\Model\Api\Response\Loyalty\Account\LoyaltyAccountResponse|null
|
|
||||||
*/
|
|
||||||
public function getLoyaltyAccounts(LoyaltyAccountRequest $request): ?LoyaltyAccountResponse
|
|
||||||
{
|
|
||||||
$serialized = Serializer::serializeArray($request);
|
|
||||||
$response = $this->client->getLoyaltyAccounts($serialized);
|
|
||||||
|
|
||||||
return Deserializer::deserializeArray($response->getResponseBody(), LoyaltyAccountResponse::class);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param int $loyaltyId
|
* @param int $loyaltyId
|
||||||
*
|
*
|
||||||
* @return \Intaro\RetailCrm\Model\Api\Response\Loyalty\LoyaltyLoyaltyResponse|null
|
* @return LoyaltyLoyaltyResponse|null
|
||||||
*/
|
*/
|
||||||
public function getLoyaltyLoyalty(int $loyaltyId): ?LoyaltyLoyaltyResponse
|
public function getLoyaltyLoyalty(int $loyaltyId): ?LoyaltyLoyaltyResponse
|
||||||
{
|
{
|
||||||
@ -138,7 +180,7 @@ trait LoyaltyTrait
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return \Intaro\RetailCrm\Model\Api\Response\Loyalty\LoyaltyLoyaltiesResponse|null
|
* @return LoyaltyLoyaltiesResponse|null
|
||||||
*/
|
*/
|
||||||
public function getLoyaltyLoyalties(): ?LoyaltyLoyaltiesResponse
|
public function getLoyaltyLoyalties(): ?LoyaltyLoyaltiesResponse
|
||||||
{
|
{
|
||||||
@ -146,18 +188,4 @@ trait LoyaltyTrait
|
|||||||
|
|
||||||
return Deserializer::deserializeArray($response->getResponseBody(), LoyaltyLoyaltiesResponse::class);
|
return Deserializer::deserializeArray($response->getResponseBody(), LoyaltyLoyaltiesResponse::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @param \Intaro\RetailCrm\Model\Api\Request\Loyalty\Account\LoyaltyAccountEditRequest $request
|
|
||||||
*
|
|
||||||
* @return \Intaro\RetailCrm\Model\Api\Response\Loyalty\Account\LoyaltyAccountEditResponse|null
|
|
||||||
* @throws \ReflectionException
|
|
||||||
*/
|
|
||||||
public function editLoyaltyAccount(LoyaltyAccountEditRequest $request): ?LoyaltyAccountEditResponse
|
|
||||||
{
|
|
||||||
$serialized = Serializer::serializeArray($request);
|
|
||||||
$response = $this->client->editLoyaltyAccount($serialized, $request->id);
|
|
||||||
|
|
||||||
return Deserializer::deserializeArray($response->getResponseBody(), LoyaltyAccountEditResponse::class);
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -45,10 +45,10 @@ class LoyaltyAccount
|
|||||||
/**
|
/**
|
||||||
* Программа лояльности
|
* Программа лояльности
|
||||||
*
|
*
|
||||||
* @var \Intaro\RetailCrm\Model\Api\Loyalty
|
* @var Loyalty
|
||||||
*
|
*
|
||||||
* @Mapping\Type("\Intaro\RetailCrm\Model\Api\Loyalty")
|
* @Mapping\Type("\Intaro\RetailCrm\Model\Api\Loyalty")
|
||||||
* @Mapping\SerializedName("$loyalty")
|
* @Mapping\SerializedName("loyalty")
|
||||||
*/
|
*/
|
||||||
public $loyalty;
|
public $loyalty;
|
||||||
|
|
||||||
|
@ -0,0 +1,33 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Intaro\RetailCrm\Model\Api\Response\Loyalty\Account;
|
||||||
|
|
||||||
|
use Intaro\RetailCrm\Component\Json\Mapping;
|
||||||
|
use Intaro\RetailCrm\Model\Api\LoyaltyAccount;
|
||||||
|
use Intaro\RetailCrm\Model\Api\Response\AbstractApiResponseModel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class LoyaltyAccountResponse
|
||||||
|
*
|
||||||
|
* @package Intaro\RetailCrm\Model\Api\Request\Loyalty\Account
|
||||||
|
*/
|
||||||
|
class LoyaltyAccountGetResponse extends AbstractApiResponseModel
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Результат запроса (успешный/неуспешный)
|
||||||
|
*
|
||||||
|
* @var bool $success
|
||||||
|
*
|
||||||
|
* @Mapping\Type("boolean")
|
||||||
|
* @Mapping\SerializedName("success")
|
||||||
|
*/
|
||||||
|
public $success;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var LoyaltyAccount $loyaltyAccount
|
||||||
|
*
|
||||||
|
* @Mapping\Type("Intaro\RetailCrm\Model\Api\LoyaltyAccount")
|
||||||
|
* @Mapping\SerializedName("loyaltyAccount")
|
||||||
|
*/
|
||||||
|
public $loyaltyAccount;
|
||||||
|
}
|
@ -14,14 +14,15 @@
|
|||||||
namespace Intaro\RetailCrm\Model\Api\Response\Loyalty\Account;
|
namespace Intaro\RetailCrm\Model\Api\Response\Loyalty\Account;
|
||||||
|
|
||||||
use Intaro\RetailCrm\Component\Json\Mapping;
|
use Intaro\RetailCrm\Component\Json\Mapping;
|
||||||
|
use Intaro\RetailCrm\Model\Api\PaginationResponse;
|
||||||
use Intaro\RetailCrm\Model\Api\Response\AbstractApiResponseModel;
|
use Intaro\RetailCrm\Model\Api\Response\AbstractApiResponseModel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class LoyaltyAccountResponse
|
* Class LoyaltyAccountsResponse
|
||||||
*
|
*
|
||||||
* @package Intaro\RetailCrm\Model\Api\Request\Loyalty\Account
|
* @package Intaro\RetailCrm\Model\Api\Request\Loyalty\Account
|
||||||
*/
|
*/
|
||||||
class LoyaltyAccountResponse extends AbstractApiResponseModel
|
class LoyaltyAccountsResponse extends AbstractApiResponseModel
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Результат запроса (успешный/неуспешный)
|
* Результат запроса (успешный/неуспешный)
|
||||||
@ -34,7 +35,7 @@ class LoyaltyAccountResponse extends AbstractApiResponseModel
|
|||||||
public $success;
|
public $success;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var \Intaro\RetailCrm\Model\Api\PaginationResponse
|
* @var PaginationResponse
|
||||||
*
|
*
|
||||||
* @Mapping\Type("\Intaro\RetailCrm\Model\Api\PaginationResponse")
|
* @Mapping\Type("\Intaro\RetailCrm\Model\Api\PaginationResponse")
|
||||||
* @Mapping\SerializedName("pagination")
|
* @Mapping\SerializedName("pagination")
|
@ -14,6 +14,7 @@
|
|||||||
namespace Intaro\RetailCrm\Service;
|
namespace Intaro\RetailCrm\Service;
|
||||||
|
|
||||||
use CUser;
|
use CUser;
|
||||||
|
use Logger;
|
||||||
use DateTime;
|
use DateTime;
|
||||||
use Intaro\RetailCrm\Component\ConfigProvider;
|
use Intaro\RetailCrm\Component\ConfigProvider;
|
||||||
use Intaro\RetailCrm\Component\Factory\ClientFactory;
|
use Intaro\RetailCrm\Component\Factory\ClientFactory;
|
||||||
@ -215,11 +216,104 @@ class LoyaltyAccountService
|
|||||||
public static function getLoyaltyPersonalStatus(): bool
|
public static function getLoyaltyPersonalStatus(): bool
|
||||||
{
|
{
|
||||||
global $USER;
|
global $USER;
|
||||||
|
|
||||||
$userFields = CUser::GetByID($USER->GetID())->Fetch();
|
$userFields = CUser::GetByID($USER->GetID())->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';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Возвращает ID аккаунта в программе лояльности
|
||||||
|
*
|
||||||
|
* @return int|null
|
||||||
|
*/
|
||||||
|
public static function getLoyaltyAccountId(): ?int
|
||||||
|
{
|
||||||
|
global $USER;
|
||||||
|
|
||||||
|
$userFields = CUser::GetByID($USER->GetID())->Fetch();
|
||||||
|
|
||||||
|
return $userFields['UF_LP_ID_INTARO'] ?? null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Метод возвращает значение для поля 'privilegeType'. Валидация поля происходит по кейсам:
|
||||||
|
* 1. Программа лояльност не работает с корп. клиентами.
|
||||||
|
* 2. Участие клиента не найдено в CRM, соответственно либо нет участия, либо нет клиента.
|
||||||
|
* 3. Участие клиента найдено, но не активно (поле status = deactivated).
|
||||||
|
* 4. Программа лояльности деактивирована в CRM.
|
||||||
|
*
|
||||||
|
* @param $client
|
||||||
|
* @param array $arParams
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public static function getPrivilegeType($client, array $arParams = []): string
|
||||||
|
{
|
||||||
|
$file = 'loyaltyStatus';
|
||||||
|
$privilegeType = 'none';
|
||||||
|
|
||||||
|
if (!empty($arParams['customerCorporate']['privilegeType'])) {
|
||||||
|
$privilegeType = $arParams['crmOrder']['privilegeType'];
|
||||||
|
} elseif (ConfigProvider::getLoyaltyProgramStatus() === 'Y' && self::getLoyaltyPersonalStatus()) {
|
||||||
|
$privilegeType = 'loyalty_level';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($arParams['customerCorporate']) || !empty($arParams['orderCompany'])) {
|
||||||
|
return 'none';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($privilegeType === 'none') {
|
||||||
|
return 'none';
|
||||||
|
}
|
||||||
|
|
||||||
|
$loyaltyAccountId = self::getLoyaltyAccountId();
|
||||||
|
|
||||||
|
if ($loyaltyAccountId === null) {
|
||||||
|
Logger::getInstance()->write('Участие клиента не найдено', $file);
|
||||||
|
|
||||||
|
return 'none';
|
||||||
|
}
|
||||||
|
|
||||||
|
$loyaltyAccount = $client->getLoyaltyAccount($loyaltyAccountId)->loyaltyAccount ?? null;
|
||||||
|
|
||||||
|
if ($loyaltyAccount === null) {
|
||||||
|
Logger::getInstance()->write('Участие клиента c ID: ' . $loyaltyAccountId . ' не найдено', $file);
|
||||||
|
|
||||||
|
return 'none';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($loyaltyAccount->status === 'deactivated') {
|
||||||
|
Logger::getInstance()->write('Участие клиента c ID: ' . $loyaltyAccountId . ' деактивированно', $file);
|
||||||
|
|
||||||
|
return 'none';
|
||||||
|
}
|
||||||
|
|
||||||
|
$loyaltyId = $loyaltyAccount->loyalty->id ?? null;
|
||||||
|
|
||||||
|
if ($loyaltyId === null) {
|
||||||
|
Logger::getInstance()->write('Программа лояльности не найдена', $file);
|
||||||
|
|
||||||
|
return 'none';
|
||||||
|
}
|
||||||
|
|
||||||
|
$loyalty = $client->getLoyaltyLoyalty($loyaltyId)->loyalty ?? null;
|
||||||
|
|
||||||
|
if ($loyalty === null) {
|
||||||
|
Logger::getInstance()->write('Программа лояльности c ID: ' . $loyaltyId . ' не найдена', $file);
|
||||||
|
|
||||||
|
return 'none';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$loyalty->active) {
|
||||||
|
Logger::getInstance()->write('Программа лояльности c ID: ' . $loyaltyId . ' деактивированна', $file);
|
||||||
|
|
||||||
|
return 'none';
|
||||||
|
}
|
||||||
|
|
||||||
|
return $privilegeType;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return array|null
|
* @return array|null
|
||||||
* @throws \ReflectionException
|
* @throws \ReflectionException
|
||||||
|
Loading…
Reference in New Issue
Block a user