Save computed forecast dry/wet on worksheet save; report reads saved values

Worksheet save now persists forecast_dry/forecast_wet per day to day_overrides
so the report page always shows the same totals the user saw on the worksheet,
rather than making a second independent forecasting API call that can return
slightly different values.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
jtricerolph 2026-07-21 19:07:29 +00:00
parent 9530125509
commit 2f335c99c5
3 changed files with 36 additions and 14 deletions

View file

@ -108,13 +108,19 @@ function WorksheetTab({ year, month, dowAlign }: { year: number; month: number;
if (!canEdit) return
setSaving(true)
try {
const ovrList = Object.entries(overrides).map(([date, o]) => ({
date,
pickup_rooms: o.pickup_rooms !== '' ? parseInt(o.pickup_rooms) : null,
pickup_avg_rate: o.pickup_avg_rate !== '' ? parseFloat(o.pickup_avg_rate) : null,
dry_override: o.dry_override !== '' ? parseFloat(o.dry_override) : null,
wet_override: o.wet_override !== '' ? parseFloat(o.wet_override) : null,
}))
const dayMap = new Map(data!.days.map(d => [d.date, d]))
const ovrList = Object.entries(overrides).map(([date, o]) => {
const computed = computedDay(dayMap.get(date)!)
return {
date,
pickup_rooms: o.pickup_rooms !== '' ? parseInt(o.pickup_rooms) : null,
pickup_avg_rate: o.pickup_avg_rate !== '' ? parseFloat(o.pickup_avg_rate) : null,
dry_override: o.dry_override !== '' ? parseFloat(o.dry_override) : null,
wet_override: o.wet_override !== '' ? parseFloat(o.wet_override) : null,
forecast_dry: computed.dry,
forecast_wet: computed.wet,
}
})
await dfSaveWorksheet(year, month, { pickup_avg_rate: parseFloat(sessionRate) || 135, overrides: ovrList })
setDirty(false)
await load()