use yii\base\DynamicModel;
use yii\helpers\ArrayHelper;
use yii\web\UploadedFile;
+use yii_app\records\Admin;
use yii_app\records\CityStore;
use yii_app\records\Motivation;
use yii_app\records\MotivationCostsItem;
if (Yii::$app->request->isPost) {
$file = UploadedFile::getInstanceByName('myfile');
if ($file) {
- $path1 = Yii::getAlias('@uploads') . '/template_plan_temp.xlsx';
+ $adjustment = Yii::$app->request->post('adjustment');
+
+ if ($adjustment && array_key_exists(Admin::findOne(Yii::$app->user->id)->group_id, Motivation::getAdjustmentEditors())) {
+ return implode('<br>', 'Вы не можете вносить корректировку');
+ }
+
+ $fileName = $adjustment ? '/template_adjustment_temp.xlsx' : '/template_plan_temp.xlsx';
+ $path1 = Yii::getAlias('@uploads') . $fileName;
$file->saveAs($path1);
- $data = MotivationService::uploadTemplatePlan($path1);
+ $data = MotivationService::uploadTemplatePlan($path1, !$adjustment);
return implode('<br>', $data['errors']);
} else {
'created_at' => 'Created At',
];
}
+
+ public static function getAdjustmentEditors() {
+ return array(
+ AdminGroup::GROUP_IT,
+ AdminGroup::GROUP_OPERATIONAL_DIRECTOR
+ );
+ }
}
return $result;
}
- public static function uploadTemplatePlan($path)
+ public static function uploadTemplatePlan($path, $is_plan = true)
{
$motivationCostsItems = MotivationCostsItem::find()->indexBy('code')->all();
try {
. " Ожидается, например: '" . $motivationCostsItems[$keys[0]]->name . "'";
}
if (empty($error)) {
- $motivationValueGroupPlan = MotivationValueGroup::find()->where(['alias' => 'plan'])->one();
- /** @var $motivationValueGroupPlan MotivationValueGroup */
+ $alias = $is_plan ? 'plan' : 'adjustment';
+ $motivationValueGroup = MotivationValueGroup::find()->where(['alias' => $alias])->one();
+ /** @var $motivationValueGroup MotivationValueGroup */
foreach ($rows as $row) {
$motivationValue = MotivationValue::find()->where([
'motivation_id' => $motivation->id,
- 'motivation_group_id' => $motivationValueGroupPlan->id,
+ 'motivation_group_id' => $motivationValueGroup->id,
'value_id' => $row[0]
])->one();
/** @var $motivationValue MotivationValue */
if (!$motivationValue) {
$motivationValue = new MotivationValue;
$motivationValue->motivation_id = $motivation->id;
- $motivationValue->motivation_group_id = $motivationValueGroupPlan->id;
+ $motivationValue->motivation_group_id = $motivationValueGroup->id;
$motivationValue->value_id = $row[0];
}
$motivationValue->value_type = $motivationCostsItems[$row[0]]->data_type;
use yii\widgets\ActiveForm;
use yii\base\DynamicModel;
use kartik\grid\GridView;
+use yii_app\records\Admin;
+use yii_app\records\Motivation;
use yii_app\records\MotivationCostsItem;
/** @var $model DynamicModel */
/** @var $stores array */
<div class="mb-3"><?= Html::button('Загрузка плановых значений', ['class' => 'btn btn-success btn-sm',
'onclick' => 'openUploadDictionary();'])?></div>
</div>
+ <div class="d-flex justify-content-around align-items-center gap-2">
+ <div class="mb-3"><?php
+ if (array_key_exists(Admin::findOne(Yii::$app->user->id)->group_id, Motivation::getAdjustmentEditors())) {
+ echo Html::button('Внесение корректировок', ['class' => 'btn btn-warning btn-sm btn-adjustment',
+ 'onclick' => 'openUploadDictionary("btn-adjustment");']);
+ } ?>
+ </div>
+ </div>
</div>
<?php ActiveForm::end() ?>
-/* jshint esversion: 8 */
-
const param10 = $("meta[name=csrf-param]").attr("content");
const token10 = $("meta[name=csrf-token]").attr("content");
-/* jshint unused: false */
-function openUploadDictionary() {
- 'use strict'
+function openUploadDictionary(buttonType) {
+ 'use strict';
const $mainModal = $('#mainModal');
const $modalBody = $mainModal.find('.modal-body');
- const $modalFooter = $mainModal.find('.modal-footer');
+ const $modalTitle = $mainModal.find('.modal-title');
+
$mainModal.find('.close').on('click', () => { $mainModal.modal('hide'); });
- $mainModal.find('.modal-title').html('Загрузка плановых значений');
- $modalFooter.html('');
- $modalBody.html('<div class="row"><div class="col-12">'
- + '<form class="d-flex justify-content-left align-items-center" enctype="multipart/form-data">'
- + '<div class="d-none"><input type="file" name="myfile" accept=".xlsx"/></div>'
- + '<div><input class="btn btn-success btn-sm" type="submit" value="Загрузить" /></div></form></div></div>'
- + '<div class="row mt-2"><div class="col-12" id="infoModal"></div></div>'
- + '<div class="row mt-2"><div class="col-12 border-2 bg-gray-200"></div></div>'
- + '<div class="row mt-5"><div class="col-12" style="font-size: 1rem;">Скачать шаблон</div></div>'
- + '<div class="row mt-2"><div class="col-12">'
- + '<a href="/files/download?url=/uploads/template_plan.xlsx" style="font-size: 1rem; color: #23389c;'
- + ' text-decoration: underline; " target="_blank">Шаблон. Загрузка плановых значений</a></div></div>');
+
+ let title = 'Загрузка плановых значений';
+ let downloadLink = '/files/download?url=/uploads/template_plan.xlsx';
+ let linkText = 'Шаблон. Загрузка плановых значений';
+ let additionalParams = {};
+
+ if (buttonType === 'btn-adjustment') {
+ title = 'Внесение корректировок';
+ downloadLink = '/files/download?url=/uploads/template_adjustment.xlsx';
+ linkText = 'Шаблон. Внесение корректировок';
+ additionalParams = { adjustment: true }; // Add additional parameters for adjustment
+ }
+
+ $modalTitle.html(title);
+
+ $modalBody.html(`
+ <div class="row">
+ <div class="col-12">
+ <form class="d-flex justify-content-left align-items-center" enctype="multipart/form-data">
+ <div class="d-none"><input type="file" name="myfile" accept=".xlsx"/></div>
+ <div><input class="btn btn-success btn-sm" type="submit" value="Загрузить" /></div>
+ </form>
+ </div>
+ </div>
+ <div class="row mt-2">
+ <div class="col-12" id="infoModal"></div>
+ </div>
+ <div class="row mt-2">
+ <div class="col-12 border-2 bg-gray-200"></div>
+ </div>
+ <div class="row mt-5">
+ <div class="col-12" style="font-size: 1rem;">Скачать шаблон</div>
+ </div>
+ <div class="row mt-2">
+ <div class="col-12">
+ <a href="${downloadLink}" style="font-size: 1rem; color: #23389c; text-decoration: underline;" target="_blank">${linkText}</a>
+ </div>
+ </div>
+ `);
+
const browse = $modalBody.find('input[type=file]').get(0);
const btn = $modalBody.find('input[type=submit]').get(0);
const info = $modalBody.find('#infoModal').get(0);
const form = $modalBody.find('form').get(0);
+
async function UploadDict() {
info.innerHTML = 'загрузка...';
if (browse.files[0].size > 200000) {
}
const formData = new FormData(form);
formData.append(param10, token10);
+
+ // Append additional parameters if present
+ Object.keys(additionalParams).forEach(key => {
+ formData.append(key, additionalParams[key]);
+ });
+
try {
const response = await fetch("/motivation/index", {
method: "POST",
console.error(e);
}
}
+
browse.addEventListener('change', (event) => {
event.preventDefault();
event.stopPropagation();
UploadDict();
- })
+ });
btn.addEventListener('click', (event) => {
event.preventDefault();
event.stopPropagation();
browse.click();
- })
+ });
$mainModal.modal('show');
-}
\ No newline at end of file
+}