From bd683e967832e95738549469c95cc3e3e662d692 Mon Sep 17 00:00:00 2001 From: Sergey Date: Mon, 25 Feb 2019 17:08:04 +0300 Subject: [PATCH] =?UTF-8?q?fixes=20#64=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=80=D0=B5=D1=84=D0=B8?= =?UTF-8?q?=D0=BA=D1=81=D0=B0=20=D0=BA=20=D0=B2=D0=BD=D0=B5=D1=88=D0=BD?= =?UTF-8?q?=D0=B5=D0=BC=D1=83=20id=20=D0=BE=D0=BF=D0=BB=D0=B0=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 3 +++ VERSION | 2 +- src/include/class-wc-retailcrm-orders.php | 12 +++++++----- src/readme.txt | 7 +++++-- src/retailcrm.php | 2 +- src/uninstall.php | 2 +- tests/phpunit/test-wc-retailcrm-orders.php | 2 ++ 7 files changed, 20 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6eed2b6..aff065c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## 2019-02-25 3.4.4 +* Добавлена генерация уникального id к externalId отправляемой оплаты + ## 2019-02-15 3.4.3 * Исправлено сохранение типа оплаты при создании заказа при обработке истории изменений на стороне WC * Исправлено сохранение типа оплаты при изменении заказа при обработке истории изменений на стороне WC diff --git a/VERSION b/VERSION index 8a0feb9..5141b61 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -3.4.3 \ No newline at end of file +3.4.4 \ No newline at end of file diff --git a/src/include/class-wc-retailcrm-orders.php b/src/include/class-wc-retailcrm-orders.php index 6bdd280..216c9f2 100644 --- a/src/include/class-wc-retailcrm-orders.php +++ b/src/include/class-wc-retailcrm-orders.php @@ -185,7 +185,9 @@ if ( ! class_exists( 'WC_Retailcrm_Orders' ) ) : $retailcrmOrder = $response['order']; foreach ($retailcrmOrder['payments'] as $payment_data) { - if ($payment_data['externalId'] == $order->get_id()) { + $payment_external_id = explode('-', $payment_data['externalId']); + + if ($payment_external_id[0] == $order->get_id()) { $payment = $payment_data; } } @@ -364,7 +366,7 @@ if ( ! class_exists( 'WC_Retailcrm_Orders' ) ) : if ($this->retailcrm_settings['api_version'] == 'v5') { $payment = array( 'amount' => $order->get_total(), - 'externalId' => $order->get_id() + 'externalId' => $order->get_id() . uniqid('-') ); $payment['order'] = array( @@ -394,17 +396,17 @@ if ( ! class_exists( 'WC_Retailcrm_Orders' ) ) : /** * Send payment in CRM - * + * * @param WC_Order $order * @param boolean $update - * + * * @return array $payment */ protected function sendPayment($order, $update = false) { $payment = array( 'amount' => $order->get_total(), - 'externalId' => $order->get_id() + 'externalId' => $order->get_id() . uniqid('-') ); $payment['order'] = array( diff --git a/src/readme.txt b/src/readme.txt index 78622fa..8ecbc00 100644 --- a/src/readme.txt +++ b/src/readme.txt @@ -45,9 +45,12 @@ API-ключ должен быть для отдельного магазина 2. В появившихся списках справочников настройте соответствие способов доставки и оплаты, а так же статусов заказов. Отметьте галочку "Выгружать остатки", если хотите выгружать остатки из Retailcrm в магазин (подробнее смотрите в описании). == Changelog == += 3.4.4 = +* Добавлена генерация уникального id к внешнему id отправляемой оплаты при использовании 5 версии api + = 3.4.3 = -* Исправлено сохранение типа оплаты при создании заказа по истории на стороне WC -* Исправлено сохранение типа оплаты при ризменении заказа по истории на стороне WC +* Исправлено сохранение типа оплаты при создании заказа при обработке истории изменений на стороне WC +* Исправлено сохранение типа оплаты при ризменении заказа при обработке истории изменений на стороне WC = 3.4.2 = * Исправлено изменение типа оплаты на стороне WC diff --git a/src/retailcrm.php b/src/retailcrm.php index 8d75d3d..a37603c 100644 --- a/src/retailcrm.php +++ b/src/retailcrm.php @@ -1,6 +1,6 @@ assertArrayHasKey('payments', $order_send); $this->assertInternalType('array', $order_send['payments']); $this->assertArrayHasKey('type', $order_send['payments'][0]); + $this->assertArrayHasKey('externalId', $order_send['payments'][0]); $this->assertEquals('payment1', $order_send['payments'][0]['type']); } } else { @@ -201,6 +202,7 @@ class WC_Retailcrm_Orders_Test extends WC_Retailcrm_Test_Case_Helper $this->assertArrayHasKey('type', $payment); $this->assertArrayHasKey('amount', $payment); $this->assertArrayHasKey('order', $payment); + $this->assertArrayHasKey('externalId', $payment); $this->assertEquals('payment1', $payment['type']); } }