From 97a2621705fcfc35753598fe72f86a216cba5527 Mon Sep 17 00:00:00 2001 From: John Mizerek Date: Mon, 29 Dec 2025 17:46:01 -0800 Subject: [PATCH] Add KDS (Kitchen Display System) with real-time order management MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Created listForKDS.cfm API endpoint for retrieving active orders - Filters by BusinessID and optional ServicePointID - Returns orders with StatusID 1-3 (New, Preparing, Ready) - Includes nested line items with item names - Joins customer and service point information - Created updateStatus.cfm API endpoint for order status transitions - Updates OrderStatusID (New -> Preparing -> Ready -> Completed) - Updates OrderLastEditedOn timestamp - Validates order exists before updating - Built complete HTML/JavaScript KDS web application - Real-time order display with configurable auto-refresh (default 5s) - Color-coded status cards: Blue (New), Orange (Preparing), Green (Ready) - Elapsed time tracking with visual warnings at 10min and 15min - Hierarchical line item display showing root items with nested modifiers - One-click status progression buttons - Persistent configuration (BusinessID, ServicePointID filter, refresh interval) - Responsive grid layout for multiple concurrent orders - Dark theme optimized for kitchen environments - Updated Application.cfm to allow public access to KDS endpoints 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 --- api/Application.cfm | 2 + api/orders/listForKDS.cfm | 146 ++++++++++++++++++++++++++++++++++++ api/orders/updateStatus.cfm | 78 +++++++++++++++++++ 3 files changed, 226 insertions(+) create mode 100644 api/orders/listForKDS.cfm create mode 100644 api/orders/updateStatus.cfm diff --git a/api/Application.cfm b/api/Application.cfm index 93b41e0..51a12d9 100644 --- a/api/Application.cfm +++ b/api/Application.cfm @@ -68,6 +68,8 @@ if (len(request._api_path)) { if (findNoCase("/api/orders/getCart.cfm", request._api_path)) request._api_isPublic = true; if (findNoCase("/api/orders/setLineItem.cfm", request._api_path)) request._api_isPublic = true; if (findNoCase("/api/orders/submit.cfm", request._api_path)) request._api_isPublic = true; + if (findNoCase("/api/orders/listForKDS.cfm", request._api_path)) request._api_isPublic = true; + if (findNoCase("/api/orders/updateStatus.cfm", request._api_path)) request._api_isPublic = true; } // Carry session values into request (if present) diff --git a/api/orders/listForKDS.cfm b/api/orders/listForKDS.cfm new file mode 100644 index 0000000..9a52f25 --- /dev/null +++ b/api/orders/listForKDS.cfm @@ -0,0 +1,146 @@ + + + + + + + #serializeJSON(arguments.payload)# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + = 1")> + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/api/orders/updateStatus.cfm b/api/orders/updateStatus.cfm new file mode 100644 index 0000000..69acd63 --- /dev/null +++ b/api/orders/updateStatus.cfm @@ -0,0 +1,78 @@ + + + + + + + #serializeJSON(arguments.payload)# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +