From: Alexander Smirnov Date: Thu, 4 Jul 2024 19:38:48 +0000 (+0300) Subject: Добавил фильтры в факт таблицу X-Git-Tag: 1.3~5^2~3 X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=4d6727aa05e57056efacead4133d894052a13f4c;p=erp24_rep%2Fyii-erp24%2F.git Добавил фильтры в факт таблицу --- diff --git a/erp24/controllers/TimetableFactController.php b/erp24/controllers/TimetableFactController.php index 38d8595f..d62b217b 100644 --- a/erp24/controllers/TimetableFactController.php +++ b/erp24/controllers/TimetableFactController.php @@ -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, ]); } diff --git a/erp24/views/timetable-fact/index.php b/erp24/views/timetable-fact/index.php index 02b8a682..23b25fa9 100644 --- a/erp24/views/timetable-fact/index.php +++ b/erp24/views/timetable-fact/index.php @@ -1,22 +1,70 @@ title = Yii::t('app', 'Фактический табель сотрудников (Новый!)'); $this->params['breadcrumbs'][] = $this->title; ?> -
+

title) ?>

+ 'GET']) ?> + +
+
+ Магазин:
field($model, 'store_id')->widget(Select2::class, [ + 'data' => $stores, + 'language' => 'ru', + 'options' => ['placeholder' => 'Магазин...'], + 'pluginOptions' => [ + 'allowClear' => true + ], + ])->label(false) ?>
+ Дата до:
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) ?>
+ после:
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) ?>
+ Группа:
field($model, 'group_id')->widget(Select2::class, [ + 'data' => $adminGroup, + 'language' => 'ru', + 'options' => ['placeholder' => 'Должность...'], + 'pluginOptions' => [ + 'allowClear' => true + ], + ])->label(false) ?>
+ Автоматическое закрытие:
field($model, 'autoclosed')->checkbox([0 => 'unchecked', 1 => 'checked'], [])->label(false) ?>
+     + 'btn btn-secondary btn-sm'])?> +
+
+ + $dataProvider,