Icons, Footer, Stundenformel
This commit is contained in:
@@ -440,12 +440,17 @@ function renderWeek() {
|
||||
|
||||
// Stunden zur Summe hinzufügen
|
||||
// Bei ganztägigem Urlaub oder Krank sollten es bereits 8 Stunden sein (vom Backend gesetzt)
|
||||
// Feiertag: 8h Basis + gearbeitete Stunden (jede gearbeitete Stunde = Überstunde)
|
||||
// Feiertag Werktag: 8h Basis + gearbeitete Stunden (jede gearbeitete Stunde = Überstunde)
|
||||
// Feiertag am Wochenende: keine Tagesarbeitsstunden, nur gearbeitete Stunden (z. B. Reise)
|
||||
// Bei halbem Tag Urlaub werden die Urlaubsstunden später in der Überstunden-Berechnung hinzugezählt
|
||||
// Wochenend-Prozentsätze: Nur auf tatsächlich gearbeitete Stunden anwenden (nicht auf Urlaub, Krankheit, Feiertage)
|
||||
let hoursToAdd = 0;
|
||||
if (isHoliday) {
|
||||
hoursToAdd = fullDayHours + (hours || 0); // (Wochenarbeitszeit / Arbeitstage) Feiertag + gearbeitete Stunden (= Überstunden)
|
||||
if (isWeekend) {
|
||||
hoursToAdd = hours || 0; // Feiertag am Wochenende: keine Tagesarbeitsstunden
|
||||
} else {
|
||||
hoursToAdd = fullDayHours + (hours || 0); // (Wochenarbeitszeit / Arbeitstage) Feiertag + gearbeitete Stunden (= Überstunden)
|
||||
}
|
||||
} else {
|
||||
hoursToAdd = hours || 0;
|
||||
// Wochenend-Prozentsatz anwenden (nur wenn weekend_travel aktiviert UND es ist ein Wochenendtag)
|
||||
@@ -488,6 +493,9 @@ function renderWeek() {
|
||||
}
|
||||
} else if (isSick) {
|
||||
hoursDisplay = fullDayHours.toFixed(2) + ' h (Krank)';
|
||||
} else if (isHoliday && isWeekend) {
|
||||
// Feiertag am Wochenende: keine Tagesarbeitsstunden
|
||||
hoursDisplay = (hours ? hours.toFixed(2) : '0') + ' h (Feiertag)';
|
||||
} else if (isHoliday && !hours) {
|
||||
hoursDisplay = fullDayHours.toFixed(2) + ' h (Feiertag)';
|
||||
} else if (isHoliday && hours) {
|
||||
@@ -818,7 +826,9 @@ function updateOvertimeDisplay() {
|
||||
} else if (sickStatus) {
|
||||
totalHours += fullDayHours; // Krank = (Wochenarbeitszeit / Arbeitstage) Stunden
|
||||
} else if (currentHolidayDates.has(dateStr)) {
|
||||
// Feiertag: (Wochenarbeitszeit / Arbeitstage) Basis + gearbeitete Stunden (jede Stunde = Überstunde)
|
||||
// Feiertag: Werktag = Basis + gearbeitete Stunden; Wochenende = nur gearbeitete Stunden (keine Tagesarbeitsstunden)
|
||||
const dayOfWeek = date.getDay();
|
||||
const isWeekendHoliday = (dayOfWeek === 6 || dayOfWeek === 0);
|
||||
const startInput = document.querySelector(`input[data-date="${dateStr}"][data-field="start_time"]`);
|
||||
const endInput = document.querySelector(`input[data-date="${dateStr}"][data-field="end_time"]`);
|
||||
const startTime = startInput ? startInput.value : '';
|
||||
@@ -833,7 +843,11 @@ function updateOvertimeDisplay() {
|
||||
} else if (currentEntries[dateStr]?.total_hours) {
|
||||
worked = parseFloat(currentEntries[dateStr].total_hours) || 0;
|
||||
}
|
||||
totalHours += fullDayHours + worked; // (Wochenarbeitszeit / Arbeitstage) Feiertag + gearbeitete Stunden (= Überstunden)
|
||||
if (isWeekendHoliday) {
|
||||
totalHours += worked; // Feiertag am Wochenende: keine Tagesarbeitsstunden
|
||||
} else {
|
||||
totalHours += fullDayHours + worked; // (Wochenarbeitszeit / Arbeitstage) Feiertag + gearbeitete Stunden (= Überstunden)
|
||||
}
|
||||
} else {
|
||||
// Wenn 8 Überstunden (ganzer Tag) eingetragen sind, zählt der Tag als 0 Stunden
|
||||
if (isFullDayOvertime) {
|
||||
@@ -922,7 +936,8 @@ function updateOvertimeDisplay() {
|
||||
const totalHoursWithVacation = totalHours + vacationHours;
|
||||
const adjustedSollStunden = sollStunden - (fullDayOvertimeDays * fullDayHours);
|
||||
// overtimeHours = Überstunden diese Woche (wie im Backend berechnet)
|
||||
const overtimeHours = totalHoursWithVacation - adjustedSollStunden;
|
||||
// Genommene Überstunden werden abgezogen, um die Netto-Überstunden zu erhalten
|
||||
const overtimeHours = totalHoursWithVacation - adjustedSollStunden - overtimeTaken;
|
||||
|
||||
// Überstunden-Anzeige aktualisieren
|
||||
const overtimeSummaryItem = document.getElementById('overtimeSummaryItem');
|
||||
@@ -1206,8 +1221,12 @@ async function saveEntry(input) {
|
||||
currentEntries[date].total_hours = totalHours;
|
||||
} else {
|
||||
// Zurück zu normaler Anzeige basierend auf anderen Status
|
||||
const d = new Date(date);
|
||||
const isWeekendHoliday = isHoliday && (d.getDay() === 6 || d.getDay() === 0);
|
||||
if (isSick) {
|
||||
hoursElement.textContent = fullDayHours.toFixed(2) + ' h (Krank)';
|
||||
} else if (isWeekendHoliday) {
|
||||
hoursElement.textContent = (hours ? hours.toFixed(2) : '0') + ' h (Feiertag)';
|
||||
} else if (isHoliday && !hours) {
|
||||
hoursElement.textContent = fullDayHours.toFixed(2) + ' h (Feiertag)';
|
||||
} else if (isHoliday && hours) {
|
||||
@@ -1369,11 +1388,17 @@ async function saveEntry(input) {
|
||||
currentEntries[date].total_hours = totalHours;
|
||||
} else if (isSick) {
|
||||
hoursText = fullDayHours.toFixed(2) + ' h (Krank)';
|
||||
} else if (isHoliday && result.total_hours <= fullDayHours) {
|
||||
hoursText = fullDayHours.toFixed(2) + ' h (Feiertag)';
|
||||
} else if (isHoliday && result.total_hours > fullDayHours) {
|
||||
const overtime = result.total_hours - fullDayHours;
|
||||
hoursText = fullDayHours.toFixed(2) + ' + ' + overtime.toFixed(2) + ' h (Überst.)';
|
||||
} else if (isHoliday) {
|
||||
const d = new Date(date);
|
||||
const isWeekendHoliday = (d.getDay() === 6 || d.getDay() === 0);
|
||||
if (isWeekendHoliday) {
|
||||
hoursText = (result.total_hours || 0).toFixed(2) + ' h (Feiertag)';
|
||||
} else if (result.total_hours <= fullDayHours) {
|
||||
hoursText = fullDayHours.toFixed(2) + ' h (Feiertag)';
|
||||
} else {
|
||||
const overtime = result.total_hours - fullDayHours;
|
||||
hoursText = fullDayHours.toFixed(2) + ' + ' + overtime.toFixed(2) + ' h (Überst.)';
|
||||
}
|
||||
}
|
||||
|
||||
hoursElement.textContent = hoursText;
|
||||
@@ -1973,8 +1998,12 @@ function toggleSickStatus(dateStr) {
|
||||
currentEntries[dateStr].total_hours = fullDayHours;
|
||||
} else {
|
||||
// Zurück zu normaler Anzeige basierend auf anderen Status
|
||||
const d = new Date(dateStr);
|
||||
const isWeekendHoliday = isHoliday && (d.getDay() === 6 || d.getDay() === 0);
|
||||
if (isFullDayVacation) {
|
||||
hoursElement.textContent = fullDayHours.toFixed(2) + ' h (Urlaub)';
|
||||
} else if (isWeekendHoliday) {
|
||||
hoursElement.textContent = (hours ? hours.toFixed(2) : '0') + ' h (Feiertag)';
|
||||
} else if (isHoliday && !hours) {
|
||||
hoursElement.textContent = fullDayHours.toFixed(2) + ' h (Feiertag)';
|
||||
} else if (isHoliday && hours) {
|
||||
|
||||
Reference in New Issue
Block a user