bizId = 27; // Check the template items themselves (IDs from lt_ItemID_TemplateItemID) templateIds = "11267, 11251, 11246, 11224, 11233, 11230, 11240, 11243, 11237, 11227"; qTemplates = queryTimed(" SELECT ID, Name, IsCollapsible, IsActive, ParentItemID, BusinessID FROM Items WHERE ID IN (#templateIds#) ORDER BY Name ", {}, { datasource: "payfrit" }); templates = []; for (row in qTemplates) { arrayAppend(templates, { "ItemID": row.ID, "Name": row.Name, "IsCollapsible": row.IsCollapsible, "IsActive": row.IsActive, "ParentID": row.ParentItemID, "BusinessID": row.BusinessID }); } // Also check what other templates might exist for burgers // Look for items that are in lt_ItemID_TemplateItemID but NOT linked to burgers qMissingTemplates = queryTimed(" SELECT DISTINCT t.ItemID, t.Name, t.IsCollapsible, t.IsActive FROM Items t WHERE t.BusinessID = :bizId AND t.ParentItemID = 0 AND t.ItemID NOT IN ( SELECT i.ID FROM Items i WHERE i.BusinessID = :bizId AND i.CategoryID > 0 ) AND EXISTS (SELECT 1 FROM Items child WHERE child.ParentItemID = t.ItemID) ORDER BY t.Name ", { bizId: bizId }, { datasource: "payfrit" }); potentialTemplates = []; for (row in qMissingTemplates) { arrayAppend(potentialTemplates, { "ItemID": row.ID, "Name": row.Name, "IsCollapsible": row.IsCollapsible, "IsActive": row.IsActive }); } // What templates SHOULD burgers have? Let's see all templates used by ANY item qAllTemplateUsage = queryTimed(" SELECT t.ItemID, t.Name, COUNT(tl.ItemID) as UsageCount FROM lt_ItemID_TemplateItemID tl JOIN Items t ON t.ItemID = tl.TemplateItemID JOIN Items mi ON mi.ID = tl.ItemID AND mi.BusinessID = :bizId GROUP BY t.ItemID, t.Name ORDER BY t.Name ", { bizId: bizId }, { datasource: "payfrit" }); allTemplates = []; for (row in qAllTemplateUsage) { arrayAppend(allTemplates, { "TemplateID": row.ID, "TemplateName": row.Name, "UsageCount": row.UsageCount }); } writeOutput(serializeJSON({ "OK": true, "TemplatesInLinks": templates, "PotentialTemplates": potentialTemplates, "AllTemplateUsage": allTemplates }));