return $this->render('index', compact('shiftTransfers', 'storeNameById', 'admins'));
}
- public static function getAdminsWithDrugieLast($storeGuids)
+ public function actionCreate()
{
- $adminIdsForStore = AdminStores::find()->select(['admin_id'])->where(['store_guid' => $storeGuids])->column();
- $adminArr = [];
- $adminArrOther = [];
- foreach (\yii_app\records\Admin::find()->with('adminGroup')->all() as $admin) {
- if ($admin->group_id > 0 && in_array($admin->id, $adminIdsForStore)) {
- $tmp = ['id' => $admin->id, 'name' => $admin->name, 'groupName' => $admin->adminGroup->name ?? "Другие"];
- if ($tmp['groupName'] == 'Другие') {
- $adminArrOther[] = $tmp;
- } else {
- $adminArr[] = $tmp;
- }
- }
- }
- $adminArr = ArrayHelper::merge($adminArr, $adminArrOther);
+ $admin = Admin::findOne(Yii::$app->user->id);
+ if (!$admin || $admin->group_id == -1 || !in_array($admin->group_id, Admin::ADMIN_CABINET_GROUP_IDS)) {
- return ArrayHelper::map($adminArr, 'id', 'name', 'groupName');
- }
+ Yii::$app->session->setFlash('error', 'Вы не водите в группы, разрешённые для управления передачей смены');
+
+ return $this->redirect('index');
+ }
- public function actionCreate()
- {
$shiftTransfer = new ShiftTransfer;
$shiftTransfer->date = date('Y-m-d H:i:s');
$shiftTransfer->date_start = $shiftTransfer->date;
$shiftTransfer->status_id = ShiftTransfer::STATUS_ID_INPUT_FACT_REMAINS;
+ $shiftTransfer->end_shift_admin_id = Yii::$app->user->id;
$isCreate = true;
}
}
- $admins = self::getAdminsWithDrugieLast($storeGuids);
-
- return $this->render('update', compact('shiftTransfer', 'isCreate', 'storeNameById',
- 'admins'));
+ return $this->render('update', compact('shiftTransfer', 'isCreate', 'storeNameById'));
}
public function actionUpdate($id = null)
{
+ $admin = Admin::findOne(Yii::$app->user->id);
+ if (!$admin || $admin->group_id == -1 || !in_array($admin->group_id, Admin::ADMIN_CABINET_GROUP_IDS)) {
+
+ Yii::$app->session->setFlash('error', 'Вы не водите в группы, разрешённые для управления передачей смены');
+
+ return $this->redirect('index');
+ }
+
$shiftTransfer = ShiftTransfer::findOne($id);
if (!$shiftTransfer) {
}
}
- $admins = self::getAdminsWithDrugieLast($storeGuids);
-
$shiftTransfer->shiftRemainsCopy = $loadDataShiftRemains ?? $shiftTransfer->shiftRemains;
- return $this->render('update', compact('shiftTransfer', 'isCreate', 'storeNameById',
- 'admins'));
+ return $this->render('update', compact('shiftTransfer', 'isCreate', 'storeNameById'));
}
--- /dev/null
+<?php
+
+use yii\db\Migration;
+
+/**
+ * Class m241202_163922_alter_table_shift_transfer_nullable_start_start_shift_admin_id
+ */
+class m241202_163922_alter_table_shift_transfer_nullable_start_start_shift_admin_id extends Migration
+{
+ const TABLE_NAME = 'erp24.shift_transfer';
+ /**
+ * {@inheritdoc}
+ */
+ public function safeUp()
+ {
+ $this->alterColumn(self::TABLE_NAME, 'start_shift_admin_id', $this->integer()->null()->comment('ID сотрудника, принимающего смену'));
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function safeDown()
+ {
+ }
+}
* @property string|null $date_end время принятия смены
* @property string $store_guid GUID магазина
* @property int $end_shift_admin_id ID сотрудника, передающего смену
- * @property int $start_shift_admin_id ID сотрудника, принимающего смену
+ * @property int|null $start_shift_admin_id ID сотрудника, принимающего смену
* @property float|null $goods_transfer_summ Сумма, полученная в результате действий по замене товара
* @property float|null $goods_transfer_count Количество замен общее, шт.
* @property float|null $discrepancy_pieces Расхождение факта, шт.
public function rules()
{
return [
- [['status_id', 'date', 'date_start', 'store_guid', 'end_shift_admin_id', 'start_shift_admin_id'], 'required'],
+ [['status_id', 'date', 'date_start', 'store_guid', 'end_shift_admin_id'], 'required'],
[['status_id', 'end_shift_admin_id', 'start_shift_admin_id'], 'default', 'value' => null],
[['status_id', 'end_shift_admin_id', 'start_shift_admin_id'], 'integer'],
[['date_start', 'date_end'], 'safe'],
<div class="shiftTransferIndex m-5">
+ <?php if (Yii::$app->session->hasFlash('error')): ?>
+ <div class="alert alert-danger alert-dismissable">
+ <button aria-hidden="true" data-dismiss="alert" class="close" type="button">×</button>
+ <h4><i class="icon fa fa-check"></i>Не получилось управлять передачей смены!</h4>
+ <?= Yii::$app->session->getFlash('error') ?>
+ </div>
+ <?php endif; ?>
+
<h1>Передачи смен</h1>
<?= Html::a('Создать новую передачу смен', '/shift-transfer/create', ['class' => 'btn btn-success']) ?>
[
'attribute' => 'start_shift_admin_id',
'value' => function ($model) use ($admins) {
- return $admins[$model['start_shift_admin_id']];
+ return $admins[$model['start_shift_admin_id']] ?? '';
}
],
'goods_transfer_summ',
/* @var $isCreate bool */
/* @var $shiftTransfer ShiftTransfer */
/* @var $storeNameById array */
-/* @var $admins array */
$this->registerJsFile('/js/shift-transfer/update.js', ['position' => \yii\web\View::POS_END]);
]) ?>
</div>
</div>
- <div class="row">
- <div class="col-6">
- <?= $form->field($shiftTransfer, 'end_shift_admin_id')->widget(Select2::class, [
- 'data' => $admins,
- 'language' => 'ru',
- 'options' => ['placeholder' => 'Сотрудник...'],
- 'pluginOptions' => [
- 'allowClear' => true
- ],
- ]) ?>
- </div>
- <div class="col-6">
- <?= $form->field($shiftTransfer, 'start_shift_admin_id')->widget(Select2::class, [
- 'data' => $admins,
- 'language' => 'ru',
- 'options' => ['placeholder' => 'Сотрудник...'],
- 'pluginOptions' => [
- 'allowClear' => true
- ],
- ]) ?>
- </div>
- </div>
+
+ <?= $form->field($shiftTransfer, 'end_shift_admin_id')->hiddenInput()->label(false) ?>
<div class="row">
<div class="col-6">
[
'attribute' => 'start_shift_admin_id',
'value' => function ($model) use ($admins) {
- return $admins[$model['start_shift_admin_id']];
+ return $admins[$model['start_shift_admin_id']] ?? '';
}
],
'goods_transfer_summ',