]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Обновляем creator_id
authorVladimir Fomichev <vladimir.fomichev@erp-flowers.ru>
Mon, 1 Dec 2025 09:07:34 +0000 (12:07 +0300)
committerVladimir Fomichev <vladimir.fomichev@erp-flowers.ru>
Mon, 1 Dec 2025 09:07:34 +0000 (12:07 +0300)
erp24/commands/AdminController.php

index 6ea8193173f3b3dd6e028b0a6853310b16868da4..27622a8cd1a6c0fd2fc26dffefee78da9294da12 100644 (file)
@@ -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 "Ð\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 {
                 // Если уже есть запись для этого сотрудника, удаляем дубликат