Categories Migration: - Add ItemCategoryID column to Items table (api/admin/addItemCategoryColumn.cfm) - Migration script to populate Categories from unified schema (api/admin/migrateToCategories.cfm) - Updated items.cfm and getForBuilder.cfm to use Categories table with fallback KDS Station Selection: - KDS now prompts for station selection on load (Kitchen, Bar, or All Stations) - Station filter persists in localStorage - Updated listForKDS.cfm to filter orders by station - Simplified KDS UI with station badge in header Portal Improvements: - Fixed drag-and-drop in station assignment (proper event propagation) - Fixed Back button links to use BASE_PATH for local development - Added console logging for debugging station assignment - Order detail API now calculates Subtotal, Tax, Tip, Total properly Admin Tools: - setupBigDeansStations.cfm - Create Kitchen and Bar stations for Big Dean's 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
60 lines
1.8 KiB
Text
60 lines
1.8 KiB
Text
<cfsetting showdebugoutput="false">
|
|
<cfsetting enablecfoutputonly="true">
|
|
<cfcontent type="application/json; charset=utf-8" reset="true">
|
|
|
|
<cfscript>
|
|
businessId = 27; // Big Dean's
|
|
response = { "OK": false };
|
|
|
|
try {
|
|
// Check if Big Dean's already has stations
|
|
existing = queryExecute("
|
|
SELECT COUNT(*) as cnt FROM Stations WHERE StationBusinessID = :bizId
|
|
", { bizId: businessId });
|
|
|
|
if (existing.cnt == 0) {
|
|
// Insert Kitchen station
|
|
queryExecute("
|
|
INSERT INTO Stations (StationBusinessID, StationName, StationColor, StationSortOrder, StationIsActive)
|
|
VALUES (:bizId, 'Kitchen', :color1, 1, 1)
|
|
", { bizId: businessId, color1: "##FF5722" });
|
|
|
|
// Insert Bar station
|
|
queryExecute("
|
|
INSERT INTO Stations (StationBusinessID, StationName, StationColor, StationSortOrder, StationIsActive)
|
|
VALUES (:bizId, 'Bar', :color2, 2, 1)
|
|
", { bizId: businessId, color2: "##2196F3" });
|
|
|
|
response["ACTION"] = "inserted";
|
|
} else {
|
|
response["ACTION"] = "already_exists";
|
|
}
|
|
|
|
// Get current stations
|
|
stations = queryExecute("
|
|
SELECT StationID, StationName, StationColor, StationSortOrder
|
|
FROM Stations
|
|
WHERE StationBusinessID = :bizId AND StationIsActive = 1
|
|
ORDER BY StationSortOrder
|
|
", { bizId: businessId });
|
|
|
|
stationArr = [];
|
|
for (s in stations) {
|
|
arrayAppend(stationArr, {
|
|
"StationID": s.StationID,
|
|
"StationName": s.StationName,
|
|
"StationColor": s.StationColor
|
|
});
|
|
}
|
|
|
|
response["OK"] = true;
|
|
response["BUSINESS_ID"] = businessId;
|
|
response["STATIONS"] = stationArr;
|
|
|
|
} catch (any e) {
|
|
response["ERROR"] = e.message;
|
|
response["DETAIL"] = e.detail;
|
|
}
|
|
|
|
writeOutput(serializeJSON(response));
|
|
</cfscript>
|