From 8af1647173a902c5d229ee078c119b9a7b7f7684 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Thu, 5 Mar 2026 15:16:54 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20[hr]=20=EC=97=B0=EC=B0=A8=EC=9E=94?= =?UTF-8?q?=EC=97=AC=20=ED=83=AD=EC=97=90=20=EC=9E=AC=EC=A7=81=EC=83=81?= =?UTF-8?q?=ED=83=9C=20=ED=95=84=ED=84=B0=20=EC=B6=94=EA=B0=80=20(?= =?UTF-8?q?=EC=A0=84=EC=B2=B4/=EC=9E=AC=EC=A7=81=EC=9E=90/=ED=87=B4?= =?UTF-8?q?=EC=A7=81=EC=9E=90)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 필터 기본값: 재직자 (active + leave) - 퇴직자 선택 시 resigned만 표시 - 전체 선택 시 모든 상태 표시 --- .../Controllers/Api/Admin/HR/LeaveController.php | 5 +++-- app/Services/HR/LeaveService.php | 12 +++++++++--- .../views/hr/attendance-integrated/index.blade.php | 10 ++++++++++ resources/views/hr/leaves/partials/balance.blade.php | 7 +++++++ 4 files changed, 29 insertions(+), 5 deletions(-) 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 +
+ + +