]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
заблокировал изменение пользователя и добавил валидацию оклада и даты
authorJoySystem_v <fvv2011@gmail.com>
Mon, 26 Aug 2024 08:52:36 +0000 (11:52 +0300)
committerJoySystem_v <fvv2011@gmail.com>
Mon, 26 Aug 2024 08:52:36 +0000 (11:52 +0300)
erp24/records/EmployeePayment.php
erp24/views/crud/employee-payment/_form.php

index 24a4e4e22c7bb78d0cad2edb1fd57f6c47976f0a..106af43968fb8334ef2f8f3ca551d35ee9415992 100755 (executable)
@@ -43,9 +43,38 @@ class EmployeePayment extends \yii\db\ActiveRecord
             [['admin_group_id'], 'exist', 'skipOnError' => true, 'targetClass' => AdminGroup::class, 'targetAttribute' => ['admin_group_id' => 'id']],
             [['admin_id'], 'exist', 'skipOnError' => true, 'targetClass' => Admin::class, 'targetAttribute' => ['admin_id' => 'id']],
             [['creator_id'], 'exist', 'skipOnError' => true, 'targetClass' => Admin::class, 'targetAttribute' => ['creator_id' => 'id']],
+            [['daily_payment'], 'validateDailyPayment'],
+            [['date', 'admin_id'], 'validateUniqueDate'],
         ];
     }
 
+
+    /**
+     * Валидация для daily_payment, чтобы он не был больше monthly_salary
+     */
+    public function validateDailyPayment($attribute, $params, $validator)
+    {
+        if ($this->daily_payment > $this->monthly_salary) {
+            $this->addError($attribute, 'Подневная оплата не может быть больше оклада.');
+        }
+    }
+
+    /**
+     * Валидация для уникальности записи по дате и admin_id при создании новой записи.
+     */
+    public function validateUniqueDate($attribute, $params)
+    {
+        // Проверка уникальности только для новых записей
+        $exists = EmployeePayment::find()
+            ->where(['admin_id' => $this->admin_id, 'date' => $this->date])
+            ->andFilterWhere(['!=', 'id', $this->id])
+            ->exists();
+
+        if ($exists) {
+            $this->addError($attribute, 'Запись с этой датой уже существует.');
+        }
+    }
+
     public function beforeValidate()
     {
         if (get_called_class() === self::class) {
index 72b239dc73e50a9625ee97ecc2e00d85f819f12a..c34a0fcd0d9a3edadd126b2c6247cb67ff5b9944 100755 (executable)
@@ -12,24 +12,13 @@ use yii\widgets\ActiveForm;
 <div class="employee-payment-form">
 
     <?php $form = ActiveForm::begin(); ?>
-    <?php
-    $admins = \yii_app\records\Admin::find()->select(['name', 'id'])->orderBy(['name' => SORT_ASC])->asArray()->all();
-
-    $adminsList = [];
-    foreach ($admins as $admin) {
-        $adminsList[$admin['id']] = $admin['name'] . ' ( id ' . $admin['id'] . ')';
-    }
-    ?>
-    <?= $form->field($model, 'admin_id')->widget(Select2::classname(), [
-        'data' => $adminsList,
-        'options' => [
-            'placeholder' => 'Выберите сотрудника...',
-            'value' => $model->admin_id,  // Устанавливаем значение по умолчанию
-        ],
-        'pluginOptions' => [
-            'allowClear' => true
-        ],
-    ]); ?>
+
+    <?= $form->field($model, 'admin_id')->hiddenInput()->label(false) ?>
+    <?= $form->field($model, 'admin_name')->textInput([
+        'value' => $model->admin->name,
+        'readonly' => true,
+        'disabled' => true,
+    ])->label('Сотрудник') ?>
     <?= $form->field($model, 'date')->textInput(['type' => 'date']) ?>
     <?= $form->field($model, 'monthly_salary')->textInput(['maxlength' => true]) ?>
     <?= $form->field($model, 'daily_payment')->textInput(['maxlength' => true]) ?>