]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
[ERP-283] добавлены фильтры
authorAlexander Smirnov <fredeom@mail.ru>
Fri, 31 Jan 2025 09:15:01 +0000 (12:15 +0300)
committerAlexander Smirnov <fredeom@mail.ru>
Fri, 31 Jan 2025 09:15:01 +0000 (12:15 +0300)
erp24/controllers/SalesWriteOffsPlanController.php
erp24/views/category-plan/index.php
erp24/views/sales-write-offs-plan/index.php

index 8f693165d994ee3427cd66d59766f0fb11dcd056..fc69a2e8ef222a48ef08f5c8760f1a3db1155028 100644 (file)
@@ -7,8 +7,10 @@ use yii\base\DynamicModel;
 use yii\helpers\Json;
 use yii\web\Controller;
 use yii_app\records\CityStore;
+use yii_app\records\CityStoreParams;
 use yii_app\records\Sales;
 use yii_app\records\SalesWriteOffsPlan;
+use yii_app\records\StoreDynamic;
 
 class SalesWriteOffsPlanController extends Controller
 {
@@ -16,8 +18,15 @@ class SalesWriteOffsPlanController extends Controller
         $model = DynamicModel::validateData([
             'year' => date('Y'),
             'month' => date('m'),
+            'city_id' => null,
+            'region_id' => null,
+            'raion_id' => null,
+            'store_type_id' => null,
+            'territory_manager_id' => null,
+            'kshf_id' => null,
         ], [
-            [['year', 'month'], 'safe']
+            [['year', 'month', 'city_id', 'region_id', 'raion_id', 'store_type_id',
+                'territory_manager_id', 'kshf_id'], 'safe']
         ]);
 
         $model->load(Yii::$app->request->get());
@@ -31,7 +40,6 @@ class SalesWriteOffsPlanController extends Controller
             $years [$year] = $year;
         }
 
-        $stores = CityStore::find()->andWhere(['visible' => '1'])->all();
         $salesWriteOffsPlan = SalesWriteOffsPlan::find()->where(['year' => $model->year, 'month' => $model->month])
             ->indexBy('store_id')->asArray()->all();
 
@@ -43,6 +51,60 @@ class SalesWriteOffsPlanController extends Controller
             ->indexBy('store_id')
             ->asArray()->all();
 
+        $territorialManager = $model->territorial_manager_id ?? null;
+        $bushChefFlorist = $model->kshf_id ?? null;
+
+        $query = CityStore::find()
+            ->andWhere(['visible' => CityStore::IS_VISIBLE]);
+
+        if (!empty($model->city_id)) {
+            $query->andWhere(['id' => CityStoreParams::find()
+                ->andWhere(['address_city' => $model->city_id])
+                ->select('store_id')
+                ->column()]);
+        }
+
+        if (!empty($model->region_id)) {
+            $query->andWhere(['id' => CityStoreParams::find()
+                ->andWhere(['address_region' => $model->region_id])
+                ->select('store_id')
+                ->column()]);
+        }
+
+        if (!empty($model->raion_id)) {
+            $query->andWhere(['id' => CityStoreParams::find()
+                ->andWhere(['address_district' => $model->raion_id])
+                ->select('store_id')
+                ->column()]);
+        }
+
+        if (!empty($model->store_type_id)) {
+            $query->andWhere(['id' => CityStoreParams::find()
+                ->andWhere(['store_type' => $model->store_type_id])
+                ->select('store_id')
+                ->column()]);
+        }
+
+        if (!empty($territorialManager)) {
+            $territorialManagerStoreIds = StoreDynamic::find()
+                ->select('store_id')
+                ->where(['category' => 3, 'active' => 1, 'value_int' => $territorialManager])
+                ->column();
+
+            $query->andWhere(['in', 'id', $territorialManagerStoreIds ?: [-1]]);
+        }
+
+        if (!empty($bushChefFlorist)) {
+            $bushChefFloristStoreIds = StoreDynamic::find()
+                ->select('store_id')
+                ->where(['category' => 2, 'active' => 1, 'value_int' => $bushChefFlorist])
+                ->column();
+
+            $query->andWhere(['in', 'id', $bushChefFloristStoreIds ?: [-1]]);
+        }
+
+        $stores = $query->all();
+
         return $this->render('index', compact('model', 'years', 'stores',
             'salesWriteOffsPlan', 'sales'));
     }
index 6f8453d81880b3e61ea3e4894ee28980ad0a7ee3..d2818af88e218fadd979cdf343706864af4281ab 100644 (file)
@@ -28,6 +28,8 @@ $this->registerJsFile('/js/category-plan/index.js', ['position' => \yii\web\View
 
 <div class="categoryPlanIndex m-5">
 
+    <h1>План по категориям</h1>
+
     <?php $form = ActiveForm::begin([
         'id' => 'filter-form',
         'method' => 'GET',
@@ -117,7 +119,7 @@ $this->registerJsFile('/js/category-plan/index.js', ['position' => \yii\web\View
                 </div>
                 <div class="col-4">
                     <?= $form->field($model, 'kshf_id')->widget(Select2::class, [
-                        'data' => ArrayHelper::map(Admin::findAll(['group_id' => AdminGroup::GROUP_BUSH_CHEF_FLORIST]), 'id', 'name_full'),
+                        'data' => ArrayHelper::map(Admin::findAll(['group_id' => AdminGroup::GROUP_BUSH_CHEF_FLORIST]), 'id', 'name'),
                         'language' => 'ru',
                         'options' => ['placeholder' => 'кШФ...'],
                         'pluginOptions' => [
index aecdec0c053eba3812507a20945b8bb3bbc82b6f..c15a9ebb286c2233d3044dae7299755b9f92fe48 100644 (file)
@@ -3,9 +3,15 @@
 use yii\helpers\Html;
 use yii\base\DynamicModel;
 use yii\widgets\ActiveForm;
+use yii\helpers\ArrayHelper;
 
+use kartik\select2\Select2;
 use dosamigos\datetimepicker\DateTimePicker;
 
+use yii_app\records\Admin;
+use yii_app\records\AdminGroup;
+use yii_app\records\StoreType;
+use yii_app\records\StoreCityList;
 use yii_app\helpers\HtmlHelper;
 use yii_app\records\SalesWriteOffsPlan;
 
@@ -47,13 +53,84 @@ function colorScheme2($p) {
     ]) ?>
 
     <div class="row">
-        <div class="col-1">
-            <?= $form->field($model, 'year')->dropDownList($years, ['onchange' => 'this.form.submit();'])->label(false) ?>
+        <div class="col-6">
+            <div class="row">
+                <div class="col-4">
+                    <?= $form->field($model, 'year')->dropDownList($years)->label(false) ?>
+                </div>
+                <div class="col-4">
+                    <?= $form->field($model, 'city_id')->widget(Select2::class, [
+                        'data' => ArrayHelper::map(StoreCityList::findAll(['type' => StoreCityList::TYPE_CITY]), 'id', 'name'),
+                        'language' => 'ru',
+                        'options' => ['placeholder' => 'Города...'],
+                        'pluginOptions' => [
+                            'allowClear' => true,
+                        ]
+                    ])->label(false) ?>
+                </div>
+                <div class="col-4">
+                    <?= $form->field($model, 'store_type_id')->widget(Select2::class, [
+                        'data' => ArrayHelper::map(StoreType::find()->all(), 'id', 'name'),
+                        'language' => 'ru',
+                        'options' => ['placeholder' => 'Тип магазина...'],
+                        'pluginOptions' => [
+                            'allowClear' => true,
+                        ]
+                    ])->label(false) ?>
+                </div>
+            </div>
+            <div class="row">
+                <div class="col-4">
+                    <?= $form->field($model, 'month')->dropDownList(HtmlHelper::getMonthNames())->label(false) ?>
+                </div>
+                <div class="col-4">
+                    <?= $form->field($model, 'region_id')->widget(Select2::class, [
+                        'data' => ArrayHelper::map(StoreCityList::findAll(['type' => StoreCityList::TYPE_REGION]), 'id', 'name'),
+                        'language' => 'ru',
+                        'options' => ['placeholder' => 'Регион...'],
+                        'pluginOptions' => [
+                            'allowClear' => true,
+                        ]
+                    ])->label(false) ?>
+                </div>
+                <div class="col-4">
+                    <?= $form->field($model, 'territory_manager_id')->widget(Select2::class, [
+                        'data' => ArrayHelper::map(Admin::findAll(['group_id' => AdminGroup::GROUP_BUSH_DIRECTOR]), 'id', 'name_full'),
+                        'language' => 'ru',
+                        'options' => ['placeholder' => 'Тер. Управляющий...'],
+                        'pluginOptions' => [
+                            'allowClear' => true,
+                        ]
+                    ])->label(false) ?>
+                </div>
+            </div>
+            <div class="row">
+                <div class="col-4">
+                </div>
+                <div class="col-4">
+                    <?= $form->field($model, 'raion_id')->widget(Select2::class, [
+                        'data' => ArrayHelper::map(StoreCityList::findAll(['type' => StoreCityList::TYPE_DISTRICT]), 'id', 'name'),
+                        'language' => 'ru',
+                        'options' => ['placeholder' => 'Район...'],
+                        'pluginOptions' => [
+                            'allowClear' => true,
+                        ]
+                    ])->label(false) ?>
+                </div>
+                <div class="col-4">
+                    <?= $form->field($model, 'kshf_id')->widget(Select2::class, [
+                        'data' => ArrayHelper::map(Admin::findAll(['group_id' => AdminGroup::GROUP_BUSH_CHEF_FLORIST]), 'id', 'name'),
+                        'language' => 'ru',
+                        'options' => ['placeholder' => 'кШФ...'],
+                        'pluginOptions' => [
+                            'allowClear' => true,
+                        ]
+                    ])->label(false) ?>
+                </div>
+            </div>
         </div>
-    </div>
-    <div class="row">
-        <div class="col-1">
-            <?= $form->field($model, 'month')->dropDownList(HtmlHelper::getMonthNames(), ['onchange' => 'this.form.submit();'])->label(false) ?>
+        <div class="col-4">
+            <?= Html::submitButton('Применить', ['class' => 'btn btn-secondary'])?>
         </div>
     </div>