+++ /dev/null
-<?php
-
-use yii\helpers\Html;
-use yii\base\DynamicModel;
-use yii\helpers\Url;
-use yii\widgets\ActiveForm;
-use yii\helpers\ArrayHelper;
-
-use kartik\select2\Select2;
-use yii_app\helpers\HtmlHelper;
-use yii_app\records\SalesWriteOffsPlan;
-use yii_app\records\StoreCityList;
-use yii_app\records\Admin;
-use yii_app\records\AdminGroup;
-use yii_app\records\StoreType;
-
-/* @var $model DynamicModel */
-/* @var $years array */
-/* @var $stores array */
-/* @var $table array */
-/* @var $tableOnline array */
-/* @var $types array */
-/* @var $tableWriteOffs array */
-/* @var $salesWriteOffsPlan SalesWriteOffsPlan */
-/* @var $isEditable boolean */
-/* @var $categoryPlan array */
-
-$this->registerJsFile('/js/category-plan/index.js', ['position' => \yii\web\View::POS_END]);
-
-$this->registerCss('
-input[readonly] {
- background: lightgray;
-}
-');
-
-?>
-
-<div class="categoryPlanIndex m-5">
-
- <h1>План по категориям</h1>
- <p><?= Html::a(
- '📖 Документация',
- Url::to(
- ['wiki/show-doc', 'returnUrl' => Yii::$app->request->url]
- ),
- ['class' => 'ms-3 mb-3 pb-3', 'target' => '_blank', 'title' => 'Открыть документацию']
- ) ?></p>
-
-
- <?php $form = ActiveForm::begin([
- 'id' => 'filter-form',
- 'method' => 'GET',
- 'action' => '/category-plan/new'
- ]) ?>
-
- <div class="row">
- <div class="col-6">
- <div class="row">
- <div class="col-4">
- <?= $form->field($model, 'year')->dropDownList($years, ['onchange' => '//this.form.submit();'])->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 mt-1">
- <div class="col-4">
- <?= $form->field($model, 'month')->dropDownList(HtmlHelper::getMonthNames(), ['onchange' => '//this.form.submit();'])->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 mt-2">
- <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 class="col-4">
- <div class="row">
- <div class="col-1">
- <div class="row" style="min-height: 150px; align-items: center;">
- <div class="col-12">
- <button onclick="updateStores(); return false;">
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-play-fill" viewBox="0 0 16 16">
- <path d="m11.596 8.697-6.363 3.692c-.54.313-1.233-.066-1.233-.697V4.308c0-.63.692-1.01 1.233-.696l6.363 3.692a.802.802 0 0 1 0 1.393"/>
- </svg>
- </button>
- </div>
- </div>
- </div>
- <div class="col-11">
- <?= $form->field($model, 'store_id')->dropDownList($stores, [
- 'multiple' => false,
- 'size' => 6,
- 'class' => 'form-control',
- 'id' => 'selected-store',
- 'onchange' => '//this.form.submit()',
- 'style'=> 'overflow-y: scroll, height: auto; max-height: 200px; overflow-x: hidden;',
- ])->label(false) ?>
- </div>
- </div>
- <div class="row">
- <div class="col-1"></div>
- <div class="col-11">
- <?= Html::submitButton('Применить', ['class' => 'btn btn-secondary'])?>
-
- </div>
- </div>
- </div>
- </div>
- <?php ActiveForm::end() ?>
-
- <?php if (isset($model->store_id)): ?>
- <div class="row">
- <div class="col-4">
- <h1><?= $stores[$model->store_id]?></h1>
- <?php if ($model->month && $model->year && $model->store_id) { ?>
- <?= Html::button('Вернуть автоплан', [
- 'class' => 'btn btn-danger ms-2',
- 'name' => 'delete',
- 'id' => 'delete',
- 'value' => 1,
- 'data' => [
- 'confirm' => 'Вы уверены, что хотите вернуть автоплан за '
- . $model->month . '.' . $model->year . '?',
- ],
- ])
- ?>
-
- <?= Html::button('Пересчитать автопланограмму', [
- 'class' => 'btn btn-success ms-2',
- 'disabled' => true,
- 'id' => 'rebuild',
- 'name' => 'rebuild',
- 'value' => 1,
- 'data' => [
- 'confirm' => 'Вы уверены, что хотите пересчитать автопланограмму за '
- . $model->month . '.' . $model->year . ' для магазина ' . $stores[$model->store_id] . '?',
- ],
- ])
- ?>
- <?php } ?>
- <div id="changes-count"></div>
- <div id="changes" style="display:none;"></div>
- </div>
- </div>
- <?php if (isset($salesWriteOffsPlan)): ?>
- <div class="table-responsive" style="max-width: 1285px;">
- <table id="categoryPlan" style="width:100%">
- <?php
- $offline_sale = $salesWriteOffsPlan->offline_sales_plan;
- $online_sale = $salesWriteOffsPlan->online_sales_shop_plan;
- $write_offs = $salesWriteOffsPlan->write_offs_plan;
- ?>
- <thead>
- <tr><th rowspan="4" class="text-center align-middle border">Категории</th><th colspan="4" class="text-center border">План продаж</th><th colspan="2" class="text-center border">Списания</th></tr>
- <tr><th colspan="2" class="text-center border">Оффлайн</th><th colspan="2" class="text-center border">Интернет-Магазин</th><th colspan="2" class="text-center border">Списания</th></tr>
- <tr><th colspan="2" class="text-center border" data-value="<?= $offline_sale ?>"><?= number_format($offline_sale, 0, '.', ' ') ?></th>
- <th colspan="2" class="text-center border" data-value="<?= $online_sale ?>"><?= number_format($online_sale, 0, '.', ' ') ?></th>
- <th colspan="2" class="text-center border" data-value="<?= $write_offs ?>"><?= number_format($write_offs, 0, '.', ' ') ?></th></tr>
- <tr><th class="text-center border">%</th><th class="text-center border">Сумма</th><th class="text-center border">%</th><th class="text-center border">Cумма</th><th class="text-center border">%</th><th class="text-center border">Cумма</th></tr>
- </thead>
- <tbody>
- <?php foreach ($types as $type): ?>
- <tr>
- <th data-type><?= $type ?></th>
- <?php
- $data = $categoryPlan[$type]['offline'];
- $p1 = $offline_sale <= 0 ? 0 : round( $data / $offline_sale, 4) * 100;
- ?>
- <td data-p1-<?= $type ?> data-offline="<?= $offline_sale ?>" data-offline-type="<?= $type ?>"><?= Html::textInput('p1', number_format($p1, 2, '.', ''), ['type' => 'number', 'style' => 'max-width: 80px;', 'readonly' => !$isEditable, 'onchange' => 'editProcent(this);']) ?>%</td>
- <td data-offline-type="<?= $type ?>"><?= Html::textInput('offline', number_format($categoryPlan[$type]['offline'], 0, '.', ''), ['type' => 'number', 'readonly' => true, ]) ?></td>
- <?php
- $data2 = $categoryPlan[$type]['internet_shop'];
- $p2 = $online_sale <= 0 ? 0 : round( $data2 / $online_sale, 4) * 100;
- ?>
- <td data-p2-<?= $type ?> data-online="<?= $online_sale ?>" data-online-type="<?= $type ?>"><?= Html::textInput('p2', number_format($p2, 2, '.', ''), ['type' => 'number', 'style' => 'max-width: 80px;', 'readonly' => !$isEditable, 'onchange' => 'editProcent(this);']) ?>%</td>
- <td data-online-type="<?= $type ?>"><?= Html::textInput('internet_shop', number_format($categoryPlan[$type]['internet_shop'], 0, '.', ''), ['type' => 'number', 'readonly' => true, ]) ?></td>
- <?php //<td></td><td></td> ?>
- <?php
- $data4 = $categoryPlan[$type]['write_offs'];
- $p3 = $write_offs <= 0 ? 0 : round( $data4 / $write_offs, 4) * 100;
- ?>
- <td data-p3-<?= $type ?> data-writeoffs="<?= $write_offs ?>" data-writeoffs-type="<?= $type ?>"><?= Html::textInput('p3', number_format($p3, 2, '.', ''), ['type' => 'number', 'style' => 'max-width: 80px;', 'readonly' => !$isEditable, 'onchange' => 'editProcent(this);']) ?>%</td>
- <td data-writeoffs-type="<?= $type ?>"><?= Html::textInput('write_offs', number_format($categoryPlan[$type]['write_offs'], 0, '.', ''), ['type' => 'number', 'readonly' => true, ]) ?></td>
- </tr>
- <?php endforeach; ?>
- </tbody>
- </table>
- </div>
- <?php else: ?>
- <span class="text-lightpink-red font-weight-bold">
- Не задан план по магазину. Чтобы задать план пройдите на страницу
- <a href="/sales-write-offs-plan" target="_blank"><?= \yii\helpers\Url::base(true) . '/sales/write-offs-plan' ?></a>.
- </span>
- <?php endif; ?>
- <?php endif; ?>
-
-</div>