Allow menu deletion when categories exist - unassign instead of block

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
John Mizerek 2026-01-28 18:01:51 -08:00
parent 3613776ff3
commit 41ef1631ef

View file

@ -190,27 +190,32 @@ try {
apiAbort({ "OK": false, "ERROR": "missing_menu_id", "MESSAGE": "MenuID is required" }); apiAbort({ "OK": false, "ERROR": "missing_menu_id", "MESSAGE": "MenuID is required" });
} }
// Check if menu has categories // Check if menu has categories/items for warning
qCatCheck = queryExecute(" qCatCheck = queryExecute("
SELECT COUNT(*) as cnt FROM Categories SELECT COUNT(*) as cnt FROM Categories
WHERE CategoryMenuID = :menuID WHERE CategoryMenuID = :menuID AND CategoryBusinessID = :businessID
", { menuID: menuID }, { datasource: "payfrit" }); ", { menuID: menuID, businessID: businessID }, { datasource: "payfrit" });
// Unassign categories from this menu
if (qCatCheck.cnt > 0) { if (qCatCheck.cnt > 0) {
apiAbort({ queryExecute("
"OK": false, UPDATE Categories SET CategoryMenuID = 0
"ERROR": "menu_has_categories", WHERE CategoryMenuID = :menuID AND CategoryBusinessID = :businessID
"MESSAGE": "Cannot delete menu with categories. Move or delete categories first.", ", { menuID: menuID, businessID: businessID }, { datasource: "payfrit" });
"CATEGORY_COUNT": qCatCheck.cnt
});
} }
// Soft-delete the menu
queryExecute(" queryExecute("
UPDATE Menus SET MenuIsActive = 0 UPDATE Menus SET MenuIsActive = 0
WHERE MenuID = :menuID AND MenuBusinessID = :businessID WHERE MenuID = :menuID AND MenuBusinessID = :businessID
", { menuID: menuID, businessID: businessID }, { datasource: "payfrit" }); ", { menuID: menuID, businessID: businessID }, { datasource: "payfrit" });
response = { "OK": true, "MenuID": menuID, "ACTION": "deleted" }; response = {
"OK": true,
"MenuID": menuID,
"ACTION": "deleted",
"CategoriesUnassigned": qCatCheck.cnt
};
break; break;
case "reorder": case "reorder":