diff --git a/app/Http/Controllers/Api/Admin/HR/LeaveController.php b/app/Http/Controllers/Api/Admin/HR/LeaveController.php index 6218469f..58742888 100644 --- a/app/Http/Controllers/Api/Admin/HR/LeaveController.php +++ b/app/Http/Controllers/Api/Admin/HR/LeaveController.php @@ -229,10 +229,11 @@ public function balance(Request $request): JsonResponse|Response $year = $request->integer('year', now()->year); $sort = $request->input('sort', 'hire_date'); $direction = $request->input('direction', 'asc'); - $balances = $this->leaveService->getBalanceSummary($year, $sort, $direction); + $empStatus = $request->input('emp_status'); + $balances = $this->leaveService->getBalanceSummary($year, $sort, $direction, $empStatus); if ($request->header('HX-Request')) { - return response(view('hr.leaves.partials.balance', compact('balances', 'year', 'sort', 'direction'))); + return response(view('hr.leaves.partials.balance', compact('balances', 'year', 'sort', 'direction', 'empStatus'))); } return response()->json([ diff --git a/app/Services/HR/LeaveService.php b/app/Services/HR/LeaveService.php index d40299e5..c7dbaaef 100644 --- a/app/Services/HR/LeaveService.php +++ b/app/Services/HR/LeaveService.php @@ -481,7 +481,7 @@ public function rejectByApproval(Leave $leave, string $comment, int $rejecterId) * 사원관리의 모든 재직/휴직 직원을 표시하며, * balance 레코드가 없는 직원은 자동 생성한다. */ - public function getBalanceSummary(?int $year = null, ?string $sort = null, ?string $direction = null): Collection + public function getBalanceSummary(?int $year = null, ?string $sort = null, ?string $direction = null, ?string $empStatus = null): Collection { $tenantId = session('selected_tenant_id'); $year = $year ?? now()->year; @@ -489,11 +489,17 @@ public function getBalanceSummary(?int $year = null, ?string $sort = null, ?stri // (1) 테넌트 연차 정책 조회 $policy = LeavePolicy::forTenant($tenantId)->first(); - // (2) 재직/휴직/퇴사 직원 전체 조회 + // (2) 재직상태 필터에 따른 직원 조회 + $statusFilter = match ($empStatus) { + 'active' => ['active', 'leave'], + 'resigned' => ['resigned'], + default => ['active', 'leave', 'resigned'], + }; + $employees = Employee::query() ->with(['user:id,name', 'department:id,name']) ->forTenant($tenantId) - ->whereIn('employee_status', ['active', 'leave', 'resigned']) + ->whereIn('employee_status', $statusFilter) ->get(); // (3) 기존 balance 일괄 조회 diff --git a/resources/views/hr/attendance-integrated/index.blade.php b/resources/views/hr/attendance-integrated/index.blade.php index 92f3d093..8453c087 100644 --- a/resources/views/hr/attendance-integrated/index.blade.php +++ b/resources/views/hr/attendance-integrated/index.blade.php @@ -136,6 +136,14 @@ class="w-full px-3 py-2 text-sm border border-gray-300 rounded-lg focus:ring-2 f @endfor +
+ + +