From 4e783bd5082a6b8cbc0631871f5283f979d8a444 Mon Sep 17 00:00:00 2001 From: jtricerolph Date: Mon, 20 Jul 2026 11:32:35 +0000 Subject: [PATCH] Fix available_rooms query: use newbook_occupancy_report_data not daily_occupancy The table is newbook_occupancy_report_data (per-category rows). Aggregate SUM(available - maintenance) WHERE category_id != '5' to get the correct available room count excluding overflow and maintenance. Co-Authored-By: Claude Sonnet 4.6 --- backend/api/public.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/backend/api/public.py b/backend/api/public.py index fe64890..eeb5cc8 100644 --- a/backend/api/public.py +++ b/backend/api/public.py @@ -53,12 +53,14 @@ async def get_rooms_forecast( row = result.fetchone() fallback_total_rooms = int(row.config_value) if row and row.config_value else 30 - # Pre-fetch daily_occupancy available_rooms for the whole range (excludes overflow/maintenance) + # Pre-fetch available rooms per day excluding overflow (category_id='5') and maintenance rooms occ_result = await db.execute( text(""" - SELECT date, available_rooms - FROM daily_occupancy + SELECT date, SUM(available - COALESCE(maintenance, 0)) AS available_rooms + FROM newbook_occupancy_report_data WHERE date >= :start_date AND date <= :end_date + AND category_id != '5' + GROUP BY date """), {"start_date": start, "end_date": end} )