From 503449b0bc2a4e0ff3cc54641fd68afc1ddf838e Mon Sep 17 00:00:00 2001 From: Stephen Adamson Date: Thu, 30 Jul 2026 09:45:46 +0100 Subject: [PATCH] fix: staged hours no longer leak closed values to days before effective date MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The else-if chain in GetWorkingHours/computeAvailableHours entered the staged change block for ALL days when a pending change existed, but only applied hours for future dates — leaving earlier days as zero-value (closed). Moved the effective date check into the else-if condition so early days fall through to default hours. --- backend/handlers/scheduling/default-hours.go | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/backend/handlers/scheduling/default-hours.go b/backend/handlers/scheduling/default-hours.go index 1feccd6..09b5e90 100644 --- a/backend/handlers/scheduling/default-hours.go +++ b/backend/handlers/scheduling/default-hours.go @@ -382,17 +382,14 @@ func GetWorkingHours(w http.ResponseWriter, r *http.Request) { day.EndTime = applied.EndTime day.IsOpen = applied.IsOpen day.Source = "exceptional" - } else if stagedChange != nil { - dayDateStr := d.Format("2006-01-02") - if dayDateStr >= stagedChange.EffectiveDate { - for _, sh := range stagedChange.Hours { - if sh.Weekday == weekday { - day.StartTime = sh.StartTime - day.EndTime = sh.EndTime - day.IsOpen = sh.IsOpen - day.Source = "default" - break - } + } else if stagedChange != nil && d.Format("2006-01-02") >= stagedChange.EffectiveDate { + for _, sh := range stagedChange.Hours { + if sh.Weekday == weekday { + day.StartTime = sh.StartTime + day.EndTime = sh.EndTime + day.IsOpen = sh.IsOpen + day.Source = "default" + break } } } else if def, ok := defaultMap[weekday]; ok {