Add Prozent im ADmin für wochenende
This commit is contained in:
@@ -27,6 +27,28 @@ function registerTimesheetRoutes(app) {
|
||||
// Normalisiere sick_status: Boolean oder 1/0 zu Boolean
|
||||
const isSick = sick_status === true || sick_status === 1 || sick_status === 'true' || sick_status === '1';
|
||||
|
||||
// Wochenend-Prozentsätze laden
|
||||
db.get('SELECT saturday_percentage, sunday_percentage FROM system_options WHERE id = 1', (err, options) => {
|
||||
if (err) {
|
||||
console.error('Fehler beim Laden der Optionen:', err);
|
||||
return res.status(500).json({ error: 'Fehler beim Laden der Optionen' });
|
||||
}
|
||||
|
||||
const saturdayPercentage = options?.saturday_percentage || 100;
|
||||
const sundayPercentage = options?.sunday_percentage || 100;
|
||||
|
||||
// Hilfsfunktion: Prüft ob ein Datum ein Wochenendtag ist und gibt den Prozentsatz zurück
|
||||
function getWeekendPercentage(dateStr) {
|
||||
const date = new Date(dateStr);
|
||||
const day = date.getDay();
|
||||
if (day === 6) { // Samstag
|
||||
return saturdayPercentage;
|
||||
} else if (day === 0) { // Sonntag
|
||||
return sundayPercentage;
|
||||
}
|
||||
return 100; // Kein Wochenende = 100% (normal)
|
||||
}
|
||||
|
||||
// User-Daten laden (für Überstunden-Berechnung)
|
||||
db.get('SELECT wochenstunden FROM users WHERE id = ?', [userId], (err, user) => {
|
||||
if (err) {
|
||||
@@ -73,6 +95,11 @@ function registerTimesheetRoutes(app) {
|
||||
const end = new Date(`2000-01-01T${normalizedEndTime}`);
|
||||
const diffMs = end - start;
|
||||
total_hours = (diffMs / (1000 * 60 * 60)) - (break_minutes / 60);
|
||||
// Wochenend-Prozentsatz anwenden (nur auf tatsächlich gearbeitete Stunden, nicht auf Urlaub/Krankheit)
|
||||
const weekendPercentage = getWeekendPercentage(date);
|
||||
if (weekendPercentage >= 100 && total_hours > 0 && !isSick && vacation_type !== 'full') {
|
||||
total_hours = total_hours * (weekendPercentage / 100);
|
||||
}
|
||||
// Bei halbem Tag Urlaub: total_hours bleibt die tatsächlich gearbeiteten Stunden
|
||||
// Die 4 Stunden Urlaub werden nur in der Überstunden-Berechnung hinzugezählt
|
||||
}
|
||||
@@ -146,6 +173,7 @@ function registerTimesheetRoutes(app) {
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// API: Feiertage für einen Zeitraum (Dashboard-Anzeige)
|
||||
|
||||
Reference in New Issue
Block a user