diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 6a65bad..c40ec9e 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -53,6 +53,7 @@ public function run(): void ArticleSeeder::class, OrderSeeder::class, ExpenseSeeder::class, + PayrollSeeder::class, ]); } } diff --git a/database/seeders/PayrollSeeder.php b/database/seeders/PayrollSeeder.php new file mode 100644 index 0000000..707d38c --- /dev/null +++ b/database/seeders/PayrollSeeder.php @@ -0,0 +1,56 @@ +whereIn('name', ['Admin', 'Leader']); + })->get(); + + if ($users->isEmpty()) { + return; + } + + $now = Carbon::now(); + + foreach ($users as $user) { + // 12 months backward including current month + for ($i = 0; $i < 12; $i++) { + $month = $now->copy()->subMonths($i); + $isCurrentMonth = $i === 0; + + $payroll = Payroll::factory() + ->for($user) + ->withPeriodMonth($month->format('Y-m')) + ->create([ + 'is_paid' => $isCurrentMonth ? IsPaid::NOT_PAID : IsPaid::PAID, + 'paid_at' => $isCurrentMonth ? null : $month->copy()->addDays(28), + 'created_at' => $month->copy()->addDays(20), + 'updated_at' => $month->copy()->addDays(20), + ]); + + // Create some adjustments + PayrollAdjustment::factory() + ->count(rand(0, 3)) + ->create([ + 'payroll_id' => $payroll->id, + 'created_at' => $month->copy()->addDays(22), + 'updated_at' => $month->copy()->addDays(22), + ]); + } + } + } +}