]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Обработка статусов от 1с из задачи 372
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Thu, 27 Mar 2025 11:29:02 +0000 (14:29 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Thu, 27 Mar 2025 11:29:02 +0000 (14:29 +0300)
erp24/api2/controllers/OrdersController.php
erp24/records/MarketplaceOrders.php

index e99dd213cbdecefc776d3c031cf72a2a34ca8512..3147563fdd5dac837666197b435c1f0c9dab6099 100644 (file)
@@ -40,15 +40,15 @@ class OrdersController extends BaseController
             ' ' . date("d.m.Y H:i:s", time()) . ' JSON: ' . $json . '  ',
             FILE_APPEND
         );
-
-        $__API_PARAMS = ['order_id', 'status'];
+        $mess = [];
+        $__API_PARAMS = ['order_id', 'status', 'marketplace_id'];
 
         foreach ($__API_PARAMS as $paramName) {
             if (empty($result[$paramName])) {
                 if ($paramName != 'order_id') {
                     LogService::apiErrorLog(
                         json_encode(
-                            ["error_id" => 0, "error" => "$paramName is required"],
+                            ["error_id" => 0.1, "error" => "$paramName is required"],
                             JSON_UNESCAPED_UNICODE
                         )
                     );
@@ -56,19 +56,25 @@ class OrdersController extends BaseController
                 if ($paramName != 'status') {
                     LogService::apiErrorLog(
                         json_encode(
-                            ["error_id" => 0, "error" => "$paramName is required"],
+                            ["error_id" => 0.1, "error" => "$paramName is required"],
+                            JSON_UNESCAPED_UNICODE
+                        )
+                    );
+                }
+                if ($paramName != 'marketplace_id') {
+                    LogService::apiErrorLog(
+                        json_encode(
+                            ["error_id" => 0.1, "error" => "$paramName is required"],
                             JSON_UNESCAPED_UNICODE
                         )
                     );
                 }
-                return $this->asJson(["error_id" => 0, "error" => "$paramName is required"]);
+                return $this->asJson(["error_id" => 0.1, "error" => "$paramName is required"]);
             }
         }
 
-        $orderGuid = $result['order_id'];
-        $orderStatus = $result['status'];
         $updateResult = null;
-        $orderStatus1CCodes = MarketplaceOrders::getStatusCodes($orderStatus);
+
         // данные из запроса
         $marketplaceGuid = $result['marketplace_id'];
         $orderGuid = $result['order_id'];
@@ -91,8 +97,19 @@ class OrdersController extends BaseController
             ->where(['marketplace_id' => $marketplaceId])
             ->andWhere(['status' => $orderStatus])
             ->one();
+        if (empty($status1CRecord)) {
+            $mess["result"] = 'error';
+            $mess["message_order"] = "Статус не найден";
+            LogService::apiLogs(1, json_encode($mess, JSON_UNESCAPED_UNICODE));
+            file_put_contents(
+                self::OUT_DIR . '/changed_orders_' . $fl . '.json',
+                PHP_EOL . '--' . __LINE__ . ' OK ',
+                FILE_APPEND
+            );
+            Yii::error('Ошибка: такого статуса не существует' . $orderStatus, __METHOD__);
+            return $this->asJson($mess);
+        }
         $statusId1C = (int)$status1CRecord->status_id;
-
         // Получаем статусы МП по статусу 1С
         $orderStatus1CToCodes = MarketplaceOrders::getStatusCodes($orderStatus);
 
@@ -104,6 +121,18 @@ class OrdersController extends BaseController
              ->one();
 
         if ($order) {
+            if (
+                in_array($result['status'], ['Отказ', 'Собрано']) &&
+                $order->marketplace_id == 2
+            ) {
+                $updateResult = MarketplaceService::updateOrderStatus(
+                    $order->warehouse_id,
+                    $order->marketplace_order_id,
+                    $orderStatus1CToCodes[0],
+                    $orderStatus1CToCodes[1]
+                );
+                $mess["message_status_update"] = $updateResult;
+            }
             $order->status_1c = $statusId1C;
             if (!empty($orderStatus1CToCodes)) {
                 $order->status_id = $statusId;
@@ -113,6 +142,7 @@ class OrdersController extends BaseController
                 $orderDetails = [
                     'date' => date('Y-m-d H:i:s')
                 ];
+
                 MarketplaceService::createOrUpdateStatusHistory($order->id, $statusId, $substatusId, $orderDetails);
                 $mess["result"] = true;
                 $mess["message_order"] = "Статус получен";
@@ -127,7 +157,6 @@ class OrdersController extends BaseController
             }
         }
 
-       //MarketplaceService::updateOrderStatus($order->warehouse_id, $order->marketplace_order_id, $orderStatus1CCodes[0], $orderStatus1CCodes[1]);
 
         LogService::apiLogs(1, json_encode($mess, JSON_UNESCAPED_UNICODE));
         file_put_contents(
index 2cdc99cb415ee28b1a3d70243966f2a9deb6a3e0..058a4c75eba73a4ebefff1557e95de6fda34e541 100644 (file)
@@ -62,7 +62,7 @@ class MarketplaceOrders extends \yii\db\ActiveRecord
         return [
             [['store_id', 'warehouse_guid', 'returned_at', 'return_data', 'raw_data', 'guid'], 'default', 'value' => null],
             [['cancel_requested'], 'default', 'value' => 0],
-            [['status_1c'], 'default', 'value' => 1],
+            [['status_1c'], 'default', 'value' => 1000],
             [['marketplace_order_id', 'marketplace_id', 'marketplace_name', 'status_id', 'substatus_id', 'creation_date', 'updated_at', 'total', 'delivery_total', 'buyer_total_before_discount', 'tax_system', 'payment_type', 'payment_method'], 'required'],
             [['store_id', 'status_id', 'substatus_id', 'fake', 'cancel_requested', 'status_1c'], 'default', 'value' => null],
             [[ 'fake'], 'default', 'value' => 0],