From: marina Date: Wed, 30 Apr 2025 12:37:27 +0000 (+0300) Subject: ERP-412 X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=8336559d534cf531f2e451a20e4278bb82bcca44;p=erp24_rep%2Fyii-erp24%2F.git ERP-412 --- diff --git a/erp24/controllers/AutoPlannogrammaController.php b/erp24/controllers/AutoPlannogrammaController.php index 3550bd6b..e0a23811 100644 --- a/erp24/controllers/AutoPlannogrammaController.php +++ b/erp24/controllers/AutoPlannogrammaController.php @@ -74,12 +74,12 @@ class AutoPlannogrammaController extends BaseController $request = Yii::$app->request; $filters = [ - 'category' => $request->get('category'), - 'subcategory' => $request->get('subcategory'), - 'product_name' => $request->get('product_name'), - 'store_id' => $request->get('store_id'), - 'plan_date' => $request->get('plan_date'), - 'type' => $request->get('type'), + 'category' => $request->get('category'), + 'subcategory' => $request->get('subcategory'), + 'product_name' => $request->get('product_name'), + 'store_id' => $request->get('store_id'), + 'plan_date' => $request->get('plan_date'), + 'type' => $request->get('type'), ]; $dataProvider = new ArrayDataProvider([ @@ -97,7 +97,7 @@ class AutoPlannogrammaController extends BaseController return $this->render('calculating', [ 'dataProvider' => $dataProvider, - 'filters' => $filters, + 'filters' => $filters, ]); } @@ -202,7 +202,89 @@ class AutoPlannogrammaController extends BaseController return $this->render('control', [ 'dataProvider' => $dataProvider, - 'filters' => $filters, + 'filters' => $filters, + ]); + } + + public function action1() + { + $request = Yii::$app->request; + + $filters = [ + 'category' => $request->get('category'), + 'subcategory' => $request->get('subcategory'), + 'product_name' => $request->get('product_name'), + 'store_id' => $request->get('store_id'), + 'plan_date' => $request->get('plan_date'), + 'type' => $request->get('type'), + ]; + + $dataProvider = new ArrayDataProvider([ + 'allModels' => [], + 'pagination' => ['pageSize' => 100], + ]); + + + if (!empty($filters['plan_date'])) { + $service = new AutoPlannogrammaService(); + + $data = $service->getMonthCategoryShareOrWriteOff($filters['plan_date'], $filters); + + foreach ($data as $storeId => $categories) { + foreach ($categories as $row) { + $flatData[] = [ + 'store_id' => CityStore::findOne($storeId)->name ?? null, + 'category' => $row['category'], + 'total_sum' => $row['total_sum'], + 'share_of_total' => $row['share_of_total'], + ]; + } + } + $dataProvider = new ArrayDataProvider([ + 'allModels' => $flatData, + 'pagination' => ['pageSize' => 100], + ]); + } + return $this->render('1', [ + 'dataProvider' => $dataProvider, + 'filters' => $filters, + ]); + } + + public function action2() + { + $request = Yii::$app->request; + + $filters = [ + 'category' => $request->get('category'), + 'subcategory' => $request->get('subcategory'), + 'product_name' => $request->get('product_name'), + 'store_id' => $request->get('store_id'), + 'plan_date' => $request->get('plan_date'), + 'type' => $request->get('type'), + ]; + + $dataProvider = new ArrayDataProvider([ + 'allModels' => [], + 'pagination' => ['pageSize' => 100], + ]); + + + if (!empty($filters['plan_date'])) { + $service = new AutoPlannogrammaService(); + + $monthCategoryShare = $service->getMonthCategoryShareOrWriteOff($filters['plan_date'], $filters);; + $data = $service->getMonthCategoryGoal($monthCategoryShare, $filters['plan_date'], $filters);; + + + $dataProvider = new ArrayDataProvider([ + 'allModels' => $data, + 'pagination' => ['pageSize' => 100], + ]); + } + return $this->render('2', [ + 'dataProvider' => $dataProvider, + 'filters' => $filters, ]); } } diff --git a/erp24/services/AutoPlannogrammaService.php b/erp24/services/AutoPlannogrammaService.php index 87b29e6c..188a2eb1 100644 --- a/erp24/services/AutoPlannogrammaService.php +++ b/erp24/services/AutoPlannogrammaService.php @@ -144,6 +144,7 @@ class AutoPlannogrammaService $result[] = [ 'category' => $item['category'], 'store_id' => $storeId, + 'store_name' => CityStore::findOne($storeId)->name ?? null, 'goal' => round($item['share_of_total'] * ($filters['type'] == 'writeOffs' ? $plan['write_offs_plan'] : $plan['total_sales_plan']), 2), ]; } diff --git a/erp24/views/auto-plannogramma/1.php b/erp24/views/auto-plannogramma/1.php new file mode 100644 index 00000000..fc4b0603 --- /dev/null +++ b/erp24/views/auto-plannogramma/1.php @@ -0,0 +1,101 @@ + +
+ 'get']); ?> +
+
+ field(new \yii\base\DynamicModel(['category' => $filters['category'] ?? '']), 'category')->widget(Select2::class, [ + 'data' => ArrayHelper::map( + Products1cNomenclature::find()->select('category')->distinct()->asArray()->all(), + 'category', + 'category' + ), + 'options' => ['placeholder' => 'Категория', 'name' => 'category'], + 'pluginOptions' => ['allowClear' => true], + ])->label('Категория') ?> +
+
+ field(new \yii\base\DynamicModel(['subcategory' => $filters['subcategory'] ?? '']), 'subcategory')->widget(Select2::class, [ + 'data' => ArrayHelper::map( + Products1cNomenclature::find()->select('subcategory')->distinct()->asArray()->all(), + 'subcategory', + 'subcategory' + ), + 'options' => ['placeholder' => 'Подкатегория', 'name' => 'subcategory'], + 'pluginOptions' => ['allowClear' => true], + ])->label('Подкатегория') ?> +
+
+ field(new \yii\base\DynamicModel(['product_name' => $filters['product_name'] ?? '']), 'product_name')->widget(Select2::class, [ + 'data' => ArrayHelper::map( + Products1cNomenclature::find()->select('name')->distinct()->asArray()->all(), + 'name', + 'name' + ), + 'options' => ['placeholder' => 'Название товара', 'name' => 'product_name'], + 'pluginOptions' => ['allowClear' => true], + ])->label('Товар') ?> +
+
+ field(new \yii\base\DynamicModel(['store_id' => $filters['store_id'] ?? '']), 'store_id')->widget(Select2::class, [ + 'data' => ArrayHelper::map( + CityStore::findAll(['visible' => CityStore::IS_VISIBLE]), + 'id', + 'name' + ), + 'options' => ['placeholder' => 'Магазин', 'name' => 'store_id'], + 'pluginOptions' => ['allowClear' => true], + ])->label('Магазин') ?> +
+
+ field(new \yii\base\DynamicModel(['plan_date' => $filters['plan_date'] ?? '']), 'plan_date')->widget(DatePicker::class, [ + 'pluginOptions' => [ + 'autoclose' => true, + 'format' => 'dd-mm-yyyy', + ], + 'options' => [ + 'class' => 'form-control', + 'placeholder' => 'Плановая дата', + 'name' => 'plan_date', + ], + ])->label('Плановая дата') ?> +
+
+ field(new \yii\base\DynamicModel(['type' => $filters['type'] ?? '']), 'type')->widget(Select2::class, [ + 'data' => [ + 'writeOffs' => 'Списания', + 'sales' => 'Продажи' + ], + 'options' => ['placeholder' => 'Тип', 'name' => 'type'], + 'pluginOptions' => ['allowClear' => true], + ])->label('По дефолту продажи!') ?> +
+
+ 'btn btn-primary']) ?> +
+
+ 'btn btn-default']) ?> +
+
+ + +
+ + $dataProvider, + 'columns' => [ + ['attribute' => 'store_id', 'label' => 'Магазин'], + ['attribute' => 'category', 'label' => 'Категория'], + ['attribute' => 'total_sum', 'label' => 'Сумма', 'format' => ['decimal', 2]], + ['attribute' => 'share_of_total', 'label' => 'Доля', 'format' => ['percent', 2]], + ], +]); ?> diff --git a/erp24/views/auto-plannogramma/2.php b/erp24/views/auto-plannogramma/2.php new file mode 100644 index 00000000..c9699129 --- /dev/null +++ b/erp24/views/auto-plannogramma/2.php @@ -0,0 +1,100 @@ + +
+ 'get']); ?> +
+
+ field(new \yii\base\DynamicModel(['category' => $filters['category'] ?? '']), 'category')->widget(Select2::class, [ + 'data' => ArrayHelper::map( + Products1cNomenclature::find()->select('category')->distinct()->asArray()->all(), + 'category', + 'category' + ), + 'options' => ['placeholder' => 'Категория', 'name' => 'category'], + 'pluginOptions' => ['allowClear' => true], + ])->label('Категория') ?> +
+
+ field(new \yii\base\DynamicModel(['subcategory' => $filters['subcategory'] ?? '']), 'subcategory')->widget(Select2::class, [ + 'data' => ArrayHelper::map( + Products1cNomenclature::find()->select('subcategory')->distinct()->asArray()->all(), + 'subcategory', + 'subcategory' + ), + 'options' => ['placeholder' => 'Подкатегория', 'name' => 'subcategory'], + 'pluginOptions' => ['allowClear' => true], + ])->label('Подкатегория') ?> +
+
+ field(new \yii\base\DynamicModel(['product_name' => $filters['product_name'] ?? '']), 'product_name')->widget(Select2::class, [ + 'data' => ArrayHelper::map( + Products1cNomenclature::find()->select('name')->distinct()->asArray()->all(), + 'name', + 'name' + ), + 'options' => ['placeholder' => 'Название товара', 'name' => 'product_name'], + 'pluginOptions' => ['allowClear' => true], + ])->label('Товар') ?> +
+
+ field(new \yii\base\DynamicModel(['store_id' => $filters['store_id'] ?? '']), 'store_id')->widget(Select2::class, [ + 'data' => ArrayHelper::map( + CityStore::findAll(['visible' => CityStore::IS_VISIBLE]), + 'id', + 'name' + ), + 'options' => ['placeholder' => 'Магазин', 'name' => 'store_id'], + 'pluginOptions' => ['allowClear' => true], + ])->label('Магазин') ?> +
+
+ field(new \yii\base\DynamicModel(['plan_date' => $filters['plan_date'] ?? '']), 'plan_date')->widget(DatePicker::class, [ + 'pluginOptions' => [ + 'autoclose' => true, + 'format' => 'dd-mm-yyyy', + ], + 'options' => [ + 'class' => 'form-control', + 'placeholder' => 'Плановая дата', + 'name' => 'plan_date', + ], + ])->label('Плановая дата') ?> +
+
+ field(new \yii\base\DynamicModel(['type' => $filters['type'] ?? '']), 'type')->widget(Select2::class, [ + 'data' => [ + 'writeOffs' => 'Списания', + 'sales' => 'Продажи' + ], + 'options' => ['placeholder' => 'Тип', 'name' => 'type'], + 'pluginOptions' => ['allowClear' => true], + ])->label('По дефолту продажи!') ?> +
+
+ 'btn btn-primary']) ?> +
+
+ 'btn btn-default']) ?> +
+
+ + +
+ + $dataProvider, + 'columns' => [ + ['attribute' => 'store_name', 'label' => 'Магазин'], + ['attribute' => 'category', 'label' => 'Категория'], + ['attribute' => 'goal', 'label' => 'Сумма план'], + ], + ]); ?>