From: fomichev Date: Thu, 27 Mar 2025 10:52:37 +0000 (+0300) Subject: Обработка статусов от 1с из задачи 372 X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=ffc4a428bd3bdcc05e4a058f333f3c4ea8b78b0d;p=erp24_rep%2Fyii-erp24%2F.git Обработка статусов от 1с из задачи 372 --- diff --git a/erp24/api2/controllers/OrdersController.php b/erp24/api2/controllers/OrdersController.php index 658829a2..a726888e 100644 --- a/erp24/api2/controllers/OrdersController.php +++ b/erp24/api2/controllers/OrdersController.php @@ -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', diff --git a/erp24/records/MarketplaceOrders.php b/erp24/records/MarketplaceOrders.php index 23060867..2cdc99cb 100644 --- a/erp24/records/MarketplaceOrders.php +++ b/erp24/records/MarketplaceOrders.php @@ -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] ?? []; } diff --git a/erp24/views/marketplace-orders/index.php b/erp24/views/marketplace-orders/index.php index 15d75c32..d43e3ee4 100644 --- a/erp24/views/marketplace-orders/index.php +++ b/erp24/views/marketplace-orders/index.php @@ -114,7 +114,7 @@ YiiAsset::register($this); [ 'attribute' => 'status_1c', 'value' => function ($model) { - return WriteOffsErp::STATUSES[$model->status_1c]; + return $model->status1c->status; } ], [ diff --git a/erp24/views/marketplace-orders/view.php b/erp24/views/marketplace-orders/view.php index 56219afa..4aeeec3e 100644 --- a/erp24/views/marketplace-orders/view.php +++ b/erp24/views/marketplace-orders/view.php @@ -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; } ], ],