From: Vladimir Fomichev Date: Mon, 22 Sep 2025 19:49:24 +0000 (+0300) Subject: поиск по имени букета X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=131a006d7b11d34fd121228c35f4dc360b835b0e;p=erp24_rep%2Fyii-erp24%2F.git поиск по имени букета --- diff --git a/erp24/controllers/MatrixBouquetActualityController.php b/erp24/controllers/MatrixBouquetActualityController.php index 605e0f7a..51cacd04 100644 --- a/erp24/controllers/MatrixBouquetActualityController.php +++ b/erp24/controllers/MatrixBouquetActualityController.php @@ -9,6 +9,7 @@ use yii\web\BadRequestHttpException; use yii\web\Response; use yii_app\records\AdminGroup; use yii_app\records\BouquetComposition; +use yii_app\records\BouquetCompositionSearch; use yii_app\records\BouquetCompositionMatrixTypeHistory; use yii_app\records\MatrixBouquetActuality; use yii_app\records\MatrixBouquetActualitySearch; @@ -60,6 +61,8 @@ class MatrixBouquetActualityController extends Controller $filter->addRule(['onlyActive', 'onlyInactive'], 'boolean'); $filter->load(Yii::$app->request->get()); + $searchModel = new BouquetCompositionSearch(); + $searchModel->load(Yii::$app->request->get()); if (Yii::$app->request->isPost && $post = Yii::$app->request->post('actuality', [])) { $this->processBatchActuality($post); @@ -82,6 +85,9 @@ class MatrixBouquetActualityController extends Controller if ($filtersUsed) { $query = BouquetComposition::find()->alias('bc'); $query->joinWith(['priceRel pr'])->addSelect(['bc.*', 'pr.price AS price']); + if (!empty($searchModel->bouquet_name)) { + $query->andWhere(['ilike', 'bc.name', $searchModel->bouquet_name]); + } if (!empty($filter->group_id) || !empty($filter->subgroup_id)) { $typeIds = []; @@ -199,6 +205,9 @@ class MatrixBouquetActualityController extends Controller } else { $query = BouquetComposition::find()->alias('bc'); $query->joinWith(['priceRel pr'])->addSelect(['bc.*', 'pr.price AS price']); + if (!empty($searchModel->bouquet_name)) { + $query->andWhere(['ilike', 'bc.name', $searchModel->bouquet_name]); + } $query->with(['actualities' => function ($q) { $q->orderBy(['date_from' => SORT_ASC]); }]); @@ -259,6 +268,7 @@ class MatrixBouquetActualityController extends Controller return $this->render('index', [ 'filter' => $filter, + 'searchModel' => $searchModel, 'dataProvider' => $dataProvider, 'groups' => $groupsList, 'subgroups' => $subgroups, diff --git a/erp24/records/BouquetCompositionSearch.php b/erp24/records/BouquetCompositionSearch.php new file mode 100644 index 00000000..e0d062fd --- /dev/null +++ b/erp24/records/BouquetCompositionSearch.php @@ -0,0 +1,51 @@ +alias('bc'); + + $dataProvider = new ActiveDataProvider([ + 'query' => $query, + ]); + + $this->load($params); + + if (!$this->validate()) { + return $dataProvider; + } + + return $dataProvider; + } +} \ No newline at end of file diff --git a/erp24/records/MatrixBouquetActuality.php b/erp24/records/MatrixBouquetActuality.php index a9816805..0e936600 100644 --- a/erp24/records/MatrixBouquetActuality.php +++ b/erp24/records/MatrixBouquetActuality.php @@ -27,7 +27,7 @@ class MatrixBouquetActuality extends \yii\db\ActiveRecord */ public static function tableName() { - return 'matrix_bouquet_actuality'; + return 'erp24.matrix_bouquet_actuality'; } /** @@ -65,4 +65,8 @@ class MatrixBouquetActuality extends \yii\db\ActiveRecord ]; } + public function getBouquet() { + return $this->hasOne(BouquetComposition::class, ['id' => 'bouquet_id']); + } + } diff --git a/erp24/records/MatrixBouquetActualitySearch.php b/erp24/records/MatrixBouquetActualitySearch.php index 48bdcef0..38a464fd 100644 --- a/erp24/records/MatrixBouquetActualitySearch.php +++ b/erp24/records/MatrixBouquetActualitySearch.php @@ -11,6 +11,7 @@ use yii_app\records\MatrixBouquetActuality; */ class MatrixBouquetActualitySearch extends MatrixBouquetActuality { + public $bouquet_name; /** * {@inheritdoc} */ @@ -18,7 +19,7 @@ class MatrixBouquetActualitySearch extends MatrixBouquetActuality { return [ [['id', 'bouquet_id', 'is_archive', 'created_by', 'updated_by'], 'integer'], - [['guid', 'date_from', 'date_to', 'created_at', 'updated_at'], 'safe'], + [['guid', 'bouquet_name', 'date_from', 'date_to', 'created_at', 'updated_at'], 'safe'], ]; } @@ -41,7 +42,8 @@ class MatrixBouquetActualitySearch extends MatrixBouquetActuality */ public function search($params, $formName = null) { - $query = MatrixBouquetActuality::find(); + $query = MatrixBouquetActuality::find() + ->joinWith(['bouquet']);; // add conditions that should always apply here @@ -71,6 +73,7 @@ class MatrixBouquetActualitySearch extends MatrixBouquetActuality ]); $query->andFilterWhere(['ilike', 'guid', $this->guid]); + $query->andFilterWhere(['ilike', 'bouquet.name', $this->bouquet_name]); return $dataProvider; } diff --git a/erp24/views/matrix-bouquet-actuality/index.php b/erp24/views/matrix-bouquet-actuality/index.php index 3ab30ba2..2827100e 100644 --- a/erp24/views/matrix-bouquet-actuality/index.php +++ b/erp24/views/matrix-bouquet-actuality/index.php @@ -195,6 +195,7 @@ foreach ($subgroups as $sg) { $dataProvider, + 'filterModel' => $searchModel, 'responsive' => false, 'hover' => true, 'floatHeader' => false, @@ -210,6 +211,10 @@ foreach ($subgroups as $sg) { 'label' => 'Наименование', 'format' => 'raw', 'contentOptions' => ['style'=>'min-width:150px;'], + 'filter' => \yii\helpers\Html::activeTextInput($searchModel, 'bouquet_name', [ + 'class' => 'form-control', + 'placeholder' => 'Поиск по имени' + ]), 'value' => function ($row, $key, $index) { $product = $row['product']; $price = $row['price'] ?? null;