From: fomichev Date: Mon, 14 Jul 2025 14:12:15 +0000 (+0300) Subject: Перевод статусов X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=cd430ca345e69dbc2a6ab847578abfcc0a04b563;p=erp24_rep%2Fyii-erp24%2F.git Перевод статусов --- diff --git a/erp24/controllers/MarketplaceOrdersController.php b/erp24/controllers/MarketplaceOrdersController.php index 3f5b7995..27a04a28 100644 --- a/erp24/controllers/MarketplaceOrdersController.php +++ b/erp24/controllers/MarketplaceOrdersController.php @@ -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']);