Add Weekly Actuals directors report with charts
Full weekly actuals report matching the spreadsheet layout: - Week summary table (Rooms/Dry/Wet vs Budget vs Last Year vs Last Week) - Grouped bar chart + dept split pie chart - 5-week rolling summary table - Occupancy table by day of week (rooms, occ%, ARR, RevPAR) - Month progress to date (totals + dept split) with progress bar chart - 12-month turnover trend line chart by dept - Utilities placeholder (pending meter readings app) Budget values come from the forecasting API which distributes monthly budget proportionally to daily sales — so high-demand weeks (e.g. Christmas) carry a higher budget share. Gross shown as net × 1.20. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
29a119f51d
commit
b97358e9fb
9 changed files with 1433 additions and 6 deletions
|
|
@ -1,4 +1,4 @@
|
|||
import type { ReportMeta, ReportResult, WorksheetData, ForecastReportData } from './types'
|
||||
import type { ReportMeta, ReportResult, WorksheetData, ForecastReportData, WeeklyActualData } from './types'
|
||||
|
||||
const BASE = '/reports/api'
|
||||
|
||||
|
|
@ -30,6 +30,12 @@ export function runReport(id: string, dateFrom: string, dateTo: string): Promise
|
|||
})
|
||||
}
|
||||
|
||||
// ── Weekly Actuals API ──────────────────────────────────────────────────────
|
||||
|
||||
export function getWeeklyActual(weekEnding: string): Promise<WeeklyActualData> {
|
||||
return request<WeeklyActualData>(`/weekly-actual/${weekEnding}`)
|
||||
}
|
||||
|
||||
// ── Directors Forecast API ──────────────────────────────────────────────────
|
||||
|
||||
export function dfGetWorksheet(year: number, month: number): Promise<WorksheetData> {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue