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