From 8a38e3dbc199b512c5284e647808c81ac9b8bf47 Mon Sep 17 00:00:00 2001 From: Alexander Smirnov Date: Mon, 17 Mar 2025 19:35:58 +0300 Subject: [PATCH] [ERP-310] fix --- .../MatrixStatisticsController.php | 103 ++++++++++++++++++ 1 file changed, 103 insertions(+) diff --git a/erp24/controllers/MatrixStatisticsController.php b/erp24/controllers/MatrixStatisticsController.php index ca8e8b32..1f365425 100644 --- a/erp24/controllers/MatrixStatisticsController.php +++ b/erp24/controllers/MatrixStatisticsController.php @@ -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) { -- 2.39.5