]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Добавление привязки статусов заказа к статусу обработки 1С
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Wed, 16 Jul 2025 15:05:54 +0000 (18:05 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Wed, 16 Jul 2025 15:05:54 +0000 (18:05 +0300)
erp24/controllers/crud/MarketplaceOrder1cStatusesController.php
erp24/migrations/m250716_143137_add_mp_orders_statuses_id_to_statuses_1c_processing.php [new file with mode: 0644]
erp24/records/MarketplaceOrder1cStatuses.php
erp24/views/crud/marketplace-order1c-statuses/_form.php
erp24/views/crud/marketplace-order1c-statuses/create.php
erp24/views/crud/marketplace-order1c-statuses/update.php
erp24/views/crud/marketplace-order1c-statuses/view.php

index a75c5970dcf7e1d55b3fb064264e8460ef2bf471..6f2e98d90b445edf43e2f387ed81308f1eed7ffb 100644 (file)
@@ -11,6 +11,7 @@ use yii\web\Controller;
 use yii\web\NotFoundHttpException;
 use yii\filters\VerbFilter;
 use yii_app\records\MarketplaceOrder1cStatusesRelations;
+use yii_app\records\MarketplaceOrderStatusTypes;
 use yii_app\services\LessonService;
 
 /**
@@ -91,7 +92,8 @@ class MarketplaceOrder1cStatusesController extends Controller
     public function actionCreate()
     {
         $model = new MarketplaceOrder1cStatuses();
-
+        $orderStatusTypes = MarketplaceOrderStatusTypes::find()->all();
+        $orderStatusTypesMap = ArrayHelper::map($orderStatusTypes, 'id', 'code');
         $relationModels = [new MarketplaceOrder1cStatusesRelations()];
         $allStatuses = MarketplaceOrder1cStatuses::find()
             ->select(['id','status','marketplace_id'])
@@ -147,6 +149,7 @@ class MarketplaceOrder1cStatusesController extends Controller
             'model'           => $model,
             'relationModels'  => $relationModels,
             'statusOptions'   => $statusOptionsByMarketplace,
+            'orderStatusTypes' => $orderStatusTypesMap
         ]);
     }
 
@@ -160,7 +163,8 @@ class MarketplaceOrder1cStatusesController extends Controller
     public function actionUpdate($id)
     {
         $model = $this->findModel($id);
-
+        $orderStatusTypes = MarketplaceOrderStatusTypes::find()->all();
+        $orderStatusTypesMap = ArrayHelper::map($orderStatusTypes, 'id', 'code');
         $existingRelations = $model->getRelationsFrom()->all();
         $relationModels = count($existingRelations) ? $existingRelations : [new MarketplaceOrder1cStatusesRelations()];
 
@@ -232,6 +236,7 @@ class MarketplaceOrder1cStatusesController extends Controller
             'model'           => $model,
             'relationModels'  => $relationModels,
             'statusOptions'   => $statusOptionsByMarketplace,
+            'orderStatusTypes' => $orderStatusTypesMap
         ]);
     }
 
diff --git a/erp24/migrations/m250716_143137_add_mp_orders_statuses_id_to_statuses_1c_processing.php b/erp24/migrations/m250716_143137_add_mp_orders_statuses_id_to_statuses_1c_processing.php
new file mode 100644 (file)
index 0000000..af946c9
--- /dev/null
@@ -0,0 +1,62 @@
+<?php
+
+use yii\db\Migration;
+
+class m250716_143137_add_mp_orders_statuses_id_to_statuses_1c_processing extends Migration
+{
+    const TABLE_NAME = 'erp24.marketplace_order_1c_statuses';
+    /**
+     * {@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('order_status_id')) {
+            $this->addColumn(
+                self::TABLE_NAME,
+                'order_status_id',
+                $this->integer()->null()->comment('Ссылка на статус заказа в МП'),
+            );
+        }
+        if (!$this->db->schema->getTableSchema(self::TABLE_NAME, true)->getColumn('order_substatus_id')) {
+            $this->addColumn(
+                self::TABLE_NAME,
+                'order_substatus_id',
+                $this->integer()->null()->comment('Ссылка на субстатус заказа в МП'),
+            );
+        }
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function safeDown()
+    {
+        if ($this->db->schema->getTableSchema(self::TABLE_NAME, true)->getColumn('order_status_id')) {
+            $this->dropColumn(self::TABLE_NAME, 'order_status_id');
+        }
+        if ($this->db->schema->getTableSchema(self::TABLE_NAME, true)->getColumn('order_substatus_id')) {
+            $this->dropColumn(self::TABLE_NAME, 'order_substatus_id');
+        }
+    }
+
+
+    /*
+    // Use up()/down() to run migration code without a transaction.
+    public function up()
+    {
+
+    }
+
+    public function down()
+    {
+        echo "m250716_143137_add_mp_orders_statuses_id_to_statuses_1c_processing cannot be reverted.\n";
+
+        return false;
+    }
+    */
+}
index 28530fb43634ac0a889ea8f977d2965fdc70d3bc..f6c674f82efb468a47ba78b41d541e077df5dedd 100644 (file)
@@ -16,6 +16,8 @@ use yii\db\ActiveQuery;
  * @property string $status Статус
  * @property string $status_instruction Инструкция к статусу
  * @property int $posit Порядок статусов
+ * @property int|null $order_status_id Ссылка на статус заказа в МП
+ * @property int|null $order_substatus_id Ссылка на субстатус заказа в МП
  */
 class MarketplaceOrder1cStatuses extends \yii\db\ActiveRecord
 {
@@ -53,7 +55,7 @@ class MarketplaceOrder1cStatuses extends \yii\db\ActiveRecord
             [['marketplace_id', 'status_id', 'status', 'status_instruction'], 'required'],
             [['marketplace_id'], 'default', 'value' => null],
             [['posit', 'allowed_reserve', 'allowed_closing'], 'default', 'value' => 0],
-            [['marketplace_id', 'posit', 'allowed_reserve', 'allowed_closing'], 'integer'],
+            [['marketplace_id', 'posit', 'allowed_reserve', 'allowed_closing', 'order_status_id', 'order_substatus_id'], 'integer'],
             [['status_instruction', 'status_id'], 'string'],
             [['status_id', 'status'], 'string', 'max' => 100],
         ];
@@ -73,6 +75,8 @@ class MarketplaceOrder1cStatuses extends \yii\db\ActiveRecord
             'status' => 'Статус',
             'status_instruction' => 'Инструкция к статусу',
             'posit' => 'Порядок статусов',
+            'order_status_id' => 'Ссылка на статус заказа в МП',
+            'order_substatus_id' => 'Ссылка на субстатус заказа в МП',
         ];
     }
 
@@ -108,4 +112,22 @@ class MarketplaceOrder1cStatuses extends \yii\db\ActiveRecord
             ['id' => 'status_id_from']
         )->via('relationsTo');
     }
+
+    /**
+     * Основной статус заказа
+     * @return \yii\db\ActiveQuery
+     */
+    public function getOrderStatus()
+    {
+        return $this->hasOne(MarketplaceOrderStatusTypes::class, ['id' => 'order_status_id']);
+    }
+
+    /**
+     * Субстатус заказа
+     * @return \yii\db\ActiveQuery
+     */
+    public function getOrderSubstatus()
+    {
+        return $this->hasOne(MarketplaceOrderStatusTypes::class, ['id' => 'order_substatus_id']);
+    }
 }
index 8cb9eb6a82fd4f16aeec771613ff662ddaca6470..0650665d3acdc8a75f38c3cd5b69aaae695d9243 100644 (file)
@@ -66,6 +66,23 @@ $this->registerJsFile(
                 'id' => 'marketplace-order1cstatuses-allowed_closing',
             ]
         ) ?>
+    <?= $form->field($model, 'order_status_id')
+        ->dropDownList(
+            $orderStatusTypes,
+            [
+                'prompt' => 'Привяжите статус заказа',
+                'id' => 'marketplace-order1cstatuses-order_status_id',
+            ]
+        ) ?>
+
+    <?= $form->field($model, 'order_substatus_id')
+        ->dropDownList(
+            $orderStatusTypes,
+            [
+                'prompt' => 'Привяжите субстатус заказа',
+                'id' => 'marketplace-order1cstatuses-order_substatus_id',
+            ]
+        ) ?>
 
     <?= $form->field($model, 'status_instruction')->textarea(['rows' => 4]) ?>
     <div class="form-group">
index e3140d6b5e497d563480428a7ca0c21217db3812..64b519b62502824f6a23096a0a05197bc6110d7f 100644 (file)
@@ -17,6 +17,7 @@ $this->params['breadcrumbs'][] = $this->title;
         'model'           => $model,
         'relationModels'  => $relationModels,
         'statusOptions'   => $statusOptions,
+        'orderStatusTypes' => $orderStatusTypes
     ]) ?>
 
 </div>
index f359703d32636b3fe01d5c07379240754beefc97..a9ac6e55ee03851673c00b2a647311993fb134fe 100644 (file)
@@ -21,6 +21,7 @@ $this->params['breadcrumbs'][] = 'Update';
         'model'           => $model,
         'relationModels'  => $relationModels,
         'statusOptions'   => $statusOptions,
+        'orderStatusTypes' => $orderStatusTypes
     ]) ?>
 
 </div>
index 3a2f7f3f61ca89c94b17092bcf478d5e17b38785..e73e694960994a9f72657af581644874a8b8a93f 100644 (file)
@@ -55,6 +55,18 @@ $this->params['breadcrumbs'][] = $this->title;
                     return $model->allowed_closing === 0 ? 'Нет' : 'Да';
                 }
             ],
+            [
+                'attribute' => 'order_status_id',
+                'value' => function ($model) {
+                    return $model->orderStatus->code ?? 'Нет привязки';
+                }
+            ],
+            [
+                'attribute' => 'order_substatus_id',
+                'value' => function ($model) {
+                    return $model->orderSubstatus->code ?? 'Нет привязки';
+                }
+            ],
             'status_instruction:ntext',
             [
                 'label' => 'Связанные статусы',