]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
ERP-413 Обработка ОС Планограмма (месяц)
authormarina <m.zozirova@gmail.com>
Mon, 12 May 2025 15:20:48 +0000 (18:20 +0300)
committermarina <m.zozirova@gmail.com>
Mon, 12 May 2025 15:20:48 +0000 (18:20 +0300)
erp24/controllers/AutoPlannogrammaController.php
erp24/services/AutoPlannogrammaService.php
erp24/views/auto-plannogramma/1.php
erp24/views/auto-plannogramma/2.php
erp24/views/auto-plannogramma/3.php
erp24/views/auto-plannogramma/4.php
erp24/views/auto-plannogramma/5.php
erp24/views/auto-plannogramma/6.php

index 05489a8490564ee3378d86c328e67ff4f10e275c..bc6a3c3ddd7c76ea3359b253dc02e96f6166d91f 100644 (file)
@@ -213,7 +213,8 @@ class AutoPlannogrammaController extends BaseController
         $filters = [
             'category' => $request->get('category'),
             'store_id' => $request->get('store_id'),
-            'plan_date' => $request->get('plan_date'),
+            'year' => $request->get('year'),
+            'month' => $request->get('month'),
             'type' => $request->get('type'),
         ];
 
@@ -221,12 +222,10 @@ class AutoPlannogrammaController extends BaseController
             'allModels' => [],
             'pagination' => ['pageSize' => 100],
         ]);
-        if (!empty($filters['plan_date'])) {
-            $planDateParts = explode('-', $filters['plan_date']);
-            if (count($planDateParts) === 2) {
-                [$month, $year] = $planDateParts;
-                $filters['plan_date'] = "$year-$month-01";
-            }
+
+        // Обработка даты на год и месяц
+        if (!empty($filters['year']) && !empty($filters['month'])) {
+            $filters['plan_date'] = $filters['year'] . '-' . str_pad($filters['month'], 2, '0', STR_PAD_LEFT) . '-01';
 
             $service = new AutoPlannogrammaService();
             $data = $service->getMonthCategoryShareOrWriteOff($filters['plan_date'], $filters, $filters['type']);
@@ -274,7 +273,8 @@ class AutoPlannogrammaController extends BaseController
         $filters = [
             'category' => $request->get('category'),
             'store_id' => $request->get('store_id'),
-            'plan_date' => $request->get('plan_date'),
+            'year' => $request->get('year'),
+            'month' => $request->get('month'),
             'type' => $request->get('type'),
         ];
 
@@ -283,19 +283,15 @@ class AutoPlannogrammaController extends BaseController
             'pagination' => ['pageSize' => 100],
         ]);
 
+        // Обработка даты на год и месяц
+        if (!empty($filters['year']) && !empty($filters['month'])) {
+            $filters['plan_date'] = $filters['year'] . '-' . str_pad($filters['month'], 2, '0', STR_PAD_LEFT) . '-01';
 
-        if (!empty($filters['plan_date'])) {
-            $planDateParts = explode('-', $filters['plan_date']);
-            if (count($planDateParts) === 2) {
-                [$month, $year] = $planDateParts;
-                $filters['plan_date'] = "$year-$month-01";
-            }
             $service = new AutoPlannogrammaService();
 
             $monthCategoryShare = $service->getMonthCategoryShareOrWriteOff($filters['plan_date'], $filters);
             $data = $service->getMonthCategoryGoal($monthCategoryShare, $filters['plan_date'], $filters);
 
-
             $flatData = array_filter($data, function ($row) use ($filters) {
                 foreach ($filters as $key => $value) {
                     if (empty($value)) continue;
@@ -308,12 +304,12 @@ class AutoPlannogrammaController extends BaseController
                 return true;
             });
 
-
             $dataProvider = new ArrayDataProvider([
                 'allModels' => $flatData,
                 'pagination' => ['pageSize' => 100],
             ]);
         }
+
         return $this->render('2', [
             'dataProvider' => $dataProvider,
             'filters' => $filters,
@@ -328,7 +324,8 @@ class AutoPlannogrammaController extends BaseController
             'category' => $request->get('category'),
             'subcategory' => $request->get('subcategory'),
             'store_id' => $request->get('store_id'),
-            'plan_date' => $request->get('plan_date'),
+            'year' => $request->get('year'),
+            'month' => $request->get('month'),
             'type' => $request->get('type'),
         ];
 
@@ -338,12 +335,9 @@ class AutoPlannogrammaController extends BaseController
         ]);
 
 
-        if (!empty($filters['plan_date'])) {
-            $planDateParts = explode('-', $filters['plan_date']);
-            if (count($planDateParts) === 2) {
-                [$month, $year] = $planDateParts;
-                $filters['plan_date'] = "$year-$month-01";
-            }
+        // Обработка даты на год и месяц
+        if (!empty($filters['year']) && !empty($filters['month'])) {
+            $filters['plan_date'] = $filters['year'] . '-' . str_pad($filters['month'], 2, '0', STR_PAD_LEFT) . '-01';
             $service = new AutoPlannogrammaService();
 
             $data = $service->getMonthSubcategoryShareOrWriteOff($filters['plan_date'], $filters, $filters['type']);
@@ -379,7 +373,8 @@ class AutoPlannogrammaController extends BaseController
             'category' => $request->get('category'),
             'subcategory' => $request->get('subcategory'),
             'store_id' => $request->get('store_id'),
-            'plan_date' => $request->get('plan_date'),
+            'year' => $request->get('year'),
+            'month' => $request->get('month'),
             'type' => $request->get('type'),
         ];
 
@@ -389,7 +384,9 @@ class AutoPlannogrammaController extends BaseController
         ]);
 
 
-        if (!empty($filters['plan_date'])) {
+        // Обработка даты на год и месяц
+        if (!empty($filters['year']) && !empty($filters['month'])) {
+            $filters['plan_date'] = $filters['year'] . '-' . str_pad($filters['month'], 2, '0', STR_PAD_LEFT) . '-01';
             $planDateParts = explode('-', $filters['plan_date']);
             if (count($planDateParts) === 2) {
                 [$month, $year] = $planDateParts;
@@ -442,7 +439,8 @@ class AutoPlannogrammaController extends BaseController
             'subcategory' => $request->get('subcategory'),
             'species' => $request->get('species'),
             'store_id' => $request->get('store_id'),
-            'plan_date' => $request->get('plan_date'),
+            'year' => $request->get('year'),
+            'month' => $request->get('month'),
             'type' => $request->get('type'),
         ];
 
@@ -451,13 +449,9 @@ class AutoPlannogrammaController extends BaseController
             'pagination' => ['pageSize' => 100],
         ]);
 
-
-        if (!empty($filters['plan_date'])) { $planDateParts = explode('-', $filters['plan_date']);
-            if (count($planDateParts) === 2) {
-                [$month, $year] = $planDateParts;
-                $filters['plan_date'] = "$year-$month-01";
-            }
-
+        // Обработка даты на год и месяц
+        if (!empty($filters['year']) && !empty($filters['month'])) {
+            $filters['plan_date'] = $filters['year'] . '-' . str_pad($filters['month'], 2, '0', STR_PAD_LEFT) . '-01';
             $service = new AutoPlannogrammaService();
 
             $data = $service->getMonthSpeciesShareOrWriteOff(
@@ -500,7 +494,8 @@ class AutoPlannogrammaController extends BaseController
             'subcategory' => $request->get('subcategory'),
             'species' => $request->get('species'),
             'store_id' => $request->get('store_id'),
-            'plan_date' => $request->get('plan_date'),
+            'year' => $request->get('year'),
+            'month' => $request->get('month'),
             'type' => $request->get('type'),
         ];
 
@@ -510,13 +505,9 @@ class AutoPlannogrammaController extends BaseController
         ]);
 
 
-        if (!empty($filters['plan_date'])) {
-            $planDateParts = explode('-', $filters['plan_date']);
-            if (count($planDateParts) === 2) {
-                [$month, $year] = $planDateParts;
-                $filters['plan_date'] = "$year-$month-01";
-            }
-
+        // Обработка даты на год и месяц
+        if (!empty($filters['year']) && !empty($filters['month'])) {
+            $filters['plan_date'] = $filters['year'] . '-' . str_pad($filters['month'], 2, '0', STR_PAD_LEFT) . '-01';
             $service = new AutoPlannogrammaService();
             
             $monthCategoryShare = $service->getMonthCategoryShareOrWriteOff(
index 70f6a2cce10ff03ad63668dd6b3a0fd518c2737c..b4a07680be990e65c0adecb3a85991251030faa6 100644 (file)
@@ -86,10 +86,6 @@ class AutoPlannogrammaService
             return [];
         }
 
-        if (!in_array($type, [self::TYPE_SALES, self::TYPE_WRITE_OFFS], true)) {
-            throw new \InvalidArgumentException("Недопустимый тип операции: $type");
-        }
-
         $query = $this->buildBaseTotalsQuery($type);
         $query = $this->applyJoins($query, $type);
 
@@ -119,11 +115,6 @@ class AutoPlannogrammaService
      */
     public function getMonthCategoryShareOrWriteOff(string $dateFrom, ?array $filters = null, string $type = self::TYPE_SALES): array
     {
-        // Проверка типа операции
-        if (!in_array($type, [self::TYPE_SALES, self::TYPE_WRITE_OFFS], true)) {
-            throw new \InvalidArgumentException("Недопустимый тип операции: $type");
-        }
-
         // Получение ID видимых магазинов
         $storeIds = array_map(fn($store) => $store->id, $this->getVisibleStores());
 
@@ -250,10 +241,6 @@ class AutoPlannogrammaService
      */
     public function getMonthSubcategoryShareOrWriteOff(string $dateFrom, ?array $filters = null, string $type = self::TYPE_SALES): array
     {
-        if (!in_array($type, [self::TYPE_SALES, self::TYPE_WRITE_OFFS], true)) {
-            throw new \InvalidArgumentException("Недопустимый тип операции: $type");
-        }
-
         $storeIds = array_map(fn($store) => $store->id, $this->getVisibleStores());
         if (!empty($filters['store_id'])) {
             $storeIds = array_intersect($storeIds, [(int)$filters['store_id']]);
@@ -266,6 +253,12 @@ class AutoPlannogrammaService
         $productTableJoin = $type === self::TYPE_WRITE_OFFS ? ['wp' => 'write_offs_products'] : ['sp' => 'sales_products'];
         $productTableJoinCondition = $type === self::TYPE_WRITE_OFFS ? 'wp.write_offs_id = w.id' : 'sp.check_id = s.id';
 
+        $date = new \DateTime($dateFrom);
+        $months = [
+            ['between', 'date', $date->modify('-1 year')->format('Y-m-01'), $date->format('Y-m-t')],
+            ['between', 'date', $date->modify('-1 year')->format('Y-m-01'), $date->format('Y-m-t')],
+        ];
+
         $query = (new Query())
             ->select([
                 'store_id' => 'main.ex_entity_id',
@@ -287,9 +280,9 @@ class AutoPlannogrammaService
                     ->leftJoin($productTableJoin, $productTableJoinCondition)
                     ->leftJoin('products_1c_nomenclature p1c', "p1c.id = $productJoinCondition")
                     ->leftJoin('export_import_table ex', $storeJoinCondition)
-                    ->where(['>=', 'date', $dateFrom])
                     ->andWhere(['ex.entity_id' => $storeIds])
                     ->andWhere(['<>', 'p1c.subcategory', ''])
+                    ->andWhere(['or', ...$months])
                     ->groupBy(['ex.entity_id', 'p1c.category', 'p1c.subcategory']),
             ])
             ->innerJoin(
@@ -302,9 +295,9 @@ class AutoPlannogrammaService
                     ->leftJoin($productTableJoin, $productTableJoinCondition)
                     ->leftJoin('products_1c_nomenclature p1c', "p1c.id = $productJoinCondition")
                     ->leftJoin('export_import_table ex', $storeJoinCondition)
-                    ->where(['>=', 'date', $dateFrom])
                     ->andWhere(['ex.entity_id' => $storeIds])
                     ->andWhere(['<>', 'p1c.subcategory', ''])
+                    ->andWhere(['or', ...$months])
                     ->groupBy(['ex.entity_id'])],
                 'main.ex_entity_id = totals.store_id'
             );
@@ -312,7 +305,7 @@ class AutoPlannogrammaService
         $rows = $query->all();
         $result = [];
 
-        foreach ($rows as $row) {
+       foreach ($rows as $row) {
             $result[] = [
                 'store_id' => $row['store_id'],
                 'category' => $row['category'],
@@ -334,6 +327,10 @@ class AutoPlannogrammaService
      */
     public function getMonthSubcategoryGoal(array $subcategoryShare, array $categoryGoals): array
     {
+        echo '<pre>';
+        var_dump($subcategoryShare);
+        echo '</pre>';
+        die();
         $indexedGoals = [];
         foreach ($categoryGoals as $goal) {
             $indexedGoals[$goal['store_id']][$goal['category']] = $goal['goal'];
@@ -365,10 +362,6 @@ class AutoPlannogrammaService
      */
     public function getMonthSpeciesShareOrWriteOff(string $dateFrom, ?array $filters = null, string $type = self::TYPE_SALES): array
     {
-        if (!in_array($type, [self::TYPE_SALES, self::TYPE_WRITE_OFFS], true)) {
-            throw new \InvalidArgumentException("Недопустимый тип операции: $type");
-        }
-
         $storeIds = array_map(fn($store) => $store->id, $this->getVisibleStores());
         if (!empty($filters['store_id'])) {
             $storeIds = array_intersect($storeIds, [(int)$filters['store_id']]);
@@ -381,6 +374,12 @@ class AutoPlannogrammaService
         $productTableJoin = $type === self::TYPE_WRITE_OFFS ? ['wp' => 'write_offs_products'] : ['sp' => 'sales_products'];
         $productTableJoinCondition = $type === self::TYPE_WRITE_OFFS ? 'wp.write_offs_id = w.id' : 'sp.check_id = s.id';
 
+        $date = new \DateTime($dateFrom);
+        $months = [
+            ['between', 'date', $date->modify('-1 year')->format('Y-m-01'), $date->format('Y-m-t')],
+            ['between', 'date', $date->modify('-1 year')->format('Y-m-01'), $date->format('Y-m-t')],
+        ];
+
         $query = (new Query())
             ->select([
                 'store_id' => 'main.ex_entity_id',
@@ -418,7 +417,7 @@ class AutoPlannogrammaService
                     ->leftJoin($productTableJoin, $productTableJoinCondition)
                     ->leftJoin('products_1c_nomenclature p1c', "p1c.id = $productJoinCondition")
                     ->leftJoin('export_import_table ex', $storeJoinCondition)
-                    ->where(['>=', key($fromTable) . '.date', $dateFrom])
+                    ->andWhere(['or', ...$months])
                     ->andWhere(['ex.entity_id' => $storeIds])
                     ->andWhere(['<>', 'p1c.species', ''])
                     ->groupBy(['ex.entity_id'])],
@@ -482,16 +481,15 @@ class AutoPlannogrammaService
     {
         $datePlan = $filters['plan_date'];
         $dateFromForCategory = (new \DateTime($datePlan))->modify('-' . (self::CATEGORY_LOOKBACK_MONTHS + self::LOOKBACK_MONTHS) . ' months')->format(self::DATE_FORMAT);
-        $dateToForCategory = (new \DateTime($datePlan))->modify('-' . (self::CATEGORY_LOOKBACK_MONTHS + self::LOOKBACK_MONTHS) . ' months')->format(self::DATE_FORMAT);
         $dateFrom = (new \DateTime($datePlan))->modify('-' . (self::SUBCATEGORY_LOOKBACK_MONTHS + self::LOOKBACK_MONTHS). ' months')->format(self::DATE_FORMAT);
 
         $monthCategoryShare = $this->getMonthCategoryShareOrWriteOff($dateFromForCategory, $filters);
         $monthCategoryGoal = $this->getMonthCategoryGoal($monthCategoryShare, $datePlan, $filters);
 
-        $monthSubcategoryShare = $this->getMonthSubcategoryShareOrWriteOff($dateFrom, $filters);
+        $monthSubcategoryShare = $this->getMonthSubcategoryShareOrWriteOff($datePlan, $filters);
         $monthSubcategoryGoal = $this->getMonthSubcategoryGoal($monthSubcategoryShare, $monthCategoryGoal);
 
-        $monthSpeciesShare = $this->getMonthSpeciesShareOrWriteOff($dateFrom, $filters);
+        $monthSpeciesShare = $this->getMonthSpeciesShareOrWriteOff($datePlan, $filters);
         $monthSpeciesGoal = $this->getMonthSpeciesGoalDirty($monthSpeciesShare, $monthSubcategoryGoal);
 
         $filtered = array_filter($monthSpeciesGoal, function ($row) use ($filters) {
index 265601f92ddc19cafcce495e53f267dc1377dfe6..68f18ce9d98263103ede252ebcab3983aae2228d 100644 (file)
@@ -7,7 +7,7 @@
     use yii\widgets\ActiveForm;
     use yii_app\records\CityStore;
     use yii_app\records\Products1cNomenclature;?>
-<h1 class="ms-3 mb-4"><?= Html::encode("Расчет доли месяца для категорий (month_category_share)") ?></h1>
+    <h1 class="ms-3 mb-4"><?= Html::encode("Расчет доли месяца для категорий (month_category_share)") ?></h1>
     <?php $form = ActiveForm::begin(['method' => 'get']); ?>
     <div class="row p-3">
         <div class="col-md">
             ])->label('Магазин') ?>
         </div>
         <div class="col-md">
-            <?= $form->field(new \yii\base\DynamicModel(['plan_date' => $filters['plan_date'] ?? '']), 'plan_date')->widget(DatePicker::class, [
-                'pluginOptions' => [
-                    'autoclose' => true,
-                    'format' => 'mm-yyyy',
-                ],
-                'options' => [
-                    'class' => 'form-control',
-                    'placeholder' => 'Плановая дата',
-                    'name' => 'plan_date',
-                ],
-            ])->label('Плановая дата') ?>
+            <?= $form->field(new \yii\base\DynamicModel(['month' => $filters['month'] ?? '']), 'month')->dropDownList(\yii_app\helpers\DateHelper::MONTH_NUMBER_NAMES, [
+                'prompt' => 'Месяц',
+                'name' => 'month',
+            ])->label('Плановый месяц') ?>
+        </div>
+
+        <div class="col-md">
+            <?= $form->field(new \yii\base\DynamicModel(['year' => $filters['year'] ?? '']), 'year')->dropDownList(['2025' => 2025, '2026' => 2026], [
+                'prompt' => 'Год',
+                'name' => 'year',
+            ])->label('Плановый год') ?>
         </div>
         <div class="col-md">
             <?= $form->field(new \yii\base\DynamicModel(['type' => $filters['type'] ?? '']), 'type')->widget(Select2::class, [
@@ -77,3 +77,4 @@
         ['attribute' => 'percent', 'label' => 'Доля', 'format' => ['percent', 2]],
     ],
 ]); ?>
+
index 960cd920245a7d150a0174ddabb031ba632047e0..d6c7118670963e37acd8d1cff1ebef853aca68b7 100644 (file)
             ])->label('Магазин') ?>
         </div>
         <div class="col-md">
-            <?= $form->field(new \yii\base\DynamicModel(['plan_date' => $filters['plan_date'] ?? '']), 'plan_date')->widget(DatePicker::class, [
-                'pluginOptions' => [
-                    'autoclose' => true,
-                    'format' => 'mm-yyyy',
-                ],
-                'options' => [
-                    'class' => 'form-control',
-                    'placeholder' => 'Плановая дата',
-                    'name' => 'plan_date',
-                ],
-            ])->label('Плановая дата') ?>
+            <?= $form->field(new \yii\base\DynamicModel(['month' => $filters['month'] ?? '']), 'month')->dropDownList(\yii_app\helpers\DateHelper::MONTH_NUMBER_NAMES, [
+                'prompt' => 'Месяц',
+                'name' => 'month',
+            ])->label('Плановый месяц') ?>
+        </div>
+
+        <div class="col-md">
+            <?= $form->field(new \yii\base\DynamicModel(['year' => $filters['year'] ?? '']), 'year')->dropDownList(['2025' => 2025, '2026' => 2026], [
+                'prompt' => 'Год',
+                'name' => 'year',
+            ])->label('Плановый год') ?>
         </div>
         <div class="col-md">
             <?= $form->field(new \yii\base\DynamicModel(['type' => $filters['type'] ?? '']), 'type')->widget(Select2::class, [
index 5caf65b650cba96d01b7d0f12180d56cfc209b0d..22586e78839b4b7480006f1ab57039dd45d7ec12 100644 (file)
             ])->label('Магазин') ?>
         </div>
         <div class="col-md">
-            <?= $form->field(new \yii\base\DynamicModel(['plan_date' => $filters['plan_date'] ?? '']), 'plan_date')->widget(DatePicker::class, [
-                'pluginOptions' => [
-                    'autoclose' => true,
-                    'format' => 'mm-yyyy',
-                ],
-                'options' => [
-                    'class' => 'form-control',
-                    'placeholder' => 'Плановая дата',
-                    'name' => 'plan_date',
-                ],
-            ])->label('Плановая дата') ?>
+            <?= $form->field(new \yii\base\DynamicModel(['month' => $filters['month'] ?? '']), 'month')->dropDownList(\yii_app\helpers\DateHelper::MONTH_NUMBER_NAMES, [
+                'prompt' => 'Месяц',
+                'name' => 'month',
+            ])->label('Плановый месяц') ?>
+        </div>
+
+        <div class="col-md">
+            <?= $form->field(new \yii\base\DynamicModel(['year' => $filters['year'] ?? '']), 'year')->dropDownList(['2025' => 2025, '2026' => 2026], [
+                'prompt' => 'Год',
+                'name' => 'year',
+            ])->label('Плановый год') ?>
         </div>
         <div class="col-md">
             <?= $form->field(new \yii\base\DynamicModel(['type' => $filters['type'] ?? '']), 'type')->widget(Select2::class, [
index 94a02682006482815adb4373b565782ec2feb32a..4ab49e21a06b03fdd3f6ecaeae51f2246ac95d54 100644 (file)
             ])->label('Магазин') ?>
         </div>
         <div class="col-md">
-            <?= $form->field(new \yii\base\DynamicModel(['plan_date' => $filters['plan_date'] ?? '']), 'plan_date')->widget(DatePicker::class, [
-                'pluginOptions' => [
-                    'autoclose' => true,
-                    'format' => 'mm-yyyy',
-                ],
-                'options' => [
-                    'class' => 'form-control',
-                    'placeholder' => 'Плановая дата',
-                    'name' => 'plan_date',
-                ],
-            ])->label('Плановая дата') ?>
+            <?= $form->field(new \yii\base\DynamicModel(['month' => $filters['month'] ?? '']), 'month')->dropDownList(\yii_app\helpers\DateHelper::MONTH_NUMBER_NAMES, [
+                'prompt' => 'Месяц',
+                'name' => 'month',
+            ])->label('Плановый месяц') ?>
+        </div>
+
+        <div class="col-md">
+            <?= $form->field(new \yii\base\DynamicModel(['year' => $filters['year'] ?? '']), 'year')->dropDownList(['2025' => 2025, '2026' => 2026], [
+                'prompt' => 'Год',
+                'name' => 'year',
+            ])->label('Плановый год') ?>
         </div>
         <div class="col-md">
             <?= $form->field(new \yii\base\DynamicModel(['type' => $filters['type'] ?? '']), 'type')->widget(Select2::class, [
index 000bdaa42e678356e419bf868dfc678021666d92..fc707197c18fdf9664075529ac9583265ce8fdc4 100644 (file)
             ])->label('Магазин') ?>
         </div>
         <div class="col-md">
-            <?= $form->field(new \yii\base\DynamicModel(['plan_date' => $filters['plan_date'] ?? '']), 'plan_date')->widget(DatePicker::class, [
-                'pluginOptions' => [
-                    'autoclose' => true,
-                    'format' => 'mm-yyyy',
-                ],
-                'options' => [
-                    'class' => 'form-control',
-                    'placeholder' => 'Плановая дата',
-                    'name' => 'plan_date',
-                ],
-            ])->label('Плановая дата') ?>
+            <?= $form->field(new \yii\base\DynamicModel(['month' => $filters['month'] ?? '']), 'month')->dropDownList(\yii_app\helpers\DateHelper::MONTH_NUMBER_NAMES, [
+                'prompt' => 'Месяц',
+                'name' => 'month',
+            ])->label('Плановый месяц') ?>
+        </div>
+
+        <div class="col-md">
+            <?= $form->field(new \yii\base\DynamicModel(['year' => $filters['year'] ?? '']), 'year')->dropDownList(['2025' => 2025, '2026' => 2026], [
+                'prompt' => 'Год',
+                'name' => 'year',
+            ])->label('Плановый год') ?>
         </div>
         <div class="col-md">
             <?= $form->field(new \yii\base\DynamicModel(['type' => $filters['type'] ?? '']), 'type')->widget(Select2::class, [
index db1e5ea903be5a55ce5017560f02f6f7801682e4..c49498d1718204717e41b1b628cfc162adc3844c 100644 (file)
             ])->label('Магазин') ?>
         </div>
         <div class="col-md">
-            <?= $form->field(new \yii\base\DynamicModel(['plan_date' => $filters['plan_date'] ?? '']), 'plan_date')->widget(DatePicker::class, [
-                'pluginOptions' => [
-                    'autoclose' => true,
-                    'format' => 'mm-yyyy',
-                ],
-                'options' => [
-                    'class' => 'form-control',
-                    'placeholder' => 'Плановая дата',
-                    'name' => 'plan_date',
-                ],
-            ])->label('Плановая дата') ?>
+            <?= $form->field(new \yii\base\DynamicModel(['month' => $filters['month'] ?? '']), 'month')->dropDownList(\yii_app\helpers\DateHelper::MONTH_NUMBER_NAMES, [
+                'prompt' => 'Месяц',
+                'name' => 'month',
+            ])->label('Плановый месяц') ?>
+        </div>
+
+        <div class="col-md">
+            <?= $form->field(new \yii\base\DynamicModel(['year' => $filters['year'] ?? '']), 'year')->dropDownList(['2025' => 2025, '2026' => 2026], [
+                'prompt' => 'Год',
+                'name' => 'year',
+            ])->label('Плановый год') ?>
         </div>
         <div class="col-md">
             <?= $form->field(new \yii\base\DynamicModel(['type' => $filters['type'] ?? '']), 'type')->widget(Select2::class, [