Umstellung der Stundenberechnung auf Sollarbeitszeit.
This commit is contained in:
@@ -507,19 +507,14 @@ function registerUserRoutes(app) {
|
||||
}
|
||||
}
|
||||
|
||||
// Sollstunden berechnen
|
||||
// Sollstunden berechnen (Variante B: immer vertraglich, nicht reduziert durch „genommen“)
|
||||
const sollStunden = (wochenstunden / arbeitstage) * workdays;
|
||||
|
||||
// Überstunden für diese Woche: (totalHours + vacationHours + holidayHours) - adjustedSollStunden
|
||||
const weekTotalHoursWithVacation = weekTotalHours + weekVacationHours + holidayHours;
|
||||
const adjustedSollStunden = sollStunden - (fullDayOvertimeDays * fullDayHours);
|
||||
// weekOvertimeHours = Überstunden diese Woche (wie im Frontend berechnet)
|
||||
const weekOvertimeHours = weekTotalHoursWithVacation - adjustedSollStunden;
|
||||
// Überstunden/Fehlstunden = Gesamt − Soll (kann negativ sein)
|
||||
const weekOvertimeHours = weekTotalHoursWithVacation - sollStunden;
|
||||
|
||||
// Kumulativ addieren
|
||||
// WICHTIG: weekOvertimeHours enthält bereits die Überstunden dieser Woche (kann negativ sein bei 8 Überstunden)
|
||||
// weekOvertimeTaken enthält die verbrauchten Überstunden (8 Stunden pro Tag mit 8 Überstunden)
|
||||
// Die aktuellen Überstunden = Summe aller Wochen-Überstunden - verbrauchte Überstunden
|
||||
totalOvertimeHours += weekOvertimeHours;
|
||||
totalOvertimeTaken += weekOvertimeTaken;
|
||||
totalVacationDays += weekVacationDays;
|
||||
@@ -528,10 +523,8 @@ function registerUserRoutes(app) {
|
||||
|
||||
// Wenn alle Wochen verarbeitet wurden, Antwort senden
|
||||
if (processedWeeks === weeks.length && !hasError) {
|
||||
// Aktuelle Überstunden = Summe aller Wochen-Überstunden - verbrauchte Überstunden + Offset
|
||||
// weekOvertimeHours enthält bereits die korrekte Berechnung pro Woche (wie im Frontend)
|
||||
// weekOvertimeTaken enthält die verbrauchten Überstunden (8 Stunden pro Tag mit 8 Überstunden)
|
||||
const currentOvertime = (totalOvertimeHours - totalOvertimeTaken) + overtimeOffsetHours;
|
||||
// Variante B: Verbleibend = Summe Wochen-Überstunden + Offset („genommen“ nur Anzeige)
|
||||
const currentOvertime = totalOvertimeHours + overtimeOffsetHours;
|
||||
const remainingVacation = urlaubstage - totalVacationDays + vacationOffsetDays;
|
||||
|
||||
res.json({
|
||||
@@ -761,11 +754,10 @@ function registerUserRoutes(app) {
|
||||
}
|
||||
}
|
||||
|
||||
// Sollstunden berechnen
|
||||
// Sollstunden berechnen (Variante B: immer vertraglich)
|
||||
const sollStunden = (wochenstunden / arbeitstage) * workdays;
|
||||
const weekTotalHoursWithVacation = weekTotalHours + weekVacationHours + holidayHours;
|
||||
const adjustedSollStunden = sollStunden - (fullDayOvertimeDays * fullDayHours);
|
||||
const weekOvertimeHours = weekTotalHoursWithVacation - adjustedSollStunden;
|
||||
const weekOvertimeHours = weekTotalHoursWithVacation - sollStunden;
|
||||
|
||||
// Kalenderwoche berechnen
|
||||
const calendarWeek = getCalendarWeek(week.week_start);
|
||||
@@ -780,7 +772,7 @@ function registerUserRoutes(app) {
|
||||
overtime_hours: parseFloat(weekOvertimeHours.toFixed(2)),
|
||||
overtime_taken: parseFloat(weekOvertimeTaken.toFixed(2)),
|
||||
total_hours: parseFloat(weekTotalHoursWithVacation.toFixed(2)),
|
||||
soll_stunden: parseFloat(adjustedSollStunden.toFixed(2)),
|
||||
soll_stunden: parseFloat(sollStunden.toFixed(2)),
|
||||
vacation_days: parseFloat(weekVacationDays.toFixed(1)),
|
||||
workdays: workdays
|
||||
});
|
||||
|
||||
@@ -597,12 +597,11 @@ function registerVerwaltungRoutes(app) {
|
||||
const weekOvertimeHours = totalHoursWithVacation - sollStunden;
|
||||
|
||||
// Kumulative Überstunden: Summe aller Wochen bis zur aktuellen Woche
|
||||
// cumulativeOvertimeHours enthält bereits alle vorherigen Wochen
|
||||
const totalCumulativeOvertimeHours = cumulativeOvertimeHours + weekOvertimeHours;
|
||||
const totalCumulativeOvertimeTaken = cumulativeOvertimeTaken + overtimeTaken;
|
||||
|
||||
// Verbleibende Überstunden = kumulative Überstunden - kumulative genommene Überstunden
|
||||
const remainingOvertime = totalCumulativeOvertimeHours - totalCumulativeOvertimeTaken;
|
||||
// Variante B: Verbleibend = Summe Wochen-Überstunden („genommen“ nur Anzeige)
|
||||
const remainingOvertime = totalCumulativeOvertimeHours;
|
||||
const remainingOvertimeWithOffset = remainingOvertime + overtimeOffsetHours;
|
||||
|
||||
// Verbleibende Urlaubstage (berücksichtigt alle eingereichten Wochen, nicht nur die aktuelle)
|
||||
|
||||
Reference in New Issue
Block a user