]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Перевод статусов заказов на таблицу marketplace_order_1c_statuses
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Wed, 2 Apr 2025 09:17:37 +0000 (12:17 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Wed, 2 Apr 2025 09:17:37 +0000 (12:17 +0300)
erp24/api2/controllers/DataController.php
erp24/api2/controllers/OrdersController.php
erp24/migrations/m250219_062708_create_marketplace_orders_table.php
erp24/records/MarketplaceOrders.php
erp24/services/MarketplaceService.php
erp24/views/marketplace-orders/index.php
erp24/views/marketplace-orders/view.php

index ff35a892ba75e202a28bc7e2573b45024b328b92..50988923476e500dacaf5ba5f018727f0b43c6ba 100644 (file)
@@ -706,7 +706,7 @@ class DataController extends BaseController
     private function getMarketplaceNewOrders(): array {
         $marketplaceOrders = MarketplaceOrders::find()
             ->where([
-                'status_1c' => 1,
+                'status_1c' => MarketplaceOrders::STATUSES_1C_CREATED_IN_ERP,
                 'status_id' => 1,
             ])->andWhere([
                 'between',
@@ -803,7 +803,7 @@ class DataController extends BaseController
 //                'cancel_requested' => $marketplaceOrder->cancel_requested,
 //                'raw_data' => $marketplaceOrder->raw_data,
             ];
-            $marketplaceOrder->status_1c = WriteOffsErp::STATUS_SEND;
+            $marketplaceOrder->status_1c = MarketplaceOrders::STATUSES_1C_SENDED_TO_1C;
             $marketplaceOrder->save();
         }
         return $result;
@@ -2288,7 +2288,7 @@ class DataController extends BaseController
                                 }
                             }
 
-                            $marketplaceOrders->status_1c = WriteOffsErp::STATUS_ERROR_1С;
+                            $marketplaceOrders->status_1c = MarketplaceOrders::STATUSES_1C_ERROR_1С;
                             $marketplaceOrders->error_text = $errorText;
                             $marketplaceOrders->save();
                             if ($marketplaceOrders->getErrors()) {
@@ -2302,7 +2302,7 @@ class DataController extends BaseController
                         } else {
                             if (isset($arr["held"]) && $arr["held"]) {
                                 $marketplaceOrders->number_1c = $arr["number"] ?? '';
-                                $marketplaceOrders->status_1c = WriteOffsErp::STATUS_CREATED_1С;
+                                $marketplaceOrders->status_1c = MarketplaceOrders::STATUSES_1C_CREATED_IN_1C;
                                 $marketplaceOrders->save();
                                 if ($marketplaceOrders->getErrors()) {
                                     LogService::apiErrorLog(
index 9ecd90720f32a26c85a3fd8589a2b688f8814c23..d21ac932e958015e343128e0c52dead217375aff 100644 (file)
@@ -16,9 +16,6 @@ use yii_app\services\MarketplaceService;
 
 class OrdersController extends BaseController
 {
-    const OUT_DIR =
-        //"/www/api2/json";
-        "/var/www/erp24/api2/json";
     private static function getPath()
     {
         return dirname(__DIR__, 1);
@@ -93,11 +90,11 @@ class OrdersController extends BaseController
             }
             $marketplaceId = $order->marketplace_id;
 
-            $status1CRecord = MarketplaceOrder1cStatuses::find()
+            $statusId1C = MarketplaceOrder1cStatuses::find()
                 ->where(['marketplace_id' => $marketplaceId])
                 ->andWhere(['status' => $orderStatus])
-                ->one();
-            if (empty($status1CRecord)) {
+                ->one()->id;
+            if (empty($statusId1C)) {
                 $mess["result"] = 'error';
                 $mess["message_order"] = "Статус не найден";
                 LogService::apiLogs(1, json_encode($mess, JSON_UNESCAPED_UNICODE));
@@ -109,7 +106,6 @@ class OrdersController extends BaseController
                 Yii::error('Ошибка: такого статуса не существует' . $orderStatus, __METHOD__);
                 return $this->asJson($mess);
             }
-            $statusId1C = (int)$status1CRecord->status_id;
 
             // Получаем статусы МП по статусу 1С
             $orderStatus1CToCodes = MarketplaceOrders::getStatusCodes($orderStatus);
index 5ffdb108a900d33c9907edb57b544497e6d95473..37c61857ac7fde6296d7be5f96be843eacc2e808 100644 (file)
@@ -38,7 +38,7 @@ class m250219_062708_create_marketplace_orders_table extends Migration
                 'cancel_requested' => $this->tinyInteger()->notNull()->defaultValue(0)->comment('Флаг запроса отмены'),
                 'raw_data' => $this->text()->comment('Полный сырой ответ API'),
                 'guid' => $this->string(36)->null()->comment('GUID заказа в 1С'),
-                'status_1c' => $this->integer()->defaultValue(1)->comment('Статус заказа в 1С'),
+                'status_1c' => $this->integer()->null()->comment('Статус заказа в 1С'),
             ]);
         }
     }
index 732c9f800f439b154cf7e4499403885478c6ef76..e10ecaa99a9a975109fe38a1362622c89f97342f 100644 (file)
@@ -41,11 +41,14 @@ class MarketplaceOrders extends \yii\db\ActiveRecord
     const STATUS_TELEGRAM_SENT = 2;
     const STATUS_TELEGRAM_ERROR = 8;
 
-    const STATUSES_1C_CREATED_IN_ERP = 1;
-    const STATUSES_1C_CREATED_IN_1C = 2;
+    const STATUSES_1C_ERROR_1С = -3;
+    const STATUSES_1C_CREATED_IN_ERP = -2;
+    const STATUSES_1C_SENDED_TO_1C = -1;
+    const STATUSES_1C_CREATED_IN_1C = 0;
 
     const STATUSES_1C = [
         self::STATUSES_1C_CREATED_IN_ERP => 'Создан в ЕРП',
+        self::STATUSES_1C_SENDED_TO_1C => 'Отправлен в 1C',
         self::STATUSES_1C_CREATED_IN_1C => 'Создан в 1C',
     ];
 
@@ -78,7 +81,6 @@ class MarketplaceOrders extends \yii\db\ActiveRecord
         return [
             [['store_id', 'warehouse_guid', 'returned_at', 'return_data', 'raw_data', 'guid'], 'default', 'value' => null],
             [['cancel_requested', 'status_telegram'], 'default', 'value' => 0],
-            [['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],
@@ -155,7 +157,7 @@ class MarketplaceOrders extends \yii\db\ActiveRecord
 
     public function getStatus1c()
     {
-        return $this->hasOne(MarketplaceOrder1cStatuses::class, ['status_id' => 'status_1c']);
+        return $this->hasOne(MarketplaceOrder1cStatuses::class, ['id' => 'status_1c']);
     }
 
 
index ae0fa6d1c0185d9d1a8a3ffe82b14991da724354..f36659d93d4ed3884aa147545c9a512cbade618b 100644 (file)
@@ -18,6 +18,7 @@ use yii_app\helpers\File;
 use yii_app\records\Balances;
 use yii_app\records\Images;
 use yii_app\records\MarketplaceFlowwowEmails;
+use yii_app\records\MarketplaceOrder1cStatuses;
 use yii_app\records\MarketplaceOrderDelivery;
 use yii_app\records\MarketplaceOrderItems;
 use yii_app\records\MarketplaceOrders;
@@ -932,7 +933,7 @@ class MarketplaceService
     }
 
     public static function processOrders(array $allOrders)
-    {
+    { // Обработка заказов от Яндекса
         $statuses = MarketplaceOrderStatusTypes::find()
             ->select(['id', 'code'])
             ->indexBy('code')
@@ -942,6 +943,7 @@ class MarketplaceService
         $statusCodes = array_unique(array_keys($statuses));
         $newOrdersCount = 0;
         $updatedOrdersCount = 0;
+
         foreach ($allOrders as $campaignId => $orders) {
             foreach ($orders as $order) {
                 $statusCode = $order->getStatus();
@@ -1020,6 +1022,7 @@ class MarketplaceService
                     $marketplaceOrder->status_id = (int)$statusId;
                     $marketplaceOrder->substatus_id = (int)$substatusId;
                     $marketplaceOrder->raw_data = $newRawData;
+                    $marketplaceOrder->status_1c = MarketplaceOrders::STATUSES_1C_CREATED_IN_ERP;
 
                     if ($marketplaceOrder->save()) {
                         self::sendMessageToTelegram($marketplaceOrder->guid, "Тестовое сообщение для https://tracker.yandex.ru/ERP-326 из [1]");
@@ -1464,9 +1467,9 @@ class MarketplaceService
             if ($progressCallback) {
                 call_user_func($progressCallback, "Поиск писем в папке: $folder...");
             }
-            self::imap_debug_log("Поисковой запрос: {$searchCriteria}", $debugMode, $progressCallback);
+           // self::imap_debug_log("Поисковой запрос: {$searchCriteria}", $debugMode, $progressCallback);
             $emails = imap_search($inbox, $searchCriteria);
-           // $emails = imap_search($inbox, 'ON "05-Mar-2025"');
+
             self::check_imap_errors($debugMode, $progressCallback);
             if ($emails) {
                 self::imap_debug_log("Найдено " . count($emails) . " писем в " . $folder, $debugMode, $progressCallback);
@@ -1482,7 +1485,7 @@ class MarketplaceService
                         continue;
                     }
                     $subject = mb_decode_mimeheader($overview[0]->subject);
-                   // $subject = mb_convert_encoding($subject, 'UTF-8', mb_detect_encoding($subject, 'UTF-8, ISO-8859-1, Windows-1251', true));
+
                     $subject = str_replace('_', ' ', $subject);
 
                     $from = mb_decode_mimeheader($overview[0]->from);
@@ -1561,10 +1564,8 @@ class MarketplaceService
                 }
             }
             imap_close($inbox);
-
         }
 
-
         return ['processed' => $countProcessedMessages, 'all' => $countAllMessages];
     }
 
@@ -1981,6 +1982,7 @@ class MarketplaceService
         $store = MarketplaceStore::find()
             ->where(['warehouse_guid' => (string)$campaignId])
             ->andWhere(['warehouse_id' => 1])->one();
+
         $marketplaceOrder = new MarketplaceOrders();
         $marketplaceOrder->marketplace_order_id = (string)$order['number'];
         $marketplaceOrder->creation_date = date('Y-m-d H:i:s', strtotime($order['date']));
@@ -2001,6 +2003,7 @@ class MarketplaceService
         $marketplaceOrder->marketplace_name = 'ФлауВау';
         $marketplaceOrder->marketplace_id = 1;
         $marketplaceOrder->store_id = $store->store_id;
+        $marketplaceOrder->status_1c = MarketplaceOrders::STATUSES_1C_CREATED_IN_ERP;
 
         return $marketplaceOrder;
     }
index d43e3ee47a43259757d795937c2cbae2552be6d1..136dd31646978ad95e9b3fa9ec93bd84a82a310a 100644 (file)
@@ -114,7 +114,7 @@ YiiAsset::register($this);
             [
                 'attribute' => 'status_1c',
                 'value' => function ($model) {
-                    return $model->status1c->status;
+                    return $model->status1c->status ?? MarketplaceOrders::STATUSES_1C[$model->status_1c];
                 }
             ],
             [
index 4aeeec3e11d5a14b7f6309034e797a89a302c5a1..7f876a39395ef5f77b0c8add798677c46ef21aa1 100644 (file)
@@ -58,7 +58,7 @@ $this->params['breadcrumbs'][] = $this->title;
             [
                 'attribute' => 'status_1c',
                 'value' => function ($model) {
-                    return $model->status1c->status;
+                    return $model->status1c->status ?? MarketplaceOrders::STATUSES_1C[$model->status_1c];
                 }
             ],
         ],