From 0c8801849cb2ad0e254a018af57ad31952c47813 Mon Sep 17 00:00:00 2001 From: Hyungi Ahn Date: Tue, 31 Mar 2026 09:46:42 +0900 Subject: [PATCH] =?UTF-8?q?fix(tkfb):=20=ED=9C=B4=EA=B0=80=20=EC=8A=B9?= =?UTF-8?q?=EC=9D=B8=20=EC=8B=9C=20sp=5Fvacation=5Fbalances=20=EC=B0=A8?= =?UTF-8?q?=EA=B0=90=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit approveRequest()에서 상태만 변경하고 used_days 차감 누락. deductByPriority 호출 추가 (특별휴가→이월→기본 순서). 기존 데이터 46건 출퇴근 기록 기반 동기화 완료. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../api/controllers/vacationRequestController.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/system1-factory/api/controllers/vacationRequestController.js b/system1-factory/api/controllers/vacationRequestController.js index 8ec44a7..3fc74a5 100644 --- a/system1-factory/api/controllers/vacationRequestController.js +++ b/system1-factory/api/controllers/vacationRequestController.js @@ -201,6 +201,15 @@ const vacationRequestController = { return res.status(400).json({ success: false, message: '이미 처리된 신청입니다' }); } + // sp_vacation_balances 차감 (특별휴가 우선 → 이월 → 기본 순서) + const request = results[0]; + const year = new Date(request.start_date).getFullYear(); + const daysUsed = parseFloat(request.days_used) || 0; + if (daysUsed > 0) { + const vacationBalanceModel = require('../models/vacationBalanceModel'); + await vacationBalanceModel.deductByPriority(request.user_id, year, daysUsed); + } + await vacationRequestModel.updateStatus(id, { status: 'approved', reviewed_by, review_note }); res.json({ success: true, message: '휴가 신청이 승인되었습니다' }); } catch (error) {