Add TaxRate to cart and menu API responses

- getCart.cfm: Include TaxRate from Businesses table
- getOrCreateCart.cfm: Include TaxRate from Businesses table
- items.cfm: Include TaxRate in menu response for cart calculation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
John Mizerek 2026-02-07 14:31:26 -08:00
parent 930394b421
commit 30c175bafe
3 changed files with 18 additions and 7 deletions

View file

@ -529,16 +529,22 @@
</cfloop> </cfloop>
</cfif> </cfif>
<!--- Get brand color for this business ---> <!--- Get brand color and tax rate for this business --->
<cfset brandColor = ""> <cfset brandColor = "">
<cfset businessTaxRate = 0>
<cftry> <cftry>
<cfset qBrand = queryTimed( <cfset qBrand = queryTimed(
"SELECT BrandColor AS BusinessBrandColor FROM Businesses WHERE ID = ?", "SELECT BrandColor AS BusinessBrandColor, TaxRate FROM Businesses WHERE ID = ?",
[ { value = BusinessID, cfsqltype = "cf_sql_integer" } ], [ { value = BusinessID, cfsqltype = "cf_sql_integer" } ],
{ datasource = "payfrit" } { datasource = "payfrit" }
)> )>
<cfif qBrand.recordCount GT 0 AND len(trim(qBrand.BusinessBrandColor))> <cfif qBrand.recordCount GT 0>
<cfset brandColor = left(qBrand.BusinessBrandColor, 1) EQ chr(35) ? qBrand.BusinessBrandColor : chr(35) & qBrand.BusinessBrandColor> <cfif len(trim(qBrand.BusinessBrandColor))>
<cfset brandColor = left(qBrand.BusinessBrandColor, 1) EQ chr(35) ? qBrand.BusinessBrandColor : chr(35) & qBrand.BusinessBrandColor>
</cfif>
<cfif isNumeric(qBrand.TaxRate)>
<cfset businessTaxRate = qBrand.TaxRate>
</cfif>
</cfif> </cfif>
<cfcatch> <cfcatch>
<!--- Column may not exist yet, ignore ---> <!--- Column may not exist yet, ignore --->
@ -552,6 +558,7 @@
"COUNT": arrayLen(rows), "COUNT": arrayLen(rows),
"SCHEMA": newSchemaActive ? "unified" : "legacy", "SCHEMA": newSchemaActive ? "unified" : "legacy",
"BRANDCOLOR": brandColor, "BRANDCOLOR": brandColor,
"TAXRATE": val(businessTaxRate),
"Menus": menuList, "Menus": menuList,
"SelectedMenuID": requestedMenuID "SelectedMenuID": requestedMenuID
})> })>

View file

@ -67,11 +67,12 @@
<!--- Get business info for display in cart ---> <!--- Get business info for display in cart --->
<cfset qBusiness = queryTimed( <cfset qBusiness = queryTimed(
"SELECT DeliveryFlatFee, OrderTypes FROM Businesses WHERE ID = ? LIMIT 1", "SELECT DeliveryFlatFee, OrderTypes, TaxRate FROM Businesses WHERE ID = ? LIMIT 1",
[ { value = qOrder.BusinessID, cfsqltype = "cf_sql_integer" } ], [ { value = qOrder.BusinessID, cfsqltype = "cf_sql_integer" } ],
{ datasource = "payfrit" } { datasource = "payfrit" }
)> )>
<cfset businessDeliveryFee = qBusiness.recordCount GT 0 ? qBusiness.DeliveryFlatFee : 0> <cfset businessDeliveryFee = qBusiness.recordCount GT 0 ? qBusiness.DeliveryFlatFee : 0>
<cfset businessTaxRate = qBusiness.recordCount GT 0 AND isNumeric(qBusiness.TaxRate) ? qBusiness.TaxRate : 0>
<cfset businessOrderTypes = qBusiness.recordCount GT 0 AND len(trim(qBusiness.OrderTypes)) ? qBusiness.OrderTypes : "1,2,3"> <cfset businessOrderTypes = qBusiness.recordCount GT 0 AND len(trim(qBusiness.OrderTypes)) ? qBusiness.OrderTypes : "1,2,3">
<cfset businessOrderTypesArray = listToArray(businessOrderTypes, ",")> <cfset businessOrderTypesArray = listToArray(businessOrderTypes, ",")>
@ -134,6 +135,7 @@
"OrderTypeID": val(qOrder.OrderTypeID), "OrderTypeID": val(qOrder.OrderTypeID),
"DeliveryFee": val(qOrder.DeliveryFee), "DeliveryFee": val(qOrder.DeliveryFee),
"BusinessDeliveryFee": val(businessDeliveryFee), "BusinessDeliveryFee": val(businessDeliveryFee),
"TaxRate": val(businessTaxRate),
"OrderTypes": businessOrderTypesArray, "OrderTypes": businessOrderTypesArray,
"StatusID": val(qOrder.StatusID), "StatusID": val(qOrder.StatusID),
"AddressID": val(qOrder.AddressID), "AddressID": val(qOrder.AddressID),

View file

@ -64,13 +64,14 @@
<cfreturn { "OK": false, "ERROR": "not_found", "MESSAGE": "Order not found", "DETAIL": "" }> <cfreturn { "OK": false, "ERROR": "not_found", "MESSAGE": "Order not found", "DETAIL": "" }>
</cfif> </cfif>
<!--- Get business delivery fee for display in cart ---> <!--- Get business delivery fee and tax rate for display in cart --->
<cfset var qBusiness = queryTimed( <cfset var qBusiness = queryTimed(
"SELECT DeliveryFlatFee FROM Businesses WHERE ID = ? LIMIT 1", "SELECT DeliveryFlatFee, TaxRate FROM Businesses WHERE ID = ? LIMIT 1",
[ { value = qOrder.BusinessID, cfsqltype = "cf_sql_integer" } ], [ { value = qOrder.BusinessID, cfsqltype = "cf_sql_integer" } ],
{ datasource = "payfrit" } { datasource = "payfrit" }
)> )>
<cfset var businessDeliveryFee = qBusiness.recordCount GT 0 ? qBusiness.DeliveryFlatFee : 0> <cfset var businessDeliveryFee = qBusiness.recordCount GT 0 ? qBusiness.DeliveryFlatFee : 0>
<cfset var businessTaxRate = qBusiness.recordCount GT 0 AND isNumeric(qBusiness.TaxRate) ? qBusiness.TaxRate : 0>
<cfset out.Order = { <cfset out.Order = {
"OrderID": val(qOrder.ID), "OrderID": val(qOrder.ID),
@ -81,6 +82,7 @@
"OrderTypeID": val(qOrder.OrderTypeID), "OrderTypeID": val(qOrder.OrderTypeID),
"DeliveryFee": val(qOrder.DeliveryFee), "DeliveryFee": val(qOrder.DeliveryFee),
"BusinessDeliveryFee": val(businessDeliveryFee), "BusinessDeliveryFee": val(businessDeliveryFee),
"TaxRate": val(businessTaxRate),
"StatusID": val(qOrder.StatusID), "StatusID": val(qOrder.StatusID),
"AddressID": val(qOrder.AddressID), "AddressID": val(qOrder.AddressID),
"PaymentID": val(qOrder.PaymentID), "PaymentID": val(qOrder.PaymentID),