Add Prozent im ADmin für wochenende
This commit is contained in:
@@ -142,6 +142,27 @@ function registerVerwaltungRoutes(app) {
|
||||
const userId = req.params.id;
|
||||
const { week_start, week_end } = req.query;
|
||||
|
||||
// Wochenend-Prozentsätze laden
|
||||
db.get('SELECT saturday_percentage, sunday_percentage FROM system_options WHERE id = 1', (err, options) => {
|
||||
if (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 abrufen
|
||||
db.get('SELECT wochenstunden, urlaubstage, overtime_offset_hours FROM users WHERE id = ?', [userId], (err, user) => {
|
||||
if (err || !user) {
|
||||
@@ -190,12 +211,24 @@ function registerVerwaltungRoutes(app) {
|
||||
vacationHours += 4; // Halber Tag = 4 Stunden
|
||||
// Bei halbem Tag Urlaub können noch Arbeitsstunden vorhanden sein
|
||||
if (entry.total_hours) {
|
||||
totalHours += entry.total_hours;
|
||||
let hours = entry.total_hours;
|
||||
// Wochenend-Prozentsatz anwenden (nur auf tatsächlich gearbeitete Stunden)
|
||||
const weekendPercentage = getWeekendPercentage(entry.date);
|
||||
if (weekendPercentage >= 100 && hours > 0 && !entry.sick_status) {
|
||||
hours = hours * (weekendPercentage / 100);
|
||||
}
|
||||
totalHours += hours;
|
||||
}
|
||||
} else {
|
||||
// Kein Urlaub - zähle nur Arbeitsstunden
|
||||
if (entry.total_hours) {
|
||||
totalHours += entry.total_hours;
|
||||
let hours = entry.total_hours;
|
||||
// Wochenend-Prozentsatz anwenden (nur auf tatsächlich gearbeitete Stunden, nicht auf Krankheit)
|
||||
const weekendPercentage = getWeekendPercentage(entry.date);
|
||||
if (weekendPercentage > 0 && hours > 0 && !entry.sick_status) {
|
||||
hours = hours * (1 + weekendPercentage / 100);
|
||||
}
|
||||
totalHours += hours;
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -248,6 +281,7 @@ function registerVerwaltungRoutes(app) {
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// API: Admin-Kommentar speichern
|
||||
|
||||
Reference in New Issue
Block a user