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++;
// Теперь можем сохранить с новой датой
}
}
} 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 "Ð\9eÑ\88ибка Ñ\81оÑ\85Ñ\80анениÑ\8f {$payment->id} длÑ\8f Ñ\81оÑ\82Ñ\80Ñ\83дника {$adminId}: " . implode(', ', $payment->getFirstErrors()) . "\n";
+ echo "Ð\97апиÑ\81Ñ\8c ID {$payment->id} длÑ\8f Ñ\81оÑ\82Ñ\80Ñ\83дника {$adminId}: Ñ\83же акÑ\82Ñ\83алÑ\8cна, пÑ\80опÑ\83Ñ\81каем\n";
}
+ $processedAdmins[$adminId] = $payment->id;
}
} else {
// Если уже есть запись для этого сотрудника, удаляем дубликат