From 4d6727aa05e57056efacead4133d894052a13f4c Mon Sep 17 00:00:00 2001 From: Alexander Smirnov Date: Thu, 4 Jul 2024 22:38:48 +0300 Subject: [PATCH] =?utf8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?utf8?q?=D1=84=D0=B8=D0=BB=D1=8C=D1=82=D1=80=D1=8B=20=D0=B2=20=D1=84?= =?utf8?q?=D0=B0=D0=BA=D1=82=20=D1=82=D0=B0=D0=B1=D0=BB=D0=B8=D1=86=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- erp24/controllers/TimetableFactController.php | 39 ++++++++++++- erp24/views/timetable-fact/index.php | 56 +++++++++++++++++-- 2 files changed, 90 insertions(+), 5 deletions(-) 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, -- 2.39.5