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

index 658829a244acaa9bf517b1b8edc8f7434f422740..a726888e51c2560955fa5df975a8648ae6a416fd 100644 (file)
@@ -40,20 +40,12 @@ class OrdersController extends BaseController
             ' ' . date("d.m.Y H:i:s", time()) . ' JSON: ' . $json . '  ',
             FILE_APPEND
         );
+        // данные из запроса
         $marketplaceGuid = $result['marketplace_id'];
         $orderGuid = $result['order_id'];
         $orderStatus = $result['status'];
 
-        $mp_guids = MarketplaceOrder1cStatuses::guid2id();
-        $marketplaceId = $mp_guids[$marketplaceGuid];
-
-        $statusRecord = MarketplaceOrder1cStatuses::find()
-            ->where(['guid' => $marketplaceGuid])
-            ->andWhere(['status' => $orderStatus])
-            ->one();
-        $statusId = (int)$statusRecord->status_id;
-
-        $orderStatus1CCodes = MarketplaceOrders::getStatusCodes($orderStatus);
+        // статусы маркетплейса
         $statuses = MarketplaceOrderStatusTypes::find()
             ->select(['id', 'code'])
             ->indexBy('code')
@@ -61,30 +53,53 @@ class OrdersController extends BaseController
             ->all();
         $statuses = ArrayHelper::map($statuses, 'code', 'id');
         $statusCodes = array_unique(array_keys($statuses));
-        $statusId = MarketplaceService::getOrCreateStatus($orderStatus1CCodes[0], $statuses, $statusCodes);
-        $substatusId = MarketplaceService::getOrCreateStatus($orderStatus1CCodes[1], $statuses, $statusCodes);
+
+        // обработка статуса от 1С
+        $mp_guids = MarketplaceOrder1cStatuses::guid2id();
+        $marketplaceId = $mp_guids[$marketplaceGuid];
+
+        $status1CRecord = MarketplaceOrder1cStatuses::find()
+            ->where(['marketplace_id' => $marketplaceId])
+            ->andWhere(['status' => $orderStatus])
+            ->one();
+        $statusId1C = (int)$status1CRecord->status_id;
+
+        // Получаем статусы МП по статусу 1С
+        $orderStatus1CToCodes = MarketplaceOrders::getStatusCodes($orderStatus);
+
+        $statusId = MarketplaceService::getOrCreateStatus($orderStatus1CToCodes[0], $statuses, $statusCodes);
+        $substatusId = MarketplaceService::getOrCreateStatus($orderStatus1CToCodes[1], $statuses, $statusCodes);
+
          $order = MarketplaceOrders::find()
              ->where(['guid' => $orderGuid])
              ->one();
 
-        if ($order && !empty($orderStatus1CCodes)) {
-            $order->status_id = $statusId;
-            $order->substatus_id = $substatusId;
+        if ($order) {
+            $order->status_1c = $statusId1C;
+            if (!empty($orderStatus1CToCodes)) {
+                $order->status_id = $statusId;
+                $order->substatus_id = $substatusId;
+            }
             if ($order->save()) {
                 $orderDetails = [
                     'date' => date('Y-m-d H:i:s')
-
                 ];
                 MarketplaceService::createOrUpdateStatusHistory($order->id, $statusId, $substatusId, $orderDetails);
+                $mess["result"] = true;
+                $mess["message_order"] = "Статус получен";
+                $mess["message_order_guid"] = $orderGuid;
+                $mess["message_status"] = $orderStatus;
+            } else {
+                Yii::error('Ошибка: ' . json_encode($order->getErrors(), JSON_UNESCAPED_UNICODE));
+                $mess["result"] = 'error';
+                $mess["message_order"] = "Ошибка сохранения статуса";
+                $mess["message_order_guid"] = $orderGuid;
+                $mess["message_status"] = $orderStatus;
             }
         }
 
        //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;
         LogService::apiLogs(1, json_encode($mess, JSON_UNESCAPED_UNICODE));
         file_put_contents(
             self::OUT_DIR . '/changed_orders_' . $fl . '.json',
index 230608673ae9cc084afa90b687e118fb620a737b..2cdc99cb415ee28b1a3d70243966f2a9deb6a3e0 100644 (file)
@@ -40,6 +40,7 @@ class MarketplaceOrders extends \yii\db\ActiveRecord
         'В работе' => ["PROCESSING", "STARTED"],
         'Собрано' => ["PROCESSING", "READY_TO_SHIP"],
         'Передано курьеру' => ["DELIVERY", "COURIER_RECEIVED"],
+        'Успех' => ["DELIVERED", "DELIVERY_SERVICE_DELIVERED"],
         'Отказ' => ["CANCELLED", "SHOP_FAILED"],
     ];
 
@@ -127,7 +128,13 @@ class MarketplaceOrders extends \yii\db\ActiveRecord
         return $this->hasOne(MarketplaceOrderStatusTypes::class, ['id' => 'substatus_id']);
     }
 
-    public static function getStatusCodes(int $status): array
+    public function getStatus1c()
+    {
+        return $this->hasOne(MarketplaceOrder1cStatuses::class, ['status_id' => 'status_1c']);
+    }
+
+
+    public static function getStatusCodes(string $status): array
     {
         return self::STATUSES_TO_CODE[$status] ?? [];
     }
index 15d75c32492776464e44b2a93dee8253785e013c..d43e3ee47a43259757d795937c2cbae2552be6d1 100644 (file)
@@ -114,7 +114,7 @@ YiiAsset::register($this);
             [
                 'attribute' => 'status_1c',
                 'value' => function ($model) {
-                    return WriteOffsErp::STATUSES[$model->status_1c];
+                    return $model->status1c->status;
                 }
             ],
             [
index 56219afa1fac09304d051eee50f49c35eed49728..4aeeec3e11d5a14b7f6309034e797a89a302c5a1 100644 (file)
@@ -58,7 +58,7 @@ $this->params['breadcrumbs'][] = $this->title;
             [
                 'attribute' => 'status_1c',
                 'value' => function ($model) {
-                    return WriteOffsErp::STATUSES[$model->status_1c];
+                    return $model->status1c->status;
                 }
             ],
         ],