]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Изменение вида таблиц и поиска
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Thu, 20 Feb 2025 12:46:37 +0000 (15:46 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Thu, 20 Feb 2025 12:46:37 +0000 (15:46 +0300)
erp24/records/MarketplaceOrderStatusHistory.php
erp24/records/MarketplaceOrderStatusHistorySearch.php
erp24/views/marketplace-order-status-history/index.php

index 25212740ebf48978b41d13e47f85568ed22ec60e..781acf709284cfccf73d6c17d43fa1a8978c232a 100644 (file)
@@ -60,5 +60,13 @@ class MarketplaceOrderStatusHistory extends \yii\db\ActiveRecord
             'initiator' => 'Инициатор изменения',
         ];
     }
+    public function getStatus()
+    {
+        return $this->hasOne(MarketplaceOrderStatusTypes::class, ['id' => 'status_id']);
+    }
+    public function getSubstatus()
+    {
+        return $this->hasOne(MarketplaceOrderStatusTypes::class, ['id' => 'substatus_id']);
+    }
 
 }
index 779c9f7f54f9eaa780b020a4d412621255ce97cf..0e28766ee79666cef4e67414be453609f1a08384 100644 (file)
@@ -6,11 +6,14 @@ use yii\base\Model;
 use yii\data\ActiveDataProvider;
 use yii_app\records\MarketplaceOrderStatusHistory;
 
+
 /**
  * MarketplaceOrderStatusHistorySearch represents the model behind the search form of `yii_app\records\MarketplaceOrderStatusHistory`.
  */
 class MarketplaceOrderStatusHistorySearch extends MarketplaceOrderStatusHistory
 {
+    public $status_code; // Добавляем свойство для поиска по коду статуса
+    public $substatus_code; // Добавляем свойство для поиска по коду подстатуса
     /**
      * {@inheritdoc}
      */
@@ -18,7 +21,7 @@ class MarketplaceOrderStatusHistorySearch extends MarketplaceOrderStatusHistory
     {
         return [
             [['id', 'order_id', 'status_id', 'substatus_id', 'active'], 'integer'],
-            [['date_from', 'date_end', 'initiator'], 'safe'],
+            [['date_from', 'date_end', 'initiator', 'status_code', 'substatus_code'], 'safe'],
         ];
     }
 
@@ -41,7 +44,8 @@ class MarketplaceOrderStatusHistorySearch extends MarketplaceOrderStatusHistory
      */
     public function search($params, $formName = null)
     {
-        $query = MarketplaceOrderStatusHistory::find();
+        $query = MarketplaceOrderStatusHistory::find()
+            ->joinWith(['status statusAlias', 'substatus substatusAlias']);
 
         // add conditions that should always apply here
 
@@ -69,6 +73,11 @@ class MarketplaceOrderStatusHistorySearch extends MarketplaceOrderStatusHistory
         ]);
 
         $query->andFilterWhere(['ilike', 'initiator', $this->initiator]);
+        // Фильтр по коду статуса (с псевдонимом)
+        $query->andFilterWhere(['ilike', 'statusAlias.code', $this->status_code]);
+
+        // Фильтр по коду подстатуса (с псевдонимом)
+        $query->andFilterWhere(['ilike', 'substatusAlias.code', $this->substatus_code]);
 
         return $dataProvider;
     }
index bff79ec24f821d46422b87d3f99434aa919cfc96..6eef9d2e96e3c40ad8a110c33aebd12650f6468f 100644 (file)
@@ -10,7 +10,7 @@ use yii\grid\GridView;
 /** @var yii_app\records\MarketplaceOrderStatusHistorySearch $searchModel */
 /** @var yii\data\ActiveDataProvider $dataProvider */
 
-$this->title = 'Marketplace Order Status Histories';
+$this->title = 'История статусов';
 $this->params['breadcrumbs'][] = $this->title;
 ?>
 <div class="marketplace-order-status-history-index p-4">
@@ -42,9 +42,45 @@ $this->params['breadcrumbs'][] = $this->title;
                     ]);
                 }
             ],
-            'status_id',
-            'substatus_id',
-            'active',
+            [
+                'attribute' => 'status_id',
+                'format' => 'raw',
+                'value' => function ($model) {
+                    $status = $model->status->code ?? '';
+                    $class = '';
+                    if ($status === 'DELIVERED') {
+                        $class = 'bg-success text-white';
+                    } elseif ($status === 'CANCELLED') {
+                        $class = 'bg-danger text-white';
+                    }
+                    return Html::tag('span', $status, ['class' => "badge $class"]);
+                },
+                'filter' => Html::input('text', 'MarketplaceOrdersSearch[status_code]', $searchModel->status_code, ['class' => 'form-control']),
+            ],
+            [
+                'attribute' => 'substatus_id',
+                'value' => function ($model) {
+                    return $model->substatus->code ?? '-';
+                },
+                'filter' => Html::input('text', 'MarketplaceOrdersSearch[substatus_code]', $searchModel->substatus_code, ['class' => 'form-control']),
+            ],
+            [
+                'attribute' => 'active',
+                'format' => 'raw',
+                'value' => function ($model) {
+                    $text = '';
+                    $class = '';
+                    if ($model->active === 1) {
+                        $class = 'bg-success text-white';
+                        $text = 'Активная';
+                    } elseif ($model->active === 0) {
+                        $class = 'bg-danger text-white';
+                        $text = 'Неактивная';
+                    }
+                    return Html::tag('span', $text, ['class' => "badge $class"]);
+                },
+                'filter' => Html::input('text', 'MarketplaceOrdersSearch[status_code]', $searchModel->status_code, ['class' => 'form-control']),
+            ],
             'date_from',
             'date_end',
             'initiator:ntext',