diff --git a/app/Console/Commands/ApplyAttendancePenalties.php b/app/Console/Commands/ApplyAttendancePenalties.php index a4b6968..50e8770 100644 --- a/app/Console/Commands/ApplyAttendancePenalties.php +++ b/app/Console/Commands/ApplyAttendancePenalties.php @@ -2,7 +2,6 @@ namespace App\Console\Commands; -use App\Enums\EmployeeStatus; use App\Enums\PayrollAdjustmentType; use App\Enums\PayrollPeriodStatus; use App\Models\Attendance; @@ -40,7 +39,9 @@ public function handle(): int $scheduledCheckIn = Carbon::createFromFormat('Y-m-d H:i', $date->format('Y-m-d').' '.$scheduledTime); $employees = Employee::query() - ->where('status', EmployeeStatus::ACTIVE) + ->whereHas('user', function ($query) { + $query->active(); + }) ->get(); $lateCount = 0; @@ -80,7 +81,7 @@ public function handle(): int $alreadyExists = $payroll->adjustments() ->where('attendance_id', null) - ->where('type', PayrollAdjustmentType::DEDUCTION) + ->deduction() ->where('description', 'like', "%Bolos {$date->format('d/m/Y')}%") ->exists(); @@ -162,7 +163,7 @@ public function handle(): int private function findOpenPayroll(int $employeeId): ?Payroll { $period = PayrollPeriod::query() - ->where('status', PayrollPeriodStatus::OPEN) + ->open() ->first(); if ($period === null) { diff --git a/app/Models/PayrollAdjustment.php b/app/Models/PayrollAdjustment.php index c7c7856..38b7a18 100644 --- a/app/Models/PayrollAdjustment.php +++ b/app/Models/PayrollAdjustment.php @@ -6,10 +6,12 @@ use App\Models\Concerns\InteractsWithActivityLog; use Illuminate\Database\Eloquent\Attributes\Appends; use Illuminate\Database\Eloquent\Attributes\Guarded; +use Illuminate\Database\Eloquent\Attributes\Scope; use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; +use Illuminate\Database\Query\Builder; #[Guarded(['id'])] #[Appends(['amount_formatted', 'type_label', 'created_at_formatted', 'created_by_name'])] @@ -70,4 +72,16 @@ public function typeLabel(): Attribute get: fn () => $this->type?->label(), ); } + + #[Scope] + public function deduction(Builder $query): void + { + $query->where('type', PayrollAdjustmentType::DEDUCTION); + } + + #[Scope] + public function bonus(Builder $query): void + { + $query->where('type', PayrollAdjustmentType::BONUS); + } } diff --git a/app/Models/PayrollPeriod.php b/app/Models/PayrollPeriod.php index f1b9bda..cf09ee4 100644 --- a/app/Models/PayrollPeriod.php +++ b/app/Models/PayrollPeriod.php @@ -7,12 +7,14 @@ use Carbon\Carbon; use Illuminate\Database\Eloquent\Attributes\Appends; use Illuminate\Database\Eloquent\Attributes\Guarded; +use Illuminate\Database\Eloquent\Attributes\Scope; use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\SoftDeletes; +use Illuminate\Database\Query\Builder; #[Guarded(['id'])] #[Appends(['period_label', 'status_label', 'closed_at_formatted'])] @@ -63,4 +65,10 @@ public function isOpen(): bool { return $this->status === PayrollPeriodStatus::OPEN; } + + #[Scope] + public function open(Builder $query): void + { + $query->where('status', PayrollPeriodStatus::OPEN); + } }