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;