use yii\helpers\Json;
use yii\web\Controller;
use yii_app\records\CityStore;
+use yii_app\records\CityStoreParams;
use yii_app\records\Sales;
use yii_app\records\SalesWriteOffsPlan;
+use yii_app\records\StoreDynamic;
class SalesWriteOffsPlanController extends Controller
{
$model = DynamicModel::validateData([
'year' => date('Y'),
'month' => date('m'),
+ 'city_id' => null,
+ 'region_id' => null,
+ 'raion_id' => null,
+ 'store_type_id' => null,
+ 'territory_manager_id' => null,
+ 'kshf_id' => null,
], [
- [['year', 'month'], 'safe']
+ [['year', 'month', 'city_id', 'region_id', 'raion_id', 'store_type_id',
+ 'territory_manager_id', 'kshf_id'], 'safe']
]);
$model->load(Yii::$app->request->get());
$years [$year] = $year;
}
- $stores = CityStore::find()->andWhere(['visible' => '1'])->all();
$salesWriteOffsPlan = SalesWriteOffsPlan::find()->where(['year' => $model->year, 'month' => $model->month])
->indexBy('store_id')->asArray()->all();
->indexBy('store_id')
->asArray()->all();
+ $territorialManager = $model->territorial_manager_id ?? null;
+ $bushChefFlorist = $model->kshf_id ?? null;
+
+ $query = CityStore::find()
+ ->andWhere(['visible' => CityStore::IS_VISIBLE]);
+
+ if (!empty($model->city_id)) {
+ $query->andWhere(['id' => CityStoreParams::find()
+ ->andWhere(['address_city' => $model->city_id])
+ ->select('store_id')
+ ->column()]);
+ }
+
+ if (!empty($model->region_id)) {
+ $query->andWhere(['id' => CityStoreParams::find()
+ ->andWhere(['address_region' => $model->region_id])
+ ->select('store_id')
+ ->column()]);
+ }
+
+ if (!empty($model->raion_id)) {
+ $query->andWhere(['id' => CityStoreParams::find()
+ ->andWhere(['address_district' => $model->raion_id])
+ ->select('store_id')
+ ->column()]);
+ }
+
+ if (!empty($model->store_type_id)) {
+ $query->andWhere(['id' => CityStoreParams::find()
+ ->andWhere(['store_type' => $model->store_type_id])
+ ->select('store_id')
+ ->column()]);
+ }
+
+ if (!empty($territorialManager)) {
+ $territorialManagerStoreIds = StoreDynamic::find()
+ ->select('store_id')
+ ->where(['category' => 3, 'active' => 1, 'value_int' => $territorialManager])
+ ->column();
+
+ $query->andWhere(['in', 'id', $territorialManagerStoreIds ?: [-1]]);
+ }
+
+ if (!empty($bushChefFlorist)) {
+ $bushChefFloristStoreIds = StoreDynamic::find()
+ ->select('store_id')
+ ->where(['category' => 2, 'active' => 1, 'value_int' => $bushChefFlorist])
+ ->column();
+
+ $query->andWhere(['in', 'id', $bushChefFloristStoreIds ?: [-1]]);
+ }
+
+ $stores = $query->all();
+
return $this->render('index', compact('model', 'years', 'stores',
'salesWriteOffsPlan', 'sales'));
}
<div class="categoryPlanIndex m-5">
+ <h1>План по категориям</h1>
+
<?php $form = ActiveForm::begin([
'id' => 'filter-form',
'method' => 'GET',
</div>
<div class="col-4">
<?= $form->field($model, 'kshf_id')->widget(Select2::class, [
- 'data' => ArrayHelper::map(Admin::findAll(['group_id' => AdminGroup::GROUP_BUSH_CHEF_FLORIST]), 'id', 'name_full'),
+ 'data' => ArrayHelper::map(Admin::findAll(['group_id' => AdminGroup::GROUP_BUSH_CHEF_FLORIST]), 'id', 'name'),
'language' => 'ru',
'options' => ['placeholder' => 'кШФ...'],
'pluginOptions' => [
use yii\helpers\Html;
use yii\base\DynamicModel;
use yii\widgets\ActiveForm;
+use yii\helpers\ArrayHelper;
+use kartik\select2\Select2;
use dosamigos\datetimepicker\DateTimePicker;
+use yii_app\records\Admin;
+use yii_app\records\AdminGroup;
+use yii_app\records\StoreType;
+use yii_app\records\StoreCityList;
use yii_app\helpers\HtmlHelper;
use yii_app\records\SalesWriteOffsPlan;
]) ?>
<div class="row">
- <div class="col-1">
- <?= $form->field($model, 'year')->dropDownList($years, ['onchange' => 'this.form.submit();'])->label(false) ?>
+ <div class="col-6">
+ <div class="row">
+ <div class="col-4">
+ <?= $form->field($model, 'year')->dropDownList($years)->label(false) ?>
+ </div>
+ <div class="col-4">
+ <?= $form->field($model, 'city_id')->widget(Select2::class, [
+ 'data' => ArrayHelper::map(StoreCityList::findAll(['type' => StoreCityList::TYPE_CITY]), 'id', 'name'),
+ 'language' => 'ru',
+ 'options' => ['placeholder' => 'Города...'],
+ 'pluginOptions' => [
+ 'allowClear' => true,
+ ]
+ ])->label(false) ?>
+ </div>
+ <div class="col-4">
+ <?= $form->field($model, 'store_type_id')->widget(Select2::class, [
+ 'data' => ArrayHelper::map(StoreType::find()->all(), 'id', 'name'),
+ 'language' => 'ru',
+ 'options' => ['placeholder' => 'Тип магазина...'],
+ 'pluginOptions' => [
+ 'allowClear' => true,
+ ]
+ ])->label(false) ?>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-4">
+ <?= $form->field($model, 'month')->dropDownList(HtmlHelper::getMonthNames())->label(false) ?>
+ </div>
+ <div class="col-4">
+ <?= $form->field($model, 'region_id')->widget(Select2::class, [
+ 'data' => ArrayHelper::map(StoreCityList::findAll(['type' => StoreCityList::TYPE_REGION]), 'id', 'name'),
+ 'language' => 'ru',
+ 'options' => ['placeholder' => 'Регион...'],
+ 'pluginOptions' => [
+ 'allowClear' => true,
+ ]
+ ])->label(false) ?>
+ </div>
+ <div class="col-4">
+ <?= $form->field($model, 'territory_manager_id')->widget(Select2::class, [
+ 'data' => ArrayHelper::map(Admin::findAll(['group_id' => AdminGroup::GROUP_BUSH_DIRECTOR]), 'id', 'name_full'),
+ 'language' => 'ru',
+ 'options' => ['placeholder' => 'Тер. Управляющий...'],
+ 'pluginOptions' => [
+ 'allowClear' => true,
+ ]
+ ])->label(false) ?>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-4">
+ </div>
+ <div class="col-4">
+ <?= $form->field($model, 'raion_id')->widget(Select2::class, [
+ 'data' => ArrayHelper::map(StoreCityList::findAll(['type' => StoreCityList::TYPE_DISTRICT]), 'id', 'name'),
+ 'language' => 'ru',
+ 'options' => ['placeholder' => 'Район...'],
+ 'pluginOptions' => [
+ 'allowClear' => true,
+ ]
+ ])->label(false) ?>
+ </div>
+ <div class="col-4">
+ <?= $form->field($model, 'kshf_id')->widget(Select2::class, [
+ 'data' => ArrayHelper::map(Admin::findAll(['group_id' => AdminGroup::GROUP_BUSH_CHEF_FLORIST]), 'id', 'name'),
+ 'language' => 'ru',
+ 'options' => ['placeholder' => 'кШФ...'],
+ 'pluginOptions' => [
+ 'allowClear' => true,
+ ]
+ ])->label(false) ?>
+ </div>
+ </div>
</div>
- </div>
- <div class="row">
- <div class="col-1">
- <?= $form->field($model, 'month')->dropDownList(HtmlHelper::getMonthNames(), ['onchange' => 'this.form.submit();'])->label(false) ?>
+ <div class="col-4">
+ <?= Html::submitButton('Применить', ['class' => 'btn btn-secondary'])?>
</div>
</div>