fix(tksupport): 전사 휴가 차감 시 관리계정·미입사자 제외

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Hyungi Ahn
2026-03-25 08:55:14 +09:00
parent a40c1e0f18
commit 66db012754

View File

@@ -61,21 +61,25 @@ const companyHolidayModel = {
} }
const typeId = types[0].id; const typeId = types[0].id;
// 3. 활성 사원 연차 차감 (잔여일 무관 일괄 적용) // 3. 활성 사원 연차 차감 (관리계정 제외, 입사일 이후 휴가만 적용)
const [result] = await conn.query(` const [result] = await conn.query(`
UPDATE sp_vacation_balances SET used_days = used_days + 1, updated_at = NOW() UPDATE sp_vacation_balances SET used_days = used_days + 1, updated_at = NOW()
WHERE vacation_type_id = ? AND year = YEAR(?) AND balance_type = 'AUTO' 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) AND user_id IN (
`, [typeId, holiday.holiday_date]); 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. 차감 완료 표시 // 4. 차감 완료 표시
await conn.query( await conn.query(
'UPDATE company_holidays SET deduction_applied_at = NOW() WHERE id = ?', [holidayId] 'UPDATE company_holidays SET deduction_applied_at = NOW() WHERE id = ?', [holidayId]
); );
// 5. balance 없는 사원 수 체크 (경고용) // 5. balance 없는 사원 수 체크 (경고용, 관리계정·미입사자 제외)
const [activeUsers] = await conn.query( 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; const missing = activeUsers[0].cnt - result.affectedRows;