1
0
mirror of synced 2024-11-24 06:16:29 +03:00

Исправление отправки заказа в црм систему (#275)

This commit is contained in:
Kocmonavtik 2023-01-24 15:54:48 +03:00 committed by GitHub
parent 656c076195
commit 6a07f5220b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 76 additions and 11 deletions

View File

@ -1,5 +1,5 @@
## 2023-01-20 v.6.1.14 ## 2023-01-24 v.6.1.14
- Исправление ошибки изменения отгрузки при её завершении - Исправление обновления и отправки заказа в црм систему
## 2023-01-10 v.6.1.13 ## 2023-01-10 v.6.1.13
- Изменение метода обновления полей программы лояльности в административной панели - Изменение метода обновления полей программы лояльности в административной панели

View File

@ -1 +1 @@
- Изменение логики обновления полей программы лояльности в административной панели - исправление отправки заказа в црм систему

View File

@ -2,5 +2,5 @@
$arModuleVersion = [ $arModuleVersion = [
'VERSION' => '6.1.14', 'VERSION' => '6.1.14',
'VERSION_DATE' => '2023-01-20 17:00:00' 'VERSION_DATE' => '2023-01-24 14:30:00'
]; ];

View File

@ -127,7 +127,18 @@ class EventsHandlers
*/ */
public function OnSaleOrderSavedHandler(Event $event): void public function OnSaleOrderSavedHandler(Event $event): void
{ {
if (self::$disableSaleHandler === true) {
return;
}
try { try {
/** @var Order $order */
$order = $event->getParameter('ENTITY');
// TODO: Replace old call with a new one.
$saveResult = RetailCrmEvent::orderSave($order);
Utils::handleApiErrors($saveResult);
$isBonusInput = ( $isBonusInput = (
!empty($_POST['bonus-input']) !empty($_POST['bonus-input'])
&& !empty($_POST['available-bonuses']) && !empty($_POST['available-bonuses'])
@ -135,7 +146,7 @@ class EventsHandlers
$isDataForLoyaltyDiscount = isset($_POST['calculate-items-input'], $_POST['loyalty-discount-input']); $isDataForLoyaltyDiscount = isset($_POST['calculate-items-input'], $_POST['loyalty-discount-input']);
if (self::$disableSaleHandler === true || !($isDataForLoyaltyDiscount || $isBonusInput) ) { if (!($isDataForLoyaltyDiscount || $isBonusInput) ) {
return; return;
} }
@ -144,12 +155,6 @@ class EventsHandlers
/* @var OrderLoyaltyDataService $orderLoyaltyDataService */ /* @var OrderLoyaltyDataService $orderLoyaltyDataService */
$orderLoyaltyDataService = ServiceLocator::get(OrderLoyaltyDataService::class); $orderLoyaltyDataService = ServiceLocator::get(OrderLoyaltyDataService::class);
/** @var Order $order */
$order = $event->getParameter('ENTITY');
// TODO: Replace old call with a new one.
$saveResult = RetailCrmEvent::orderSave($order);
Utils::handleApiErrors($saveResult);
$bonusFloat = (float) $_POST['bonus-input']; $bonusFloat = (float) $_POST['bonus-input'];

View File

@ -0,0 +1,60 @@
<?php
use Intaro\RetailCrm\Component\Handlers\EventsHandlers;
use Bitrix\Main\EventManager;
class EventsHandlersTest extends \BitrixTestCase
{
public function setUp()
{
parent::setUp();
COption::SetOptionString('intaro.retailcrm', 'api_version', 'v5');
CModule::IncludeModule('intaro.retailcrm');
}
/**
* @runInSeparateProcess
* @preserveGlobalState disabled
*/
public function testOnSaleOrderSavedHandler()
{
$order = \Bitrix\Sale\Order::create('s1', 2, 'RUB');
$order->setPersonTypeId(2);
$event = $this->createMock(\Bitrix\Main\Event::class);
$event->method('getParameter')->willReturn($order);
$spy = \Mockery::spy('overload:' .RetailCrmEvent::class);
$onSaleOrderSaved = new EventsHandlers();
$onSaleOrderSaved->OnSaleOrderSavedHandler($event);
//Проверяет, был ли вызван метод класса. Если метод не вызывался, выдает ошибку теста
//Если метод вызывался, ошибку не выдает, но phpunit выдает сообщение об отсутствии тестов
$spy->shouldHaveReceived('orderSave');
self::assertTrue(true);
}
/**
* @runInSeparateProcess
* @preserveGlobalState disabled
*/
public function testOnSaleOrderNotSavedHandler()
{
$order = \Bitrix\Sale\Order::create('s1', 2, 'RUB');
$order->setPersonTypeId(2);
$event = $this->createMock(\Bitrix\Main\Event::class);
$event->method('getParameter')->willReturn($order);
$spy = \Mockery::spy('overload:' .RetailCrmEvent::class);
$onSaleOrderSaved = new EventsHandlers();
$onSaleOrderSaved::$disableSaleHandler = true;
$onSaleOrderSaved->OnSaleOrderSavedHandler($event);
$spy->shouldNotHaveReceived('orderSave');
self::assertTrue(true);
}
}