$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([
return $this->render('calculating', [
'dataProvider' => $dataProvider,
- 'filters' => $filters,
+ 'filters' => $filters,
]);
}
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,
]);
}
}
$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),
];
}
--- /dev/null
+<?php
+?>
+<div class="filter-form" style="margin-bottom: 20px;">
+ <?php use kartik\date\DatePicker;
+ use kartik\grid\GridView;
+ use kartik\select2\Select2;
+ use yii\helpers\ArrayHelper;
+ use yii\helpers\Html;
+ use yii\widgets\ActiveForm;
+ use yii_app\records\CityStore;
+ use yii_app\records\Products1cNomenclature;
+
+ $form = ActiveForm::begin(['method' => 'get']); ?>
+ <div class="row p-3">
+ <div class="col-md">
+ <?= $form->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('Категория') ?>
+ </div>
+ <div class="col-md">
+ <?= $form->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('Подкатегория') ?>
+ </div>
+ <div class="col-md">
+ <?= $form->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('Товар') ?>
+ </div>
+ <div class="col-md">
+ <?= $form->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('Магазин') ?>
+ </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' => 'dd-mm-yyyy',
+ ],
+ 'options' => [
+ 'class' => 'form-control',
+ 'placeholder' => 'Плановая дата',
+ 'name' => 'plan_date',
+ ],
+ ])->label('Плановая дата') ?>
+ </div>
+ <div class="col-md">
+ <?= $form->field(new \yii\base\DynamicModel(['type' => $filters['type'] ?? '']), 'type')->widget(Select2::class, [
+ 'data' => [
+ 'writeOffs' => 'Списания',
+ 'sales' => 'Продажи'
+ ],
+ 'options' => ['placeholder' => 'Тип', 'name' => 'type'],
+ 'pluginOptions' => ['allowClear' => true],
+ ])->label('По дефолту продажи!') ?>
+ </div>
+ <div class="col-md">
+ <?= Html::submitButton('Фильтровать', ['class' => 'btn btn-primary']) ?>
+ </div>
+ <div class="col-md">
+ <?= Html::a('Сбросить', ['auto-planogramma/test-sales'], ['class' => 'btn btn-default']) ?>
+ </div>
+ </div>
+
+ <?php ActiveForm::end(); ?>
+</div>
+
+<?= GridView::widget([
+ 'dataProvider' => $dataProvider,
+ 'columns' => [
+ ['attribute' => 'store_id', 'label' => 'Магазин'],
+ ['attribute' => 'category', 'label' => 'Категория'],
+ ['attribute' => 'total_sum', 'label' => 'Сумма', 'format' => ['decimal', 2]],
+ ['attribute' => 'share_of_total', 'label' => 'Доля', 'format' => ['percent', 2]],
+ ],
+]); ?>
--- /dev/null
+<?php
+?>
+<div class="filter-form" style="margin-bottom: 20px;">
+ <?php use kartik\date\DatePicker;
+ use kartik\grid\GridView;
+ use kartik\select2\Select2;
+ use yii\helpers\ArrayHelper;
+ use yii\helpers\Html;
+ use yii\widgets\ActiveForm;
+ use yii_app\records\CityStore;
+ use yii_app\records\Products1cNomenclature;
+
+ $form = ActiveForm::begin(['method' => 'get']); ?>
+ <div class="row p-3">
+ <div class="col-md">
+ <?= $form->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('Категория') ?>
+ </div>
+ <div class="col-md">
+ <?= $form->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('Подкатегория') ?>
+ </div>
+ <div class="col-md">
+ <?= $form->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('Товар') ?>
+ </div>
+ <div class="col-md">
+ <?= $form->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('Магазин') ?>
+ </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' => 'dd-mm-yyyy',
+ ],
+ 'options' => [
+ 'class' => 'form-control',
+ 'placeholder' => 'Плановая дата',
+ 'name' => 'plan_date',
+ ],
+ ])->label('Плановая дата') ?>
+ </div>
+ <div class="col-md">
+ <?= $form->field(new \yii\base\DynamicModel(['type' => $filters['type'] ?? '']), 'type')->widget(Select2::class, [
+ 'data' => [
+ 'writeOffs' => 'Списания',
+ 'sales' => 'Продажи'
+ ],
+ 'options' => ['placeholder' => 'Тип', 'name' => 'type'],
+ 'pluginOptions' => ['allowClear' => true],
+ ])->label('По дефолту продажи!') ?>
+ </div>
+ <div class="col-md">
+ <?= Html::submitButton('Фильтровать', ['class' => 'btn btn-primary']) ?>
+ </div>
+ <div class="col-md">
+ <?= Html::a('Сбросить', ['auto-planogramma/test-sales'], ['class' => 'btn btn-default']) ?>
+ </div>
+ </div>
+
+ <?php ActiveForm::end(); ?>
+</div>
+
+<?= GridView::widget([
+ 'dataProvider' => $dataProvider,
+ 'columns' => [
+ ['attribute' => 'store_name', 'label' => 'Магазин'],
+ ['attribute' => 'category', 'label' => 'Категория'],
+ ['attribute' => 'goal', 'label' => 'Сумма план'],
+ ],
+ ]); ?>