]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Перевод статусов
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Mon, 14 Jul 2025 14:12:15 +0000 (17:12 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Mon, 14 Jul 2025 14:12:15 +0000 (17:12 +0300)
erp24/controllers/MarketplaceOrdersController.php

index 3f5b79955f680f04b629efd1d4a89248832e7ab6..27a04a28963d58999854414bdca0cc791d10b722 100644 (file)
@@ -653,45 +653,61 @@ class MarketplaceOrdersController extends Controller
     {
         $model = $this->findModel($id);
 
-        if ($model->status->code === 'PROCESSING') {
-            /*$substatusId = MarketplaceOrderStatusTypes::find()->where(['code' => "READY_TO_SHIP"])->one()->id;
-            $model->substatus_id = $substatusId;
+        if ($model->status->code !== 'PROCESSING') {
+            Yii::$app->session->setFlash('error', 'Невозможно обновить статус заказа, так как он не находится в состоянии PROCESSING.');
+            return $this->redirect(['index']);
+        }
 
-            if (!$model->save()) {
-                Yii::error('Ошибка сохранения модели: ' . json_encode($model->getErrors(), JSON_UNESCAPED_UNICODE));
-                Yii::$app->session->setFlash('error', 'Ошибка обновления статуса заказа.');
-            }*/
-            try {
+        try {
+            if ($model->fake) {
+                $deliveredStatusId = MarketplaceOrderStatusTypes::find()->select('id')->where(['code' => 'DELIVERED'])->scalar();
+                $deliveredSubstatusId = MarketplaceOrderStatusTypes::find()->select('id')->where(['code' => 'DELIVERY_SERVICE_DELIVERED'])->scalar();
+
+                if (!$deliveredStatusId || !$deliveredSubstatusId) {
+                    throw new \Exception('Не удалось найти статусы DELIVERED / DELIVERY_SERVICE_DELIVERED');
+                }
+
+                $model->status_id = $deliveredStatusId;
+                $model->substatus_id = $deliveredSubstatusId;
+
+                if (!$model->save()) {
+                    throw new \Exception('Ошибка сохранения модели: ' . json_encode($model->getErrors(), JSON_UNESCAPED_UNICODE));
+                }
+
+                Yii::$app->session->setFlash('success', 'Статус заказа успешно обновлен.');
+            } elseif ((int)$model->marketplace_id === 2) {
                 $updatedOrder = MarketplaceService::updateOrderStatus(
                     $model->warehouse_guid,
                     $model->marketplace_order_id,
                     $model->status->code,
-                    "READY_TO_SHIP"
+                    'READY_TO_SHIP'
                 );
 
                 if (!$updatedOrder || (is_array($updatedOrder) && isset($updatedOrder['error']))) {
-                    $errorMsg = is_array($updatedOrder) && isset($updatedOrder['error'])
-                        ? $updatedOrder['error']
-                        : 'Не удалось обновить статус заказа.';
-                    throw new Exception($errorMsg);
+                    $errorMsg = is_array($updatedOrder) ? ($updatedOrder['error'] ?? 'Ошибка обновления заказа') : 'Ошибка обновления заказа';
+                    throw new \Exception($errorMsg);
                 }
 
                 MarketplaceService::processOrders($updatedOrder);
                 Yii::$app->session->setFlash('success', 'Статус заказа успешно обновлен.');
-            } catch (Exception $e) {
-                Yii::$app->session->setFlash('error', 'Ошибка обновления статуса заказа: ' . $e->getMessage());
-                Yii::error(
-                    'Не удалось обновить статус заказа: ' . json_encode(
-                        $e->getMessage(),
-                        JSON_UNESCAPED_UNICODE
-                    )
-                );
+            } else {
+                $readySubstatusId = MarketplaceOrderStatusTypes::find()->select('id')->where(['code' => 'READY_TO_SHIP'])->scalar();
+
+                if (!$readySubstatusId) {
+                    throw new \Exception('Не удалось найти подстатус READY_TO_SHIP');
+                }
+
+                $model->substatus_id = $readySubstatusId;
+
+                if (!$model->save()) {
+                    throw new \Exception('Ошибка сохранения модели: ' . json_encode($model->getErrors(), JSON_UNESCAPED_UNICODE));
+                }
+
+                Yii::$app->session->setFlash('success', 'Статус заказа успешно обновлен.');
             }
-        } else {
-            Yii::$app->session->setFlash(
-                'error',
-                'Невозможно обновить статус заказа, так как он не находится в состоянии PROCESSING.'
-            );
+        } catch (\Exception $e) {
+            Yii::error('Ошибка обновления статуса заказа: ' . $e->getMessage(), 'marketplace');
+            Yii::$app->session->setFlash('error', 'Ошибка обновления статуса заказа: ' . $e->getMessage());
         }
 
         return $this->redirect(['index']);
@@ -701,46 +717,68 @@ class MarketplaceOrdersController extends Controller
     {
         $model = $this->findModel($id);
 
-        if ($model->status->code === 'PROCESSING') {
-            /*$statusId = MarketplaceOrderStatusTypes::find()->where(['code' => "CANCELLED"])->one()->id;
-            $substatusId = MarketplaceOrderStatusTypes::find()->where(['code' => "SHOP_FAILED"])->one()->id;
-            $model->status_id = $statusId;
-            $model->substatus_id = $substatusId;
+        if ($model->status->code !== 'PROCESSING') {
+            Yii::$app->session->setFlash(
+                'error',
+                'Невозможно обновить статус заказа, так как он не находится в состоянии PROCESSING.'
+            );
+            return $this->redirect(['index']);
+        }
+
+        $statusCancelled = MarketplaceOrderStatusTypes::find()->where(['code' => 'CANCELLED'])->one();
+        $substatusFailed = MarketplaceOrderStatusTypes::find()->where(['code' => 'SHOP_FAILED'])->one();
+
+        if (!$statusCancelled || !$substatusFailed) {
+            Yii::error('Не найдены статусы CANCELLED или SHOP_FAILED');
+            Yii::$app->session->setFlash('error', 'Не удалось найти нужные статусы.');
+            return $this->redirect(['index']);
+        }
+
+        if ($model->fake) {
+            $model->status_id = $statusCancelled->id;
+            $model->substatus_id = $substatusFailed->id;
+
             if (!$model->save()) {
                 Yii::error('Ошибка сохранения модели: ' . json_encode($model->getErrors(), JSON_UNESCAPED_UNICODE));
                 Yii::$app->session->setFlash('error', 'Ошибка обновления статуса заказа.');
+            } else {
+                Yii::$app->session->setFlash('success', 'Статус заказа успешно обновлен.');
             }
-            return $this->redirect(['index']);*/
 
+            return $this->redirect(['index']);
+        }
+
+        if ((int)$model->marketplace_id === 2) {
             try {
                 $updatedOrder = MarketplaceService::updateOrderStatus(
                     $model->warehouse_guid,
                     $model->marketplace_order_id,
-                    "CANCELLED",
-                    "SHOP_FAILED"
+                    'CANCELLED',
+                    'SHOP_FAILED'
                 );
 
-                if (!$updatedOrder || (is_array($updatedOrder) && isset($updatedOrder['error']))) {
-                    $errorMsg = is_array($updatedOrder) && isset($updatedOrder['error'])
-                        ? $updatedOrder['error']
-                        : 'Не удалось обновить статус заказа.';
-                    throw new Exception($errorMsg);
+                if (is_array($updatedOrder) && isset($updatedOrder['error'])) {
+                    throw new \Exception($updatedOrder['error']);
                 }
 
                 MarketplaceService::processOrders($updatedOrder);
                 Yii::$app->session->setFlash('success', 'Статус заказа успешно обновлен.');
-            } catch (Exception $e) {
+            } catch (\Exception $e) {
+                Yii::error('Не удалось обновить статус заказа: ' . $e->getMessage(), __METHOD__);
                 Yii::$app->session->setFlash('error', 'Ошибка обновления статуса заказа: ' . $e->getMessage());
-                Yii::error('Не удалось обновить статус заказа: ' . json_encode(
-                    $e->getMessage(),
-                    JSON_UNESCAPED_UNICODE
-                ));
             }
+
+            return $this->redirect(['index']);
+        }
+
+        $model->status_id = $statusCancelled->id;
+        $model->substatus_id = $substatusFailed->id;
+
+        if (!$model->save()) {
+            Yii::error('Ошибка сохранения модели: ' . json_encode($model->getErrors(), JSON_UNESCAPED_UNICODE));
+            Yii::$app->session->setFlash('error', 'Ошибка обновления статуса заказа.');
         } else {
-            Yii::$app->session->setFlash(
-                'error',
-                'Невозможно обновить статус заказа, так как он не находится в состоянии PROCESSING.'
-            );
+            Yii::$app->session->setFlash('success', 'Статус заказа успешно обновлен.');
         }
 
         return $this->redirect(['index']);