Show all templates in menu builder regardless of links

- Changed template query to find ALL templates for business (ItemCategoryID=0, ItemParentItemID=0)
- Previously only showed templates that were in ItemTemplateLinks
- Now shows all templates so they can be viewed and manually assigned to items
- Template children query also updated to include children of all templates

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
John Mizerek 2026-01-15 15:17:08 -08:00
parent d34d88e46a
commit a4fb7e7503

View file

@ -178,7 +178,8 @@ try {
ORDER BY tl.ItemID, tl.SortOrder ORDER BY tl.ItemID, tl.SortOrder
", {}, { datasource: "payfrit" }); ", {}, { datasource: "payfrit" });
// Get all templates for this business (items that appear in ItemTemplateLinks) // Get all templates for this business
// Templates are Items with ItemCategoryID=0 and ItemParentItemID=0
if (newSchemaActive) { if (newSchemaActive) {
qTemplates = queryExecute(" qTemplates = queryExecute("
SELECT DISTINCT SELECT DISTINCT
@ -190,9 +191,9 @@ try {
t.ItemRequiresChildSelection as RequiresSelection, t.ItemRequiresChildSelection as RequiresSelection,
t.ItemMaxNumSelectionReq as MaxSelections t.ItemMaxNumSelectionReq as MaxSelections
FROM Items t FROM Items t
INNER JOIN ItemTemplateLinks tl ON tl.TemplateItemID = t.ItemID WHERE t.ItemBusinessID = :businessID
INNER JOIN Items i ON i.ItemID = tl.ItemID AND t.ItemCategoryID = 0
WHERE i.ItemBusinessID = :businessID AND t.ItemParentItemID = 0
AND t.ItemIsActive = 1 AND t.ItemIsActive = 1
ORDER BY t.ItemSortOrder, t.ItemName ORDER BY t.ItemSortOrder, t.ItemName
", { businessID: businessID }, { datasource: "payfrit" }); ", { businessID: businessID }, { datasource: "payfrit" });
@ -217,29 +218,52 @@ try {
} }
// Get all children of templates (options within modifier groups) // Get all children of templates (options within modifier groups)
// This now includes ALL descendants recursively via a recursive approach // Get children of ALL templates for this business (not just linked ones)
// Filter by business and use DISTINCT to avoid duplicates from multiple template links if (newSchemaActive) {
qTemplateChildren = queryExecute(" qTemplateChildren = queryExecute("
SELECT DISTINCT SELECT DISTINCT
c.ItemID, c.ItemID,
c.ItemParentItemID as ParentItemID, c.ItemParentItemID as ParentItemID,
c.ItemName, c.ItemName,
c.ItemPrice, c.ItemPrice,
c.ItemIsCheckedByDefault as IsDefault, c.ItemIsCheckedByDefault as IsDefault,
c.ItemSortOrder, c.ItemSortOrder,
c.ItemRequiresChildSelection as RequiresSelection, c.ItemRequiresChildSelection as RequiresSelection,
c.ItemMaxNumSelectionReq as MaxSelections c.ItemMaxNumSelectionReq as MaxSelections
FROM Items c FROM Items c
WHERE c.ItemParentItemID IN ( WHERE c.ItemParentItemID IN (
SELECT DISTINCT t.ItemID SELECT t.ItemID
FROM Items t FROM Items t
INNER JOIN ItemTemplateLinks tl ON tl.TemplateItemID = t.ItemID WHERE t.ItemBusinessID = :businessID
INNER JOIN Items i ON i.ItemID = tl.ItemID AND t.ItemCategoryID = 0
WHERE i.ItemBusinessID = :businessID AND t.ItemParentItemID = 0
) )
AND c.ItemIsActive = 1 AND c.ItemIsActive = 1
ORDER BY c.ItemSortOrder, c.ItemName ORDER BY c.ItemSortOrder, c.ItemName
", { businessID: businessID }, { datasource: "payfrit" }); ", { businessID: businessID }, { datasource: "payfrit" });
} else {
qTemplateChildren = queryExecute("
SELECT DISTINCT
c.ItemID,
c.ItemParentItemID as ParentItemID,
c.ItemName,
c.ItemPrice,
c.ItemIsCheckedByDefault as IsDefault,
c.ItemSortOrder,
c.ItemRequiresChildSelection as RequiresSelection,
c.ItemMaxNumSelectionReq as MaxSelections
FROM Items c
WHERE c.ItemParentItemID IN (
SELECT DISTINCT t.ItemID
FROM Items t
INNER JOIN ItemTemplateLinks tl ON tl.TemplateItemID = t.ItemID
INNER JOIN Items i ON i.ItemID = tl.ItemID
WHERE i.ItemBusinessID = :businessID
)
AND c.ItemIsActive = 1
ORDER BY c.ItemSortOrder, c.ItemName
", { businessID: businessID }, { datasource: "payfrit" });
}
// Build lookup of children by parent ID (flat list for now) // Build lookup of children by parent ID (flat list for now)
childrenByParent = {}; childrenByParent = {};