From 66db012754654dd8bd3636ae957eb0bd7450a5f3 Mon Sep 17 00:00:00 2001 From: Hyungi Ahn Date: Wed, 25 Mar 2026 08:55:14 +0900 Subject: [PATCH] =?UTF-8?q?fix(tksupport):=20=EC=A0=84=EC=82=AC=20?= =?UTF-8?q?=ED=9C=B4=EA=B0=80=20=EC=B0=A8=EA=B0=90=20=EC=8B=9C=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=EA=B3=84=EC=A0=95=C2=B7=EB=AF=B8=EC=9E=85=EC=82=AC?= =?UTF-8?q?=EC=9E=90=20=EC=A0=9C=EC=99=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.6 (1M context) --- tksupport/api/models/companyHolidayModel.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/tksupport/api/models/companyHolidayModel.js b/tksupport/api/models/companyHolidayModel.js index 1d93cf9..cdf4865 100644 --- a/tksupport/api/models/companyHolidayModel.js +++ b/tksupport/api/models/companyHolidayModel.js @@ -61,21 +61,25 @@ const companyHolidayModel = { } const typeId = types[0].id; - // 3. 전 활성 사원 연차 차감 (잔여일 무관 일괄 적용) + // 3. 활성 사원 연차 차감 (관리계정 제외, 입사일 이후 휴가만 적용) const [result] = await conn.query(` UPDATE sp_vacation_balances SET used_days = used_days + 1, updated_at = NOW() WHERE vacation_type_id = ? AND year = YEAR(?) AND balance_type = 'AUTO' - AND user_id IN (SELECT user_id FROM sso_users WHERE is_active = 1) - `, [typeId, holiday.holiday_date]); + AND user_id IN ( + SELECT user_id FROM sso_users + WHERE is_active = 1 AND hire_date IS NOT NULL AND hire_date <= ? + ) + `, [typeId, holiday.holiday_date, holiday.holiday_date]); // 4. 차감 완료 표시 await conn.query( 'UPDATE company_holidays SET deduction_applied_at = NOW() WHERE id = ?', [holidayId] ); - // 5. balance 없는 사원 수 체크 (경고용) + // 5. balance 없는 사원 수 체크 (경고용, 관리계정·미입사자 제외) const [activeUsers] = await conn.query( - 'SELECT COUNT(*) as cnt FROM sso_users WHERE is_active = 1' + 'SELECT COUNT(*) as cnt FROM sso_users WHERE is_active = 1 AND hire_date IS NOT NULL AND hire_date <= ?', + [holiday.holiday_date] ); const missing = activeUsers[0].cnt - result.affectedRows;