Keep deselected inverted defaults in cart with Quantity=0
For inverted groups, when user deselects a default item, keep it in cart with Quantity=0 instead of deleting. This allows cart to display "NO X". Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
f57d249fee
commit
503754e248
1 changed files with 45 additions and 9 deletions
|
|
@ -457,15 +457,51 @@
|
||||||
<cfset attachDefaultChildren(OrderID, qExisting.ID, ItemID)>
|
<cfset attachDefaultChildren(OrderID, qExisting.ID, ItemID)>
|
||||||
<cfset arrayAppend(request.attachDebug, "AFTER attachDefaultChildren call")>
|
<cfset arrayAppend(request.attachDebug, "AFTER attachDefaultChildren call")>
|
||||||
<cfelse>
|
<cfelse>
|
||||||
<cfset queryTimed(
|
<!--- Deselecting: check if this is a default from an inverted group --->
|
||||||
"
|
<!--- If so, keep it with Quantity=0 for "NO X" display; otherwise delete --->
|
||||||
UPDATE OrderLineItems
|
<cfset var isInvertedDefault = false>
|
||||||
SET IsDeleted = b'1'
|
<cfif qItem.recordCount GT 0>
|
||||||
WHERE ID = ?
|
<cfset var qParentItem = queryTimed(
|
||||||
",
|
"SELECT IsInvertedGroup FROM Items WHERE ID = ? LIMIT 1",
|
||||||
[ { value = qExisting.ID, cfsqltype = "cf_sql_integer" } ],
|
[ { value = qItem.ParentItemID, cfsqltype = "cf_sql_integer" } ],
|
||||||
{ datasource = "payfrit" }
|
{ datasource = "payfrit" }
|
||||||
)>
|
)>
|
||||||
|
<cfif qParentItem.recordCount GT 0 AND val(qParentItem.IsInvertedGroup) EQ 1>
|
||||||
|
<!--- Check if item was a default --->
|
||||||
|
<cfset var qItemDefault = queryTimed(
|
||||||
|
"SELECT IsCheckedByDefault FROM Items WHERE ID = ? LIMIT 1",
|
||||||
|
[ { value = ItemID, cfsqltype = "cf_sql_integer" } ],
|
||||||
|
{ datasource = "payfrit" }
|
||||||
|
)>
|
||||||
|
<cfif qItemDefault.recordCount GT 0 AND val(qItemDefault.IsCheckedByDefault) EQ 1>
|
||||||
|
<cfset isInvertedDefault = true>
|
||||||
|
</cfif>
|
||||||
|
</cfif>
|
||||||
|
</cfif>
|
||||||
|
|
||||||
|
<cfif isInvertedDefault>
|
||||||
|
<!--- Keep in cart with Quantity=0 for "NO X" display --->
|
||||||
|
<cfset queryTimed(
|
||||||
|
"
|
||||||
|
UPDATE OrderLineItems
|
||||||
|
SET Quantity = 0, IsDeleted = b'0'
|
||||||
|
WHERE ID = ?
|
||||||
|
",
|
||||||
|
[ { value = qExisting.ID, cfsqltype = "cf_sql_integer" } ],
|
||||||
|
{ datasource = "payfrit" }
|
||||||
|
)>
|
||||||
|
<cfelse>
|
||||||
|
<!--- Normal deselect: mark as deleted --->
|
||||||
|
<cfset queryTimed(
|
||||||
|
"
|
||||||
|
UPDATE OrderLineItems
|
||||||
|
SET IsDeleted = b'1'
|
||||||
|
WHERE ID = ?
|
||||||
|
",
|
||||||
|
[ { value = qExisting.ID, cfsqltype = "cf_sql_integer" } ],
|
||||||
|
{ datasource = "payfrit" }
|
||||||
|
)>
|
||||||
|
</cfif>
|
||||||
</cfif>
|
</cfif>
|
||||||
<cfelse>
|
<cfelse>
|
||||||
<!--- Insert new if selecting, otherwise no-op --->
|
<!--- Insert new if selecting, otherwise no-op --->
|
||||||
|
|
|
||||||
Reference in a new issue