ref #92904
Изменение текста сообщений Обновление описания версии Добавлены комментарии к тестам Обработка интеграциоонной оплаты перенесена в отдельный метод
This commit is contained in:
parent
0cfb83c50c
commit
5752f8d4a2
9 changed files with 49 additions and 44 deletions
|
@ -1,5 +1,5 @@
|
|||
## 2024-01-19 v.6.5.7
|
||||
- Добавлена передача данных интегрированной оплаты в систему
|
||||
## 2024-01-22 v.6.5.7
|
||||
- Доработана передача данных интеграционных оплат в систему
|
||||
|
||||
## 2024-01-12 v.6.5.6
|
||||
- Добавлена передача дополнительных свойств товаров через конфигурируемый файл
|
||||
|
|
|
@ -531,8 +531,6 @@ class RetailCrmEvent
|
|||
$paymentToCrm['externalId'] = RCrmActions::generatePaymentExternalId($arPayment['ID']);
|
||||
}
|
||||
|
||||
$isIntegrationPayment = RetailCrmService::isIntegrationPayment($arPayment['PAY_SYSTEM_ID'] ?? null);
|
||||
|
||||
if (!empty($arPayment['DATE_PAID'])) {
|
||||
if (is_object($arPayment['DATE_PAID'])) {
|
||||
$culture = new Culture(['FORMAT_DATETIME' => 'YYYY-MM-DD HH:MI:SS']);
|
||||
|
@ -554,16 +552,7 @@ class RetailCrmEvent
|
|||
$paymentToCrm['amount'] = $arPayment['SUM'];
|
||||
}
|
||||
|
||||
if ($isIntegrationPayment && RetailcrmConfigProvider::getSyncIntegrationPayment() === 'Y') {
|
||||
$paymentToCrm['type'] = $optionsPaymentTypes[$arPayment['PAY_SYSTEM_ID']] .
|
||||
Constants::CRM_PART_SUBSTITUTED_PAYMENT_CODE;
|
||||
} else {
|
||||
$paymentToCrm['type'] = $optionsPaymentTypes[$arPayment['PAY_SYSTEM_ID']];
|
||||
|
||||
if ($isIntegrationPayment) {
|
||||
unset($paymentToCrm['paidAt'], $paymentToCrm['status']);
|
||||
}
|
||||
}
|
||||
$paymentToCrm = RetailCrmService::preparePayment($paymentToCrm, $arPayment, $optionsPaymentTypes);
|
||||
} else {
|
||||
RCrmActions::eventLog('RetailCrmEvent::paymentSave', 'payments', 'OrderID = ' . $arPayment['ID'] . '. Payment not found.');
|
||||
return false;
|
||||
|
|
|
@ -366,39 +366,27 @@ class RetailCrmOrder
|
|||
$payments = [];
|
||||
|
||||
foreach ($arOrder['PAYMENTS'] as $payment) {
|
||||
$isIntegrationPayment = RetailCrmService::isIntegrationPayment($payment['PAY_SYSTEM_ID'] ?? null);
|
||||
|
||||
if (!empty($payment['PAY_SYSTEM_ID']) && isset($arParams['optionsPayTypes'][$payment['PAY_SYSTEM_ID']])) {
|
||||
$pm = [];
|
||||
$crmPayment = [];
|
||||
|
||||
if (!empty($payment['DATE_PAID'])) {
|
||||
$pm['paidAt'] = new \DateTime($payment['DATE_PAID']);
|
||||
$crmPayment['paidAt'] = new \DateTime($payment['DATE_PAID']);
|
||||
}
|
||||
|
||||
if (!empty($arParams['optionsPayment'][$payment['PAID']])) {
|
||||
$pm['status'] = $arParams['optionsPayment'][$payment['PAID']];
|
||||
$crmPayment['status'] = $arParams['optionsPayment'][$payment['PAID']];
|
||||
}
|
||||
|
||||
if (!empty($payment['ID'])) {
|
||||
$pm['externalId'] = RCrmActions::generatePaymentExternalId($payment['ID']);
|
||||
$crmPayment['externalId'] = RCrmActions::generatePaymentExternalId($payment['ID']);
|
||||
}
|
||||
|
||||
if (RetailcrmConfigProvider::shouldSendPaymentAmount()) {
|
||||
$pm['amount'] = $payment['SUM'];
|
||||
$crmPayment['amount'] = $payment['SUM'];
|
||||
}
|
||||
|
||||
if ($isIntegrationPayment && RetailcrmConfigProvider::getSyncIntegrationPayment() === 'Y') {
|
||||
$pm['type'] = $arParams['optionsPayTypes'][$payment['PAY_SYSTEM_ID']] .
|
||||
Constants::CRM_PART_SUBSTITUTED_PAYMENT_CODE;
|
||||
} else {
|
||||
$pm['type'] = $arParams['optionsPayTypes'][$payment['PAY_SYSTEM_ID']];
|
||||
|
||||
if ($isIntegrationPayment) {
|
||||
unset($pm['paidAt'], $pm['status']);
|
||||
}
|
||||
}
|
||||
|
||||
$payments[] = $pm;
|
||||
$crmPayment = RetailCrmService::preparePayment($crmPayment, $payments, $arParams['optionsPayTypes']);
|
||||
$payments[] = $crmPayment;
|
||||
} else {
|
||||
RCrmActions::eventLog(
|
||||
'RetailCrmOrder::orderSend',
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
<?php
|
||||
|
||||
use Intaro\RetailCrm\Component\Constants;
|
||||
|
||||
/**
|
||||
* Class RetailCrmService
|
||||
*/
|
||||
|
@ -178,4 +180,29 @@ class RetailCrmService
|
|||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $crmPayment
|
||||
* @param array $bitrixPayment
|
||||
* @param array $optionsPaymentTypes
|
||||
* @return array mixed
|
||||
*/
|
||||
public static function preparePayment($crmPayment, $bitrixPayment, $optionsPaymentTypes)
|
||||
{
|
||||
$isIntegrationPayment = self::isIntegrationPayment($bitrixPayment['PAY_SYSTEM_ID'] ?? null);
|
||||
|
||||
if ($isIntegrationPayment && RetailcrmConfigProvider::getSyncIntegrationPayment() === 'Y') {
|
||||
$crmPayment['type'] = $optionsPaymentTypes[$bitrixPayment['PAY_SYSTEM_ID']] .
|
||||
Constants::CRM_PART_SUBSTITUTED_PAYMENT_CODE;
|
||||
} else {
|
||||
$crmPayment['type'] = $optionsPaymentTypes[$bitrixPayment['PAY_SYSTEM_ID']];
|
||||
|
||||
if ($isIntegrationPayment) {
|
||||
unset($crmPayment['paidAt'], $crmPayment['status']);
|
||||
}
|
||||
}
|
||||
|
||||
return $crmPayment;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1 +1 @@
|
|||
- Добавлена передача данных интегрированной оплаты в систему
|
||||
- Доработана передача данных интеграционных оплат в систему
|
||||
|
|
|
@ -2,5 +2,5 @@
|
|||
|
||||
$arModuleVersion = [
|
||||
'VERSION' => '6.5.7',
|
||||
'VERSION_DATE' => '2024-01-19 14:00:00'
|
||||
'VERSION_DATE' => '2024-01-22 11:00:00'
|
||||
];
|
||||
|
|
|
@ -138,10 +138,10 @@ $MESS ['DELETE_MATCHED'] = 'Delete';
|
|||
$MESS ['LOCATION_LABEL'] = 'Location';
|
||||
$MESS ['TEXT_ADDRESS_LABEL'] = 'Address (line)';
|
||||
|
||||
$MESS ['SYNC_INTEGRATION_PAYMENT'] = 'Activate synchronization of integrated payments';
|
||||
$MESS ['SYNC_INTEGRATION_PAYMENT'] = 'Activate synchronization of integration payment types';
|
||||
$MESS ['DESCRIPTION_AUTO_PAYMENT_TYPE'] = 'Automatically created payment type for integration substitution (Bitrix)';
|
||||
$MESS ['NO_INTEGRATION_PAYMENT'] = '(Non-integrated)';
|
||||
$MESS ['ERR_CHECK_JOURNAL'] = 'Error while saving. Details in the event log';
|
||||
$MESS ['ERROR_LINK_INTEGRATION_PAYMENT'] = 'Integration payment linkage error';
|
||||
$MESS ['INTEGRATION_PAYMENT_LABEL'] = 'When correlating CMS and CRM integration payments, a regular payment is created on the system side to which orders will be linked';
|
||||
$MESS ['ERROR_LINK_INTEGRATION_PAYMENT'] = 'Error in comparing integration payments';
|
||||
$MESS ['INTEGRATION_PAYMENT_LABEL'] = 'When correlating CMS and CRM integration payments, a regular payment is created on the system side to which orders will be linked.';
|
||||
$MESS ['NEED_PERMISSIONS_REFERENCE_LABEL'] = 'For this option to work correctly, the api key needs access to receive and edit reference book';
|
||||
|
|
|
@ -197,10 +197,10 @@ $MESS ['DELETE_MATCHED'] = 'Удалить';
|
|||
$MESS ['LOCATION_LABEL'] = 'Местоположение (LOCATION)';
|
||||
$MESS ['TEXT_ADDRESS_LABEL'] = 'Адрес (строкой)';
|
||||
|
||||
$MESS ['SYNC_INTEGRATION_PAYMENT'] = 'Активировать синхронизацию интегрированных типов оплат';
|
||||
$MESS ['SYNC_INTEGRATION_PAYMENT'] = 'Активировать синхронизацию интеграционных типов оплат';
|
||||
$MESS ['DESCRIPTION_AUTO_PAYMENT_TYPE'] = 'Автоматически созданный тип оплаты для подмены интеграционной (Bitrix)';
|
||||
$MESS ['NO_INTEGRATION_PAYMENT'] = '(Не интегрированная)';
|
||||
$MESS ['NO_INTEGRATION_PAYMENT'] = '(Не интеграционная)';
|
||||
$MESS ['ERR_CHECK_JOURNAL'] = 'Ошибка при сохранении. Подробности в журнале событий';
|
||||
$MESS ['ERROR_LINK_INTEGRATION_PAYMENT'] = 'Ошибка связи интеграционных оплат';
|
||||
$MESS ['INTEGRATION_PAYMENT_LABEL'] = 'При соотношении интеграционных оплат CMS и CRM, на стороне системы создаётся обычная оплата, к которой будут привязываться заказы.';
|
||||
$MESS ['ERROR_LINK_INTEGRATION_PAYMENT'] = 'Ошибка при сопоставлении интеграционных оплат';
|
||||
$MESS ['INTEGRATION_PAYMENT_LABEL'] = 'При сопоставлении интеграционных оплат CRM, на стороне системы создаётся обычная оплата, к которой будут привязываться заказы.';
|
||||
$MESS ['NEED_PERMISSIONS_REFERENCE_LABEL'] = 'Для корректной работы опции, апи-ключу необходимы доступы на получение и редактирование справочников';
|
||||
|
|
|
@ -92,12 +92,13 @@ class RetailCrmEventTest extends PHPUnit\Framework\TestCase
|
|||
});
|
||||
|
||||
$api = new RetailCrm\ApiClient(RetailcrmConfigProvider::getApiUrl(), RetailcrmConfigProvider::getApiKey());
|
||||
$spy = \Mockery::spy('overload:' .RCrmActions::class);
|
||||
$spy = \Mockery::spy('overload:' . RCrmActions::class); //Добавление слежки за классом
|
||||
|
||||
$GLOBALS['RETAIL_CRM_HISTORY'] = false;
|
||||
|
||||
$result = RetailCrmEvent::paymentSave($event);
|
||||
|
||||
//Проверка вызова класса и передачи определенных параметров
|
||||
$spy->shouldReceive('apiMethod')->with(
|
||||
$api,
|
||||
'ordersPaymentCreate',
|
||||
|
@ -177,7 +178,7 @@ class RetailCrmEventTest extends PHPUnit\Framework\TestCase
|
|||
});
|
||||
|
||||
$api = new RetailCrm\ApiClient(RetailcrmConfigProvider::getApiUrl(), RetailcrmConfigProvider::getApiKey());
|
||||
$spy = \Mockery::spy('overload:' .RCrmActions::class);
|
||||
$spy = \Mockery::spy('overload:' . RCrmActions::class);
|
||||
|
||||
$GLOBALS['RETAIL_CRM_HISTORY'] = false;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue