]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
[ERP-310] fix
authorAlexander Smirnov <fredeom@mail.ru>
Mon, 17 Mar 2025 16:35:58 +0000 (19:35 +0300)
committerAlexander Smirnov <fredeom@mail.ru>
Mon, 17 Mar 2025 16:35:58 +0000 (19:35 +0300)
erp24/controllers/MatrixStatisticsController.php

index ca8e8b32230e11dd934241069fc12538ad3de513..1f365425d9df305c8b36460a971f749e15e8809f 100644 (file)
@@ -54,6 +54,109 @@ class MatrixStatisticsController extends Controller {
             if ($model->sale_type) {
                 $bouquetForecastQuery->andWhere(['type_sales' => $model->sale_type]);
             }
+            if ($model->store_id) {
+                $bouquetForecastQuery->andWhere(['type_sales_id' => $model->store_id]);
+                $bouquetForecastQuery->andWhere([
+                    'or',
+                    ['type_sales' => [2, 3]],
+                    [
+                        'and',
+                        ['type_sales' => 1],
+                        ['type_sales_id' => CityStoreParams::find()->andWhere(['store_id' => $model->store_id])->select('store_type')->column()]
+                    ]
+                ]);
+            }
+            if ($model->city_id) {
+                $bouquetForecastQuery->andWhere(['type_sales_id' => CityStoreParams::find()->
+                    andWhere(['address_city' => $model->city_id])->select('store_id')->column()]);
+                $bouquetForecastQuery->andWhere([
+                    'or',
+                    ['type_sales' => [2, 3]],
+                    [
+                        'and',
+                        ['type_sales' => 1],
+                        ['type_sales_id' => CityStoreParams::find()->andWhere(['store_id' => CityStoreParams::find()
+                            ->andWhere(['address_city' => $model->city_id])->select('store_id')->column()])
+                            ->select('store_type')->column()]
+                    ]
+                ]);
+            }
+            if ($model->region_id) {
+                $bouquetForecastQuery->andWhere(['type_sales_id' => CityStoreParams::find()
+                    ->andWhere(['address_region' => $model->region_id])->select('store_id')->column()]);
+                $bouquetForecastQuery->andWhere([
+                    'or',
+                    ['type_sales' => [2, 3]],
+                    [
+                        'and',
+                        ['type_sales' => 1],
+                        ['type_sales_id' => CityStoreParams::find()->andWhere(['store_id' => CityStoreParams::find()
+                            ->andWhere(['address_region' => $model->region_id])->select('store_id')->column()])
+                            ->select('store_type')->column()]
+                    ]
+                ]);
+            }
+            if ($model->raion_id) {
+                $bouquetForecastQuery->andWhere(['type_sales_id' => CityStoreParams::find()
+                    ->andWhere(['address_district' => $model->raion_id])->select('store_id')->column()]);
+                $bouquetForecastQuery->andWhere([
+                    'or',
+                    ['type_sales' => [2, 3]],
+                    [
+                        'and',
+                        ['type_sales' => 1],
+                        ['type_sales_id' => CityStoreParams::find()->andWhere(['store_id' => CityStoreParams::find()
+                            ->andWhere(['address_district' => $model->raion_id])->select('store_id')->column()])
+                            ->select('store_type')->column()]
+                    ]
+                ]);
+            }
+            if ($model->store_type_id) {
+                $bouquetForecastQuery->andWhere(['type_sales_id' => CityStoreParams::find()
+                    ->andWhere(['store_type' => $model->store_type_id])->select('store_id')->column()]);
+                $bouquetForecastQuery->andWhere([
+                    'or',
+                    ['type_sales' => [2, 3]],
+                    [
+                        'and',
+                        ['type_sales' => 1],
+                        ['type_sales_id' => CityStoreParams::find()->andWhere(['store_id' => CityStoreParams::find()
+                            ->andWhere(['store_type' => $model->store_type_id])->select('store_id')->column()])
+                            ->select('store_type')->column()]
+                    ]
+                ]);
+            }
+            if ($model->territory_manager_id) {
+                $bouquetForecastQuery->andWhere(['type_sales_id' => StoreDynamic::find()->select('store_id')
+                    ->where(['category' => 3, 'active' => 1, 'value_int' => $model->territory_manager_id])->column()]);
+                $bouquetForecastQuery->andWhere([
+                    'or',
+                    ['type_sales' => [2, 3]],
+                    [
+                        'and',
+                        ['type_sales' => 1],
+                        ['type_sales_id' => CityStoreParams::find()->andWhere(['store_id' => StoreDynamic::find()->select('store_id')
+                            ->where(['category' => 3, 'active' => 1, 'value_int' => $model->territory_manager_id])->column()])
+                            ->select('store_type')->column()]
+                    ]
+                ]);
+            }
+            if ($model->kshf_id) {
+                $bouquetForecastQuery->andWhere(['type_sales_id' => StoreDynamic::find()->select('store_id')
+                    ->where(['category' => 2, 'active' => 1, 'value_int' => $model->kshf_id])->column()]);
+                $bouquetForecastQuery->andWhere([
+                    'or',
+                    ['type_sales' => [2, 3]],
+                    [
+                        'and',
+                        ['type_sales' => 1],
+                        ['type_sales_id' => CityStoreParams::find()->andWhere(['store_id' => StoreDynamic::find()->select('store_id')
+                            ->where(['category' => 2, 'active' => 1, 'value_int' => $model->kshf_id])->column()])
+                            ->select('store_type')->column()]
+                    ]
+                ]);
+            }
+
             $bouquetForecast = $bouquetForecastQuery->all();
 
             foreach ($bouquetForecast as $bf) {