]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Добавил фильтры в факт таблицу
authorAlexander Smirnov <fredeom@mail.ru>
Thu, 4 Jul 2024 19:38:48 +0000 (22:38 +0300)
committerAlexander Smirnov <fredeom@mail.ru>
Thu, 4 Jul 2024 19:38:48 +0000 (22:38 +0300)
erp24/controllers/TimetableFactController.php
erp24/views/timetable-fact/index.php

index 38d8595fdf534e81b1f8a42181b8fa3bc761f346..d62b217bc0ba922b235d646bee1cf231120a4fa8 100644 (file)
@@ -3,6 +3,11 @@
 namespace app\controllers;
 
 use Yii;
+use yii\base\DynamicModel;
+use yii\db\Expression;
+use yii\helpers\ArrayHelper;
+use yii_app\records\AdminGroup;
+use yii_app\records\CityStore;
 use yii_app\records\TimetableFactModel;
 use yii\data\ActiveDataProvider;
 use yii\db\Query;
@@ -43,8 +48,37 @@ class TimetableFactController extends Controller
      */
     public function actionIndex()
     {
+        $model = DynamicModel::validateData([
+            'store_id' => null, 'date_start' => null, 'date_end' => null, 'group_id' => null, 'autoclosed' => false
+        ], [
+           [['store_id', 'date_start', 'date_end', 'group_id', 'autoclosed'], 'safe']
+        ]);
+        $model->load(Yii::$app->request->get());
+        $timetableFactModelQuery = TimetableFactModel::find();
+        if ($model->store_id && $model->store_id > 0) {
+            $timetableFactModelQuery->andWhere(['store_id' => $model->store_id]);
+        }
+        if ($model->date_start) {
+            $timetableFactModelQuery->andWhere(['>=', new Expression('CONCAT(date_end, \' \', time_end)'), $model->date_start]);
+        }
+        if ($model->date_end) {
+            $timetableFactModelQuery->andWhere(['<=', new Expression('CONCAT(date_start, \' \', time_start)'), $model->date_end]);
+        }
+        if ($model->group_id && $model->group_id > 0) {
+            $timetableFactModelQuery->andWhere(['d_id' => $model->group_id]);
+        }
+        if ($model->autoclosed) {
+            $timetableFactModelQuery->andWhere(['autoclosed' => '1']);
+        }
+
+        $stores = ArrayHelper::map(CityStore::find()->all(), 'id', 'name');
+        $stores = [0 => 'Любой', ...$stores];
+
+        $adminGroup = ArrayHelper::map(AdminGroup::find()->where(['id' => AdminGroup::getGroupsForEmployeeOnCashbox()])->all(), 'id', 'name');
+        $adminGroup = [0 => 'Любая', ...$adminGroup];
+
         $dataProvider = new ActiveDataProvider([
-            'query' => TimetableFactModel::find(),
+            'query' => $timetableFactModelQuery,
             /*
             'pagination' => [
                 'pageSize' => 50
@@ -60,6 +94,9 @@ class TimetableFactController extends Controller
 
         return $this->render('index', [
             'dataProvider' => $dataProvider,
+            'model' => $model,
+            'stores' => $stores,
+            'adminGroup' => $adminGroup,
         ]);
     }
 
index 02b8a6823efb20d2e67ceebbf38736b4144bc2f6..23b25fa9c3ef7b38387fc89f6211e809b44d59c5 100644 (file)
@@ -1,22 +1,70 @@
 <?php
 
-use yii_app\records\TimetableFactModel;
+use dosamigos\datetimepicker\DateTimePicker;
+use kartik\select2\Select2;
+use yii\widgets\ActiveForm;
 use yii\helpers\Html;
-use yii\helpers\Url;
 use yii\grid\ActionColumn;
 use yii\grid\GridView;
-use yii_app\services\FileService;
 
 /** @var yii\web\View $this */
 /** @var yii\data\ActiveDataProvider $dataProvider */
+/** @var \yii\base\DynamicModel $model */
+/** @var array $stores */
+/** @var array $adminGroup */
 
 $this->title = Yii::t('app', 'Фактический табель сотрудников (Новый!)');
 $this->params['breadcrumbs'][] = $this->title;
 ?>
-<div class="timetable-fact-model-index">
+<div class="timetable-fact-model-index m-5">
 
     <h1><?= Html::encode($this->title) ?></h1>
 
+    <?php $form = ActiveForm::begin(['method' => 'GET']) ?>
+
+    <div class="row">
+        <div class="col-12">
+            Магазин: <div style="display:inline-block"><?= $form->field($model, 'store_id')->widget(Select2::class, [
+                    'data' => $stores,
+                    'language' => 'ru',
+                    'options' => ['placeholder' => 'Магазин...'],
+                    'pluginOptions' => [
+                        'allowClear' => true
+                    ],
+                ])->label(false) ?></div>
+            Дата до: <div style="display:inline-block"><?= $form->field($model, 'date_start')->widget(DateTimePicker::class, [
+                    'language' => 'ru',
+                    'template' => '{input}',
+                    'clientOptions' => [
+                        'autoclose' => true,
+                        'format' => 'Y-m-d H:i:s',
+                        'todayBtn' => true
+                    ],
+                ])->label(false) ?></div>
+                после: <div style="display:inline-block"><?= $form->field($model, 'date_end')->widget(DateTimePicker::class, [
+                    'language' => 'ru',
+                    'template' => '{input}',
+                    'clientOptions' => [
+                        'autoclose' => true,
+                        'format' => 'Y-m-d H:i:s',
+                        'todayBtn' => true
+                    ],
+                ])->label(false) ?></div>
+            Группа: <div style="display:inline-block"><?= $form->field($model, 'group_id')->widget(Select2::class, [
+                    'data' => $adminGroup,
+                    'language' => 'ru',
+                    'options' => ['placeholder' => 'Должность...'],
+                    'pluginOptions' => [
+                        'allowClear' => true
+                    ],
+                ])->label(false) ?></div>
+            Автоматическое закрытие: <div style="display:inline-block"><?= $form->field($model, 'autoclosed')->checkbox([0 => 'unchecked', 1 => 'checked'], [])->label(false) ?></div>
+            &nbsp;&nbsp;&nbsp;
+            <?= Html::submitButton('Применить', ['class' => 'btn btn-secondary btn-sm'])?>
+        </div>
+    </div>
+
+    <?php ActiveForm::end() ?>
 
     <?= GridView::widget([
         'dataProvider' => $dataProvider,