option('current'); $targetDate = $useNextMonth ? Carbon::now()->addMonth() : Carbon::now(); $periodMonth = $targetDate->format('Y-m'); $periodLabel = $targetDate->translatedFormat('F Y'); $users = User::whereHas('employee')->active()->get(); if ($users->isEmpty()) { $this->warn('Tidak ada pegawai.'); return; } $created = 0; foreach ($users as $user) { $payroll = Payroll::firstOrCreate([ 'user_id' => $user->id, 'period_month' => $periodMonth, ], [ 'base_salary' => $user->employee->base_salary, 'bonus' => 0, 'deduction' => 0, 'total_salary' => $user->employee->base_salary, 'is_paid' => IsPaid::NOT_PAID, ]); if ($payroll->wasRecentlyCreated) { $created++; } } $this->info("Payroll untuk bulan {$periodLabel} berhasil digenerate. Total data baru: {$created}"); } }