fix: include holiday hours in covered time instead of subtracting from fund

Previously: holidays reduced the fund (fund = bizDays - holidays).
This caused a mismatch — frontend compared covered against full
month fund, but backend used reduced fund.

Now: holidays count as covered hours (like vacation/sick). Fund stays
at full working days. So worked + vacation + sick + holidays = covered,
and covered >= fund means fulfilled.

Example: Jan has 22 days (176h), 1 holiday. Haas worked 168h.
Before: fund=168, covered=168, OK but frontend saw fund=176, not OK.
After: fund=176, covered=168+8=176, OK everywhere.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
BOHA
2026-03-24 19:18:26 +01:00
parent c3bb0a6782
commit bc2a14f637

View File

@@ -406,9 +406,10 @@ export async function getWorkfund(year: number) {
} }
} }
const userFund = Math.max(0, (bizDaysToDate - holidayDays) * 8); const userFund = bizDaysToDate * 8;
const workedRound = Math.round(worked * 10) / 10; const workedRound = Math.round(worked * 10) / 10;
const leaveHours = vacationHours + sickHours; const holidayHours = holidayDays * 8;
const leaveHours = vacationHours + sickHours + holidayHours;
const covered = Math.round((worked + leaveHours) * 10) / 10; const covered = Math.round((worked + leaveHours) * 10) / 10;
const missing = Math.max(0, Math.round((userFund - covered) * 10) / 10); const missing = Math.max(0, Math.round((userFund - covered) * 10) / 10);
const overtime = Math.max(0, Math.round((covered - userFund) * 10) / 10); const overtime = Math.max(0, Math.round((covered - userFund) * 10) / 10);