Add IsInvertedGroup + RemovedDefaults to task detail API

Works app can now display inverted modifier groups with "NO" prefix
for removed defaults, matching KDS behavior.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
John Mizerek 2026-03-08 20:11:06 -07:00
parent 57d31c0428
commit 588e6ef26d

View file

@ -167,7 +167,8 @@
i.Name AS ItemName,
i.ParentItemID,
i.Price AS ItemPrice,
i.IsCheckedByDefault
i.IsCheckedByDefault,
i.IsInvertedGroup
FROM OrderLineItems oli
INNER JOIN Items i ON i.ID = oli.ItemID
WHERE oli.OrderID = ?
@ -186,10 +187,39 @@
"ItemPrice": qLineItems.LineItemPrice,
"Quantity": qLineItems.Quantity,
"Remark": qLineItems.Remark,
"IsModifier": qLineItems.ParentOrderLineItemID GT 0
"IsModifier": qLineItems.ParentOrderLineItemID GT 0,
"IsCheckedByDefault": qLineItems.IsCheckedByDefault,
"IsInvertedGroup": qLineItems.IsInvertedGroup
})>
</cfloop>
<!--- For inverted modifier groups, compute removed defaults --->
<cfloop array="#result.LineItems#" index="li">
<cfif li.IsInvertedGroup>
<cfset qRemovedDefaults = queryExecute("
SELECT i.Name
FROM Items i
WHERE i.ParentItemID = ?
AND i.IsActive = 1
AND i.IsCheckedByDefault = b'1'
AND i.ID NOT IN (
SELECT oli2.ItemID FROM OrderLineItems oli2
WHERE oli2.OrderID = ? AND oli2.ParentOrderLineItemID = ? AND oli2.IsDeleted = b'0'
)
ORDER BY i.SortOrder
", [
{ value = li.ItemID, cfsqltype = "cf_sql_integer" },
{ value = qTask.OrderID, cfsqltype = "cf_sql_integer" },
{ value = li.LineItemID, cfsqltype = "cf_sql_integer" }
], { datasource = "payfrit" })>
<cfset removedNames = []>
<cfloop query="qRemovedDefaults">
<cfset arrayAppend(removedNames, qRemovedDefaults.Name)>
</cfloop>
<cfset li["RemovedDefaults"] = removedNames>
</cfif>
</cfloop>
<!--- Calculate order total: subtotal + tax + tip + delivery (if delivery) + platform fee --->
<cfset taxAmount = subtotal * val(qTask.TaxRate)>
<cfset tipAmount = val(qTask.TipAmount)>