From 9b568b46caac7cb7d67eb163919d179cc111120b Mon Sep 17 00:00:00 2001 From: Vladimir Fomichev Date: Mon, 1 Dec 2025 12:07:34 +0300 Subject: [PATCH] =?utf8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D1=8F=D0=B5?= =?utf8?q?=D0=BC=20creator=5Fid?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- erp24/commands/AdminController.php | 40 ++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/erp24/commands/AdminController.php b/erp24/commands/AdminController.php index 6ea81931..27622a8c 100644 --- a/erp24/commands/AdminController.php +++ b/erp24/commands/AdminController.php @@ -96,18 +96,21 @@ class AdminController extends Controller { if ($sameSalary) { // Оклады совпадают - обновляем существующую запись, добавляя employee_position_id - $existingPayment->employee_position_id = $payment->employee_position_id; - if ($existingPayment->save()) { - echo "Слияние: запись ID {$existingPayment->id} обновлена employee_position_id из ID {$payment->id}\n"; - $merged++; - } + // Используем updateAttributes чтобы избежать beforeValidate (он обнуляет creator_id в консоли) + $existingPayment->updateAttributes([ + 'employee_position_id' => $payment->employee_position_id, + 'creator_id' => $payment->creator_id, + 'admin_id' => $payment->admin_id, + ]); + echo "Слияние: запись ID {$existingPayment->id} обновлена employee_position_id из ID {$payment->id}\n"; + $merged++; // Удаляем дубликат с другой датой $payment->delete(); $deleted++; $processedAdmins[$adminId] = $existingPayment->id; } else { // Оклады разные - удаляем старую запись без должности, используем новую - echo "Оклады разные у {$adminId}: старая ({$existingPayment->monthly_salary}/{$existingPayment->daily_payment}) vs новая ({$payment->monthly_salary}/{$payment->daily_payment})\n"; + echo "Оклады разные у {$adminId}: старая ({$existingPayment->monthly_salary}/{$existingPayment->daily_payment}) и новая ({$payment->monthly_salary}/{$payment->daily_payment})\n"; $existingPayment->delete(); $deleted++; // Теперь можем сохранить с новой датой @@ -119,15 +122,26 @@ class AdminController extends Controller { } } } else { - // Нет конфликтующей записи - просто обновляем дату - $payment->date = $targetDate; - if ($payment->save()) { - $updated++; - $processedAdmins[$adminId] = $payment->id; - echo "Обновлена запись ID {$payment->id} для сотрудника {$adminId}: дата установлена {$targetDate}\n"; + // Нет конфликтующей записи + // Проверяем, нужно ли что-то обновлять + $needsUpdate = $payment->date !== $targetDate || $payment->creator_id === null; + + if ($needsUpdate) { + // Используем updateAttributes чтобы избежать beforeValidate (он обнуляет creator_id в консоли) + $attrs = ['date' => $targetDate]; + if ($payment->creator_id === null) { + $attrs['creator_id'] = 1379; + } + if ($payment->updateAttributes($attrs)) { + $updated++; + echo "Обновлена запись ID {$payment->id} для сотрудника {$adminId}: дата установлена {$targetDate}\n"; + } else { + echo "Ошибка сохранения {$payment->id} для сотрудника {$adminId}\n"; + } } else { - echo "Ошибка сохранения {$payment->id} для сотрудника {$adminId}: " . implode(', ', $payment->getFirstErrors()) . "\n"; + echo "Запись ID {$payment->id} для сотрудника {$adminId}: уже актуальна, пропускаем\n"; } + $processedAdmins[$adminId] = $payment->id; } } else { // Если уже есть запись для этого сотрудника, удаляем дубликат -- 2.39.5