]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Смена статуса в МП
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Tue, 25 Mar 2025 14:07:21 +0000 (17:07 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Tue, 25 Mar 2025 14:07:21 +0000 (17:07 +0300)
erp24/api2/controllers/OrdersController.php

index 9e7b275ac27099db3493d5770e65fca86d490bd9..ee49df6cca5f98f8ea1e11b6ec68dc5a545d510a 100644 (file)
@@ -39,9 +39,34 @@ class OrdersController extends BaseController
             ' ' . date("d.m.Y H:i:s", time()) . ' JSON: ' . $json . '  ',
             FILE_APPEND
         );
-         $orderGuid = $result['order_id'];
-         $orderStatus = $result['status'];
 
+        $__API_PARAMS = ['order_id', 'status'];
+
+        foreach ($__API_PARAMS as $paramName) {
+            if (empty($result[$paramName])) {
+                if ($paramName != 'order_id') {
+                    LogService::apiErrorLog(
+                        json_encode(
+                            ["error_id" => 0, "error" => "$paramName is required"],
+                            JSON_UNESCAPED_UNICODE
+                        )
+                    );
+                }
+                if ($paramName != 'status') {
+                    LogService::apiErrorLog(
+                        json_encode(
+                            ["error_id" => 0, "error" => "$paramName is required"],
+                            JSON_UNESCAPED_UNICODE
+                        )
+                    );
+                }
+                return $this->asJson(["error_id" => 0, "error" => "$paramName is required"]);
+            }
+        }
+
+        $orderGuid = $result['order_id'];
+        $orderStatus = $result['status'];
+        $updateResult = null;
         $orderStatus1CCodes = MarketplaceOrders::getStatusCodes($orderStatus);
         $statuses = MarketplaceOrderStatusTypes::find()
             ->select(['id', 'code'])
@@ -52,11 +77,22 @@ class OrdersController extends BaseController
         $statusCodes = array_unique(array_keys($statuses));
         $statusId = MarketplaceService::getOrCreateStatus($orderStatus1CCodes[0], $statuses, $statusCodes);
         $substatusId = MarketplaceService::getOrCreateStatus($orderStatus1CCodes[1], $statuses, $statusCodes);
-         $order = MarketplaceOrders::find()
-             ->where(['guid' => $orderGuid])
-             ->one();
+        $order = MarketplaceOrders::find()
+            ->where(['guid' => $orderGuid])
+            ->one();
 
         if ($order && !empty($orderStatus1CCodes)) {
+            if (
+                in_array($result['status'], [MarketplaceOrders::STATUS_CANCELLED, MarketplaceOrders::STATUS_READY]) &&
+                $order->marketplace_id == 2
+            ) {
+                $updateResult = MarketplaceService::updateOrderStatus(
+                    $order->warehouse_guid,
+                    $order->marketplace_order_id,
+                    $orderStatus1CCodes[0],
+                    $orderStatus1CCodes[1]
+                );
+            }
             $order->status_id = $statusId;
             $order->substatus_id = $substatusId;
             if ($order->save()) {
@@ -65,15 +101,24 @@ class OrdersController extends BaseController
 
                 ];
                 MarketplaceService::createOrUpdateStatusHistory($order->id, $statusId, $substatusId, $orderDetails);
+            } else {
+                Yii::error(
+                    'Ошибка обновления статусов' . json_encode(
+                        $order->getErrors(),
+                        JSON_UNESCAPED_UNICODE
+                    ),
+                    __METHOD__
+                );
             }
         }
 
-       //MarketplaceService::updateOrderStatus($order->warehouse_id, $order->marketplace_order_id, $orderStatus1CCodes[0], $orderStatus1CCodes[1]);
 
         $mess["result"] = true;
         $mess["message_order"] = "Статус получен";
         $mess["message_order_guid"] = $orderGuid;
         $mess["message_status"] = $orderStatus;
+        $mess["message_status_update"] = $updateResult;
+
         LogService::apiLogs(1, json_encode($mess, JSON_UNESCAPED_UNICODE));
         file_put_contents(
             self::OUT_DIR . '/changed_orders_' . $fl . '.json',