From: Vladimir Fomichev Date: Sat, 1 Nov 2025 11:37:13 +0000 (+0300) Subject: Убираем синхронизацию ЗП X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=3ef3dcec4bea736716013daa4f6eab5e688fd547;p=erp24_rep%2Fyii-erp24%2F.git Убираем синхронизацию ЗП --- diff --git a/erp24/records/Admin.php b/erp24/records/Admin.php index 940cee39..bd108177 100755 --- a/erp24/records/Admin.php +++ b/erp24/records/Admin.php @@ -752,60 +752,4 @@ class Admin extends ActiveRecord implements IdentityInterface return false; } - - /** - * {@inheritdoc} - * Синхронизирует зарплату из employee_position в employee_payment при назначении должности - */ - public function afterSave($insert, $changedAttributes) - { - parent::afterSave($insert, $changedAttributes); - - // Если изменился employee_position_id, синхронизируем зарплату - if (array_key_exists('employee_position_id', $changedAttributes) && !empty($this->employee_position_id)) { - $employeePosition = EmployeePosition::findOne($this->employee_position_id); - if (!empty($employeePosition) && !empty($employeePosition->salary)) { - // Обновляем или создаем запись в employee_payment - $today = date('Y-m-d'); - - // Проверяем, есть ли уже запись на сегодня или позже - $existingPayment = EmployeePayment::find() - ->where(['admin_id' => $this->id]) - ->andWhere(['>=', 'date', $today]) - ->orderBy(['date' => SORT_DESC]) - ->one(); - - if (!empty($existingPayment)) { - // Обновляем существующую запись - $existingPayment->monthly_salary = $employeePosition->salary; - $existingPayment->save(false); - } else { - // Если нет записи на сегодня, создаем новую - $latestPayment = EmployeePayment::find() - ->where(['admin_id' => $this->id]) - ->orderBy(['date' => SORT_DESC]) - ->one(); - - if (!empty($latestPayment)) { - // Берем daily_payment из последней записи - $newPayment = new EmployeePayment(); - $newPayment->admin_id = $this->id; - $newPayment->monthly_salary = $employeePosition->salary; - $newPayment->daily_payment = $latestPayment->daily_payment ?? 0; - $newPayment->date = $today; - $newPayment->save(false); - } else { - // Если записей нет вообще, создаем с нулевым daily_payment - $newPayment = new EmployeePayment(); - $newPayment->admin_id = $this->id; - $newPayment->monthly_salary = $employeePosition->salary; - $newPayment->daily_payment = 0; - $newPayment->date = $today; - $newPayment->save(false); - } - } - } - } - } - -} \ No newline at end of file +} diff --git a/erp24/records/EmployeePosition.php b/erp24/records/EmployeePosition.php index d9a2874e..404e4c58 100755 --- a/erp24/records/EmployeePosition.php +++ b/erp24/records/EmployeePosition.php @@ -114,78 +114,4 @@ class EmployeePosition extends \yii\db\ActiveRecord return $this->hasOne(\yii_app\records\AdminGroup::class, ['id' => 'group_id']); } - /** - * Синхронизирует зарплату из employee_position в employee_payment для всех администраторов с этой должностью - * @return void - */ - public function syncSalaryToEmployeePayments(): void - { - if (empty($this->salary)) { - return; - } - - // Находим всех администраторов с этой должностью - $adminsWithPosition = Admin::find() - ->select(['id']) - ->where(['employee_position_id' => $this->id]) - ->column(); - - if (empty($adminsWithPosition)) { - return; - } - - // Обновляем или создаем записи в employee_payment для каждого администратора - $today = date('Y-m-d'); - foreach ($adminsWithPosition as $adminId) { - // Проверяем, есть ли уже запись на сегодня или позже - $existingPayment = EmployeePayment::find() - ->where(['admin_id' => $adminId]) - ->andWhere(['>=', 'date', $today]) - ->orderBy(['date' => SORT_DESC]) - ->one(); - - if (!empty($existingPayment)) { - // Обновляем существующую запись - $existingPayment->monthly_salary = $this->salary; - $existingPayment->save(false); - } else { - // Если нет записи на сегодня, создаем новую - $latestPayment = EmployeePayment::find() - ->where(['admin_id' => $adminId]) - ->orderBy(['date' => SORT_DESC]) - ->one(); - - if (!empty($latestPayment)) { - // Берем daily_payment из последней записи - $newPayment = new EmployeePayment(); - $newPayment->admin_id = $adminId; - $newPayment->monthly_salary = $this->salary; - $newPayment->daily_payment = $latestPayment->daily_payment ?? 0; - $newPayment->date = $today; - $newPayment->save(false); - } else { - // Если записей нет вообще, создаем с нулевым daily_payment - $newPayment = new EmployeePayment(); - $newPayment->admin_id = $adminId; - $newPayment->monthly_salary = $this->salary; - $newPayment->daily_payment = 0; - $newPayment->date = $today; - $newPayment->save(false); - } - } - } - } - - /** - * {@inheritdoc} - */ - public function afterSave($insert, $changedAttributes) - { - parent::afterSave($insert, $changedAttributes); - - // Если изменилась зарплата, синхронизируем для всех администраторов - if (array_key_exists('salary', $changedAttributes) || $insert) { - $this->syncSalaryToEmployeePayments(); - } - } }