From 4ded8632e56d19411436dd1ddca9e92a6ba2c3cc Mon Sep 17 00:00:00 2001 From: tom_trgr Date: Mon, 5 Jan 2026 00:39:00 +0100 Subject: [PATCH] fixed overtime calc issue --- Backend/endpoints/time.go | 2 +- Backend/models/compoundDay.go | 14 +++++++++----- Backend/templates/timePage.templ | 2 +- Backend/templates/timePage_templ.go | 2 +- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/Backend/endpoints/time.go b/Backend/endpoints/time.go index 1f7985e..e3b0193 100644 --- a/Backend/endpoints/time.go +++ b/Backend/endpoints/time.go @@ -94,7 +94,7 @@ func getBookings(w http.ResponseWriter, r *http.Request) { if day.Date().Before(lastSub) { continue } - aggregatedOvertime += day.GetOvertime(user, models.WorktimeBaseDay, false) + aggregatedOvertime += day.GetOvertime(user, models.WorktimeBaseDay, true) } if reportedOvertime, err := user.GetReportedOvertime(); err == nil { user.Overtime = (reportedOvertime + aggregatedOvertime).Round(time.Minute) diff --git a/Backend/models/compoundDay.go b/Backend/models/compoundDay.go index 618d919..7bc4490 100644 --- a/Backend/models/compoundDay.go +++ b/Backend/models/compoundDay.go @@ -28,7 +28,7 @@ func (c *CompoundDay) GetWorkDay() WorkDay { // IsEmpty implements [IWorkDay]. func (c *CompoundDay) IsEmpty() bool { - return len(c.DayParts) > 0 + return len(c.DayParts) == 0 } // Date implements [IWorkDay]. @@ -47,12 +47,16 @@ func (c *CompoundDay) GetDayProgress(u User) int8 { // GetOvertime implements [IWorkDay]. func (c *CompoundDay) GetOvertime(u User, base WorktimeBase, includeKurzarbeit bool) time.Duration { + work := c.GetWorktime(u, base, includeKurzarbeit) + var targetHours time.Duration - var overtime time.Duration - for _, day := range c.DayParts { - overtime += day.GetOvertime(u, base, includeKurzarbeit) + switch base { + case WorktimeBaseDay: + targetHours = u.ArbeitszeitProTagFrac(1) + case WorktimeBaseWeek: + targetHours = u.ArbeitszeitProWocheFrac(.2) } - return overtime + return (work - targetHours).Round(time.Minute) } // GetPausetime implements [IWorkDay]. diff --git a/Backend/templates/timePage.templ b/Backend/templates/timePage.templ index 3dc9f03..d449d4a 100644 --- a/Backend/templates/timePage.templ +++ b/Backend/templates/timePage.templ @@ -115,7 +115,7 @@ templ defaultDayComponent(day models.IWorkDay) { if pause > 0 {

{ helper.FormatDuration(pause) }

} - if overtime != 0 && day.IsEmpty() == false { + if !day.IsEmpty() && overtime != 0 {

{ helper.FormatDuration(overtime) } diff --git a/Backend/templates/timePage_templ.go b/Backend/templates/timePage_templ.go index 5f55e8d..6aced07 100644 --- a/Backend/templates/timePage_templ.go +++ b/Backend/templates/timePage_templ.go @@ -346,7 +346,7 @@ func defaultDayComponent(day models.IWorkDay) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - if overtime != 0 && day.IsEmpty() == false { + if !day.IsEmpty() && overtime != 0 { templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 27, "

") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err