]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Добавление поля 'status_processing_1c' feature_fomichev_erp-392_get_orders_statuses_1C
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Tue, 8 Apr 2025 10:28:16 +0000 (13:28 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Tue, 8 Apr 2025 10:28:16 +0000 (13:28 +0300)
erp24/api2/controllers/DataController.php
erp24/api2/controllers/OrdersController.php
erp24/migrations/m250408_090416_add_status_processing_1c_column_to_marketplace_orders_table.php [new file with mode: 0644]
erp24/records/MarketplaceOrders.php
erp24/views/marketplace-orders/index.php
erp24/views/marketplace-orders/view.php

index 50988923476e500dacaf5ba5f018727f0b43c6ba..8833b5e16d5a186eebfff20cb810f543d6c17dc7 100644 (file)
@@ -25,6 +25,7 @@ use yii_app\records\ExportImportTable;
 use yii_app\records\Incoming;
 use yii_app\records\IncomingItems;
 use yii_app\records\MarketplaceOrders;
+use yii_app\records\MarketplaceOrderStatusTypes;
 use yii_app\records\OrdersAmo;
 use yii_app\records\PaymentTypes;
 use yii_app\records\Prices;
@@ -704,10 +705,15 @@ class DataController extends BaseController
     }
 
     private function getMarketplaceNewOrders(): array {
+         $statusId = MarketplaceOrderStatusTypes::find()
+             ->where(['code' => 'PROCESSING'])->one()->id;
+        $substatusId = MarketplaceOrderStatusTypes::find()
+            ->where(['code' => 'STARTED'])->one()->id;
         $marketplaceOrders = MarketplaceOrders::find()
             ->where([
                 'status_1c' => MarketplaceOrders::STATUSES_1C_CREATED_IN_ERP,
-                'status_id' => 1,
+                'status_id' => $statusId,
+                'substatus_id' => $substatusId,
             ])->andWhere([
                 'between',
                 'creation_date',
@@ -2224,7 +2230,7 @@ class DataController extends BaseController
 
             if (!empty($result['created_new_orders'])) {
                 foreach ($result['created_new_orders'] as $arr) {
-                    MarketplaceOrders::updateAll(['status_1c' => 2], ['guid' => $arr['id']]);
+                    MarketplaceOrders::updateAll(['status_1c' => MarketplaceOrders::STATUSES_1C_SENDED_TO_1C], ['guid' => $arr['id']]);
                 }
             }
 
@@ -2288,7 +2294,7 @@ class DataController extends BaseController
                                 }
                             }
 
-                            $marketplaceOrders->status_1c = MarketplaceOrders::STATUSES_1C_ERROR_1С;
+                            $marketplaceOrders->status_1c = MarketplaceOrders::STATUSES_1C_ERROR_1C;
                             $marketplaceOrders->error_text = $errorText;
                             $marketplaceOrders->save();
                             if ($marketplaceOrders->getErrors()) {
index d21ac932e958015e343128e0c52dead217375aff..c0e0ccaf5b861862f140329d40e4a6b49690e395 100644 (file)
@@ -92,8 +92,8 @@ class OrdersController extends BaseController
 
             $statusId1C = MarketplaceOrder1cStatuses::find()
                 ->where(['marketplace_id' => $marketplaceId])
-                ->andWhere(['status' => $orderStatus])
-                ->one()->id;
+                ->andWhere(['status_id' => $orderStatus])
+                ->one();
             if (empty($statusId1C)) {
                 $mess["result"] = 'error';
                 $mess["message_order"] = "Статус не найден";
@@ -108,13 +108,13 @@ class OrdersController extends BaseController
             }
 
             // Получаем статусы МП по статусу 1С
-            $orderStatus1CToCodes = MarketplaceOrders::getStatusCodes($orderStatus);
+            $orderStatus1CToCodes = MarketplaceOrders::getStatusCodes($statusId1C->status);
 
             $statusId = MarketplaceService::getOrCreateStatus($orderStatus1CToCodes[0], $statuses, $statusCodes);
             $substatusId = MarketplaceService::getOrCreateStatus($orderStatus1CToCodes[1], $statuses, $statusCodes);
 
             if (
-                in_array($singleOrder['status'], ['Отказ', 'Собрано']) &&
+                in_array($statusId1C->status, ['Отказ', 'Собрано']) &&
                 $order->marketplace_id == 2
             ) {
                 /* $updateResult = MarketplaceService::updateOrderStatus(
@@ -130,7 +130,7 @@ class OrdersController extends BaseController
                     $order->substatus_id = $substatusId;
                 }
             }
-            $order->status_1c = $statusId1C;
+            $order->status_processing_1c = $statusId1C->id;
 
             if ($order->save()) {
                 // Обновляем историю статусов
@@ -141,7 +141,7 @@ class OrdersController extends BaseController
                     "order_id" => $orderGuid,
                     "result" => true,
                     "message" => "Статус обновлён",
-                    "status" => $orderStatus
+                    "status" => $order->status_processing_1c
                 ];
             } else {
                 Yii::error('Ошибка сохранения: ' . Json::encode($order->getErrors(), JSON_UNESCAPED_UNICODE));
diff --git a/erp24/migrations/m250408_090416_add_status_processing_1c_column_to_marketplace_orders_table.php b/erp24/migrations/m250408_090416_add_status_processing_1c_column_to_marketplace_orders_table.php
new file mode 100644 (file)
index 0000000..f4d078a
--- /dev/null
@@ -0,0 +1,39 @@
+<?php
+
+use yii\db\Migration;
+
+/**
+ * Handles adding columns to table `{{%marketplace_orders}}`.
+ */
+class m250408_090416_add_status_processing_1c_column_to_marketplace_orders_table extends Migration
+{
+    const TABLE_NAME = 'erp24.marketplace_orders';
+    /**
+     * {@inheritdoc}
+     */
+    public function safeUp()
+    {
+        $table = $this->db->schema->getTableSchema(self::TABLE_NAME);
+        if ($table === null) {
+            return;
+        }
+
+        if (!$this->db->schema->getTableSchema(self::TABLE_NAME, true)->getColumn('status_processing_1c')) {
+            $this->addColumn(
+                self::TABLE_NAME,
+                'status_processing_1c',
+                $this->integer()->null()->comment('Статус обработки заказа в 1С')
+            );
+        }
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function safeDown()
+    {
+        if ($this->db->schema->getTableSchema(self::TABLE_NAME, true)->getColumn('status_processing_1c')) {
+            $this->dropColumn(self::TABLE_NAME, 'status_processing_1c');
+        }
+    }
+}
index e10ecaa99a9a975109fe38a1362622c89f97342f..025ff03e6181f6c173227aef4d36703ff89da9df 100644 (file)
@@ -33,6 +33,7 @@ use Yii;
  * @property string $error_text
  * @property string|null $number_1c Название документа в 1с
  * @property string|null $telegram_error ошибка телеграмма
+ * @property string|null $status_processing_1c Статус обработки заказа в 1С
  */
 class MarketplaceOrders extends \yii\db\ActiveRecord
 {
@@ -41,15 +42,16 @@ class MarketplaceOrders extends \yii\db\ActiveRecord
     const STATUS_TELEGRAM_SENT = 2;
     const STATUS_TELEGRAM_ERROR = 8;
 
-    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_ERROR_1C = 4;
+    const STATUSES_1C_CREATED_IN_ERP = 1;
+    const STATUSES_1C_SENDED_TO_1C = 2;
+    const STATUSES_1C_CREATED_IN_1C = 3;
 
     const STATUSES_1C = [
         self::STATUSES_1C_CREATED_IN_ERP => 'Создан в ЕРП',
         self::STATUSES_1C_SENDED_TO_1C => 'Отправлен в 1C',
         self::STATUSES_1C_CREATED_IN_1C => 'Создан в 1C',
+        self::STATUSES_1C_ERROR_1C => 'Ошибка в 1C',
     ];
 
 
@@ -82,9 +84,9 @@ class MarketplaceOrders extends \yii\db\ActiveRecord
             [['store_id', 'warehouse_guid', 'returned_at', 'return_data', 'raw_data', 'guid'], 'default', 'value' => null],
             [['cancel_requested', 'status_telegram'], 'default', 'value' => 0],
             [['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],
+            [['store_id', 'status_id', 'substatus_id', 'fake', 'cancel_requested', 'status_1c', 'status_processing_1c'], 'default', 'value' => null],
             [[ 'fake'], 'default', 'value' => 0],
-            [['store_id', 'status_id', 'substatus_id', 'fake', 'cancel_requested', 'status_1c', 'marketplace_id', 'status_telegram'], 'integer'],
+            [['store_id', 'status_id', 'substatus_id', 'fake', 'cancel_requested', 'status_1c', 'marketplace_id', 'status_telegram', 'status_processing_1c'], 'integer'],
             [['creation_date', 'updated_at', 'returned_at'], 'safe'],
             [['return_data', 'raw_data', 'marketplace_name', 'telegram_error'], 'string'],
             [['total', 'delivery_total', 'buyer_total_before_discount'], 'number'],
@@ -129,6 +131,7 @@ class MarketplaceOrders extends \yii\db\ActiveRecord
             'number_1c' => 'Номер документа в 1с',
             'status_telegram' => 'Статус отправки в телеграм',
             'telegram_error' => 'Ошибка телеграмма',
+            'status_processing_1c' => 'Статус обработки заказа в 1С',
         ];
     }
 
@@ -157,7 +160,7 @@ class MarketplaceOrders extends \yii\db\ActiveRecord
 
     public function getStatus1c()
     {
-        return $this->hasOne(MarketplaceOrder1cStatuses::class, ['id' => 'status_1c']);
+        return $this->hasOne(MarketplaceOrder1cStatuses::class, ['id' => 'status_processing_1c']);
     }
 
 
index 136dd31646978ad95e9b3fa9ec93bd84a82a310a..ace9dda7b7e1ff4eaf8a666dae51cc81b32e9b55 100644 (file)
@@ -114,7 +114,13 @@ YiiAsset::register($this);
             [
                 'attribute' => 'status_1c',
                 'value' => function ($model) {
-                    return $model->status1c->status ?? MarketplaceOrders::STATUSES_1C[$model->status_1c];
+                    return MarketplaceOrders::STATUSES_1C[$model->status_1c];
+                }
+            ],
+            [
+                'attribute' => 'status_processing_1c',
+                'value' => function ($model) {
+                    return $model->status1c->status ?? null;
                 }
             ],
             [
index 7f876a39395ef5f77b0c8add798677c46ef21aa1..7e6b74df0cc0974e4a9d6372a731436be6faf637 100644 (file)
@@ -58,7 +58,13 @@ $this->params['breadcrumbs'][] = $this->title;
             [
                 'attribute' => 'status_1c',
                 'value' => function ($model) {
-                    return $model->status1c->status ?? MarketplaceOrders::STATUSES_1C[$model->status_1c];
+                    return MarketplaceOrders::STATUSES_1C[$model->status_1c];
+                }
+            ],
+            [
+                'attribute' => 'status_processing_1c',
+                'value' => function ($model) {
+                    return $model->status1c->status ?? null;
                 }
             ],
         ],