From: fomichev Date: Thu, 27 Mar 2025 11:29:02 +0000 (+0300) Subject: Обработка статусов от 1с из задачи 372 X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=f254a394f9c446b36ce8aee8aaa790b9cd4b7190;p=erp24_rep%2Fyii-erp24%2F.git Обработка статусов от 1с из задачи 372 --- diff --git a/erp24/api2/controllers/OrdersController.php b/erp24/api2/controllers/OrdersController.php index e99dd213..3147563f 100644 --- a/erp24/api2/controllers/OrdersController.php +++ b/erp24/api2/controllers/OrdersController.php @@ -40,15 +40,15 @@ class OrdersController extends BaseController ' ' . date("d.m.Y H:i:s", time()) . ' JSON: ' . $json . ' ', FILE_APPEND ); - - $__API_PARAMS = ['order_id', 'status']; + $mess = []; + $__API_PARAMS = ['order_id', 'status', 'marketplace_id']; foreach ($__API_PARAMS as $paramName) { if (empty($result[$paramName])) { if ($paramName != 'order_id') { LogService::apiErrorLog( json_encode( - ["error_id" => 0, "error" => "$paramName is required"], + ["error_id" => 0.1, "error" => "$paramName is required"], JSON_UNESCAPED_UNICODE ) ); @@ -56,19 +56,25 @@ class OrdersController extends BaseController if ($paramName != 'status') { LogService::apiErrorLog( json_encode( - ["error_id" => 0, "error" => "$paramName is required"], + ["error_id" => 0.1, "error" => "$paramName is required"], + JSON_UNESCAPED_UNICODE + ) + ); + } + if ($paramName != 'marketplace_id') { + LogService::apiErrorLog( + json_encode( + ["error_id" => 0.1, "error" => "$paramName is required"], JSON_UNESCAPED_UNICODE ) ); } - return $this->asJson(["error_id" => 0, "error" => "$paramName is required"]); + return $this->asJson(["error_id" => 0.1, "error" => "$paramName is required"]); } } - $orderGuid = $result['order_id']; - $orderStatus = $result['status']; $updateResult = null; - $orderStatus1CCodes = MarketplaceOrders::getStatusCodes($orderStatus); + // данные из запроса $marketplaceGuid = $result['marketplace_id']; $orderGuid = $result['order_id']; @@ -91,8 +97,19 @@ class OrdersController extends BaseController ->where(['marketplace_id' => $marketplaceId]) ->andWhere(['status' => $orderStatus]) ->one(); + if (empty($status1CRecord)) { + $mess["result"] = 'error'; + $mess["message_order"] = "Статус не найден"; + LogService::apiLogs(1, json_encode($mess, JSON_UNESCAPED_UNICODE)); + file_put_contents( + self::OUT_DIR . '/changed_orders_' . $fl . '.json', + PHP_EOL . '--' . __LINE__ . ' OK ', + FILE_APPEND + ); + Yii::error('Ошибка: такого статуса не существует' . $orderStatus, __METHOD__); + return $this->asJson($mess); + } $statusId1C = (int)$status1CRecord->status_id; - // Получаем статусы МП по статусу 1С $orderStatus1CToCodes = MarketplaceOrders::getStatusCodes($orderStatus); @@ -104,6 +121,18 @@ class OrdersController extends BaseController ->one(); if ($order) { + if ( + in_array($result['status'], ['Отказ', 'Собрано']) && + $order->marketplace_id == 2 + ) { + $updateResult = MarketplaceService::updateOrderStatus( + $order->warehouse_id, + $order->marketplace_order_id, + $orderStatus1CToCodes[0], + $orderStatus1CToCodes[1] + ); + $mess["message_status_update"] = $updateResult; + } $order->status_1c = $statusId1C; if (!empty($orderStatus1CToCodes)) { $order->status_id = $statusId; @@ -113,6 +142,7 @@ class OrdersController extends BaseController $orderDetails = [ 'date' => date('Y-m-d H:i:s') ]; + MarketplaceService::createOrUpdateStatusHistory($order->id, $statusId, $substatusId, $orderDetails); $mess["result"] = true; $mess["message_order"] = "Статус получен"; @@ -127,7 +157,6 @@ class OrdersController extends BaseController } } - //MarketplaceService::updateOrderStatus($order->warehouse_id, $order->marketplace_order_id, $orderStatus1CCodes[0], $orderStatus1CCodes[1]); LogService::apiLogs(1, json_encode($mess, JSON_UNESCAPED_UNICODE)); file_put_contents( diff --git a/erp24/records/MarketplaceOrders.php b/erp24/records/MarketplaceOrders.php index 2cdc99cb..058a4c75 100644 --- a/erp24/records/MarketplaceOrders.php +++ b/erp24/records/MarketplaceOrders.php @@ -62,7 +62,7 @@ class MarketplaceOrders extends \yii\db\ActiveRecord return [ [['store_id', 'warehouse_guid', 'returned_at', 'return_data', 'raw_data', 'guid'], 'default', 'value' => null], [['cancel_requested'], 'default', 'value' => 0], - [['status_1c'], 'default', 'value' => 1], + [['status_1c'], 'default', 'value' => 1000], [['marketplace_order_id', 'marketplace_id', 'marketplace_name', 'status_id', 'substatus_id', 'creation_date', 'updated_at', 'total', 'delivery_total', 'buyer_total_before_discount', 'tax_system', 'payment_type', 'payment_method'], 'required'], [['store_id', 'status_id', 'substatus_id', 'fake', 'cancel_requested', 'status_1c'], 'default', 'value' => null], [[ 'fake'], 'default', 'value' => 0],