{
$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']);
{
$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']);