From 2b5edddac030ead82aa1349fed705ba624c4490a Mon Sep 17 00:00:00 2001 From: Vladimir Fomichev Date: Fri, 21 Nov 2025 17:57:51 +0300 Subject: [PATCH] =?utf8?q?=D0=A3=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BA?= =?utf8?q?=D0=B0=20group=5Fname=20=D0=B8=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4?= =?utf8?q?=20=D1=81=D0=BC=D0=B5=D0=BD=D1=8B=20=D0=BF=D0=BE=20=D0=B3=D1=80?= =?utf8?q?=D1=83=D0=BF=D0=BF=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- erp24/actions/grade/AdminUpdateAction.php | 35 +++++++++----- erp24/actions/grade/UpdateAction.php | 6 +-- erp24/views/grade/admin-update.php | 59 +++++++++++++++++++++++ erp24/views/grade/update.php | 28 +++++++++++ 4 files changed, 112 insertions(+), 16 deletions(-) diff --git a/erp24/actions/grade/AdminUpdateAction.php b/erp24/actions/grade/AdminUpdateAction.php index fbe84800..c086b25b 100644 --- a/erp24/actions/grade/AdminUpdateAction.php +++ b/erp24/actions/grade/AdminUpdateAction.php @@ -122,6 +122,14 @@ class AdminUpdateAction extends Action $oldPositionId = $model->employee_position_id; $oldGroupId = $model->group_id; + // При смене группы проставляем group_name из AdminGroup->name на основе group_id + if (isset($attributes['group_id']) && $oldGroupId != (int)$attributes['group_id']) { + $newAdminGroup = AdminGroup::findOne($attributes['group_id']); + if ($newAdminGroup) { + $attributes['group_name'] = $newAdminGroup->name; + } + } + if ($isSpecialGroup) { if ($isWorkGroup) { // Для рабочих групп (group_id = 50 и parent_id = 50) при заполнении employee_position_id @@ -155,10 +163,12 @@ class AdminUpdateAction extends Action } } - if ($hasPartialMatch) { - // Если группа и грейд частично совпадают - оставляем группу - $attributes['group_name'] = $positionName; - } else { + // При назначении грейда проставляем group_name из AdminGroup->name на основе group_id + if ($currentGroup) { + $attributes['group_name'] = $currentGroup->name; + } + + if (!$hasPartialMatch) { // Если не совпадают - ищем группу по названию грейда $matchingGroup = self::findGroupByPositionName($positionName, $attributes['group_id']); @@ -174,16 +184,13 @@ class AdminUpdateAction extends Action ); } } else { - // Нет прав на изменение группы - только обновляем group_name - $attributes['group_name'] = $positionName; + // Нет прав на изменение группы - group_name уже установлен из текущей группы выше Yii::$app->session->setFlash('warning', "Грейд '{$positionName}' не соответствует группе '{$currentGroupName}'. Недостаточно прав для автоматического изменения группы." ); } } else { - // Группа не найдена - оставляем текущую группу - $attributes['group_name'] = $positionName; - + // Группа не найдена - group_name уже установлен из текущей группы выше if ($oldGroupId != $attributes['group_id']) { Yii::$app->session->setFlash('warning', "Группа для грейда '{$positionName}' не найдена. Текущая группа сохранена." @@ -198,11 +205,15 @@ class AdminUpdateAction extends Action // Очищаем shift unset($attributes['shift']); } else { - // Для остальных групп group_name берем из текстового поля - if (isset($attributes['custom_position'])) { + // Для остальных групп group_name берем из AdminGroup->name на основе group_id + $adminGroup = AdminGroup::findOne($attributes['group_id']); + if ($adminGroup) { + $attributes['group_name'] = $adminGroup->name; + } else if (isset($attributes['custom_position'])) { + // Если группа не найдена, используем текстовое поле как fallback $attributes['group_name'] = $attributes['custom_position']; - unset($attributes['custom_position']); } + unset($attributes['custom_position']); // Очищаем employee_position_id и shift для не-специальных групп $attributes['employee_position_id'] = null; unset($attributes['shift']); diff --git a/erp24/actions/grade/UpdateAction.php b/erp24/actions/grade/UpdateAction.php index b5433017..2e091236 100755 --- a/erp24/actions/grade/UpdateAction.php +++ b/erp24/actions/grade/UpdateAction.php @@ -70,11 +70,9 @@ class UpdateAction extends Action } } - // Обновляем group_name в зависимости от типа группы - if ($isWorkGroup && $currentGroup) { + // Обновляем group_name из AdminGroup->name на основе group_id + if ($currentGroup) { $admin->group_name = $currentGroup->name; - } else { - $admin->group_name = $positionName; } // Показываем уведомление, если группа не соответствует грейду diff --git a/erp24/views/grade/admin-update.php b/erp24/views/grade/admin-update.php index fcb9abd5..77999557 100644 --- a/erp24/views/grade/admin-update.php +++ b/erp24/views/grade/admin-update.php @@ -78,6 +78,27 @@ use yii_app\services\FileService; ArrayHelper::map($positions, 'id', 'name'), ['prompt' => 'Выберите должность', 'id' => 'employee-position-select', 'onchange' => 'checkGradeGroupMatch();'] )->label(false)) ?> + name + $shiftValue = null; + if ($model->adminGroup && $model->adminGroup->name) { + $groupName = mb_strtolower($model->adminGroup->name); + if (mb_strpos($groupName, 'день') !== false) { + $shiftValue = 'День'; + } elseif (mb_strpos($groupName, 'ночь') !== false) { + $shiftValue = 'Ночь'; + } + } + ?> +
+ 'form-control', + 'readonly' => true, + 'style' => 'background-color: #e9ecef; cursor: not-allowed;', + 'id' => 'shift-display-input' + ])) ?> +
+ + + name + $shiftValue = null; + if ($admin->adminGroup && $admin->adminGroup->name) { + $groupName = mb_strtolower($admin->adminGroup->name); + if (mb_strpos($groupName, 'день') !== false) { + $shiftValue = 'День'; + } elseif (mb_strpos($groupName, 'ночь') !== false) { + $shiftValue = 'Ночь'; + } + } + + // Выводим поле Смена только если найдено значение день/ночь + if ($shiftValue !== null): + ?> +
+
+ + 'form-control', + 'readonly' => true, + 'style' => 'background-color: #e9ecef; cursor: not-allowed;' + ]) ?> +
+
+ + 0): ?> -- 2.39.5