Fix inverted modifier groups auto-adding unchecked defaults

attachDefaultChildren now detects IsInvertedGroup=1 on parent items
and skips auto-adding defaults. The Android client explicitly sends
only the modifiers the user kept checked, so auto-adding was
re-inserting items the user had unchecked (e.g., Mustard).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
John Mizerek 2026-03-11 17:15:25 -07:00
parent a8257b2509
commit 8440888024

View file

@ -49,6 +49,20 @@
</cfif> </cfif>
<cfset arrayAppend(request.attachDebug, "attachDefaultChildren: OrderID=#arguments.OrderID#, ParentLI=#arguments.ParentLineItemID#, ParentItemID=#arguments.ParentItemID#")> <cfset arrayAppend(request.attachDebug, "attachDefaultChildren: OrderID=#arguments.OrderID#, ParentLI=#arguments.ParentLineItemID#, ParentItemID=#arguments.ParentItemID#")>
<!--- Check if this parent is an inverted group — if so, skip auto-adding defaults.
Inverted groups have all children pre-selected by default, but the client
explicitly sends only the ones the user kept checked. Auto-adding would
re-add items the user unchecked. --->
<cfset var qParentInfo = queryTimed(
"SELECT IsInvertedGroup FROM Items WHERE ID = ? LIMIT 1",
[ { value = arguments.ParentItemID, cfsqltype = "cf_sql_integer" } ],
{ datasource = "payfrit" }
)>
<cfif qParentInfo.recordCount GT 0 AND val(qParentInfo.IsInvertedGroup) EQ 1>
<cfset arrayAppend(request.attachDebug, " -> SKIP inverted group ##" & arguments.ParentItemID & " (client sends selections explicitly)")>
<cfreturn>
</cfif>
<!--- Find ALL immediate children (to recurse into groups) ---> <!--- Find ALL immediate children (to recurse into groups) --->
<cfset var qAllKids = queryTimed( <cfset var qAllKids = queryTimed(
" "