Fix null/empty value handling in order APIs
Wrap numeric fields with val() to prevent "can't cast empty string to number" errors when database values are null or empty strings. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
5f3f5a7345
commit
6727f42194
4 changed files with 67 additions and 67 deletions
|
|
@ -105,20 +105,20 @@
|
||||||
<cfset rows = []>
|
<cfset rows = []>
|
||||||
<cfloop query="qLI">
|
<cfloop query="qLI">
|
||||||
<cfset arrayAppend(rows, {
|
<cfset arrayAppend(rows, {
|
||||||
"OrderLineItemID": qLI.OrderLineItemID,
|
"OrderLineItemID": val(qLI.OrderLineItemID),
|
||||||
"OrderLineItemParentOrderLineItemID": qLI.OrderLineItemParentOrderLineItemID,
|
"OrderLineItemParentOrderLineItemID": val(qLI.OrderLineItemParentOrderLineItemID),
|
||||||
"OrderLineItemOrderID": qLI.OrderLineItemOrderID,
|
"OrderLineItemOrderID": val(qLI.OrderLineItemOrderID),
|
||||||
"OrderLineItemItemID": qLI.OrderLineItemItemID,
|
"OrderLineItemItemID": val(qLI.OrderLineItemItemID),
|
||||||
"OrderLineItemStatusID": qLI.OrderLineItemStatusID,
|
"OrderLineItemStatusID": val(qLI.OrderLineItemStatusID),
|
||||||
"OrderLineItemPrice": qLI.OrderLineItemPrice,
|
"OrderLineItemPrice": val(qLI.OrderLineItemPrice),
|
||||||
"OrderLineItemQuantity": qLI.OrderLineItemQuantity,
|
"OrderLineItemQuantity": val(qLI.OrderLineItemQuantity),
|
||||||
"OrderLineItemRemark": qLI.OrderLineItemRemark,
|
"OrderLineItemRemark": qLI.OrderLineItemRemark ?: "",
|
||||||
"OrderLineItemIsDeleted": qLI.OrderLineItemIsDeleted,
|
"OrderLineItemIsDeleted": val(qLI.OrderLineItemIsDeleted),
|
||||||
"OrderLineItemAddedOn": qLI.OrderLineItemAddedOn,
|
"OrderLineItemAddedOn": qLI.OrderLineItemAddedOn,
|
||||||
"ItemName": qLI.ItemName,
|
"ItemName": qLI.ItemName ?: "",
|
||||||
"ItemParentItemID": qLI.ItemParentItemID,
|
"ItemParentItemID": val(qLI.ItemParentItemID),
|
||||||
"ItemParentName": qLI.ItemParentName,
|
"ItemParentName": qLI.ItemParentName ?: "",
|
||||||
"ItemIsCheckedByDefault": qLI.ItemIsCheckedByDefault
|
"ItemIsCheckedByDefault": val(qLI.ItemIsCheckedByDefault)
|
||||||
})>
|
})>
|
||||||
</cfloop>
|
</cfloop>
|
||||||
|
|
||||||
|
|
@ -126,24 +126,24 @@
|
||||||
"OK": true,
|
"OK": true,
|
||||||
"ERROR": "",
|
"ERROR": "",
|
||||||
"ORDER": {
|
"ORDER": {
|
||||||
"OrderID": qOrder.OrderID,
|
"OrderID": val(qOrder.OrderID),
|
||||||
"OrderUUID": qOrder.OrderUUID,
|
"OrderUUID": qOrder.OrderUUID ?: "",
|
||||||
"OrderUserID": qOrder.OrderUserID,
|
"OrderUserID": val(qOrder.OrderUserID),
|
||||||
"OrderBusinessID": qOrder.OrderBusinessID,
|
"OrderBusinessID": val(qOrder.OrderBusinessID),
|
||||||
"OrderBusinessDeliveryMultiplier": qOrder.OrderBusinessDeliveryMultiplier,
|
"OrderBusinessDeliveryMultiplier": val(qOrder.OrderBusinessDeliveryMultiplier),
|
||||||
"OrderTypeID": qOrder.OrderTypeID,
|
"OrderTypeID": val(qOrder.OrderTypeID),
|
||||||
"OrderDeliveryFee": qOrder.OrderDeliveryFee,
|
"OrderDeliveryFee": val(qOrder.OrderDeliveryFee),
|
||||||
"BusinessDeliveryFee": businessDeliveryFee,
|
"BusinessDeliveryFee": val(businessDeliveryFee),
|
||||||
"BusinessOrderTypes": businessOrderTypesArray,
|
"BusinessOrderTypes": businessOrderTypesArray,
|
||||||
"OrderStatusID": qOrder.OrderStatusID,
|
"OrderStatusID": val(qOrder.OrderStatusID),
|
||||||
"OrderAddressID": qOrder.OrderAddressID,
|
"OrderAddressID": val(qOrder.OrderAddressID),
|
||||||
"OrderPaymentID": qOrder.OrderPaymentID,
|
"OrderPaymentID": val(qOrder.OrderPaymentID),
|
||||||
"OrderPaymentStatus": qOrder.OrderPaymentStatus,
|
"OrderPaymentStatus": qOrder.OrderPaymentStatus ?: "",
|
||||||
"OrderRemarks": qOrder.OrderRemarks,
|
"OrderRemarks": qOrder.OrderRemarks ?: "",
|
||||||
"OrderAddedOn": qOrder.OrderAddedOn,
|
"OrderAddedOn": qOrder.OrderAddedOn,
|
||||||
"OrderLastEditedOn": qOrder.OrderLastEditedOn,
|
"OrderLastEditedOn": qOrder.OrderLastEditedOn,
|
||||||
"OrderSubmittedOn": qOrder.OrderSubmittedOn,
|
"OrderSubmittedOn": qOrder.OrderSubmittedOn,
|
||||||
"OrderServicePointID": qOrder.OrderServicePointID
|
"OrderServicePointID": val(qOrder.OrderServicePointID)
|
||||||
},
|
},
|
||||||
"ORDERLINEITEMS": rows
|
"ORDERLINEITEMS": rows
|
||||||
})>
|
})>
|
||||||
|
|
|
||||||
|
|
@ -103,14 +103,14 @@ try {
|
||||||
// First pass: create all items
|
// First pass: create all items
|
||||||
for (row in qItems) {
|
for (row in qItems) {
|
||||||
item = {
|
item = {
|
||||||
"LineItemID": row.OrderLineItemID,
|
"LineItemID": val(row.OrderLineItemID),
|
||||||
"ItemID": row.OrderLineItemItemID,
|
"ItemID": val(row.OrderLineItemItemID),
|
||||||
"ParentLineItemID": row.OrderLineItemParentOrderLineItemID,
|
"ParentLineItemID": val(row.OrderLineItemParentOrderLineItemID),
|
||||||
"ItemName": row.ItemName,
|
"ItemName": row.ItemName ?: "",
|
||||||
"Quantity": row.OrderLineItemQuantity,
|
"Quantity": val(row.OrderLineItemQuantity),
|
||||||
"UnitPrice": row.OrderLineItemPrice,
|
"UnitPrice": val(row.OrderLineItemPrice),
|
||||||
"Remarks": row.OrderLineItemRemark,
|
"Remarks": row.OrderLineItemRemark ?: "",
|
||||||
"IsDefault": (row.ItemIsCheckedByDefault == 1),
|
"IsDefault": (val(row.ItemIsCheckedByDefault) == 1),
|
||||||
"Modifiers": []
|
"Modifiers": []
|
||||||
};
|
};
|
||||||
itemsById[row.OrderLineItemID] = item;
|
itemsById[row.OrderLineItemID] = item;
|
||||||
|
|
|
||||||
|
|
@ -69,22 +69,22 @@
|
||||||
<cfset var businessDeliveryFee = qBusiness.recordCount GT 0 ? qBusiness.BusinessDeliveryFlatFee : 0>
|
<cfset var businessDeliveryFee = qBusiness.recordCount GT 0 ? qBusiness.BusinessDeliveryFlatFee : 0>
|
||||||
|
|
||||||
<cfset out.Order = {
|
<cfset out.Order = {
|
||||||
"OrderID": qOrder.OrderID,
|
"OrderID": val(qOrder.OrderID),
|
||||||
"OrderUUID": qOrder.OrderUUID,
|
"OrderUUID": qOrder.OrderUUID ?: "",
|
||||||
"OrderUserID": qOrder.OrderUserID,
|
"OrderUserID": val(qOrder.OrderUserID),
|
||||||
"OrderBusinessID": qOrder.OrderBusinessID,
|
"OrderBusinessID": val(qOrder.OrderBusinessID),
|
||||||
"OrderBusinessDeliveryMultiplier": qOrder.OrderBusinessDeliveryMultiplier,
|
"OrderBusinessDeliveryMultiplier": val(qOrder.OrderBusinessDeliveryMultiplier),
|
||||||
"OrderTypeID": qOrder.OrderTypeID,
|
"OrderTypeID": val(qOrder.OrderTypeID),
|
||||||
"OrderDeliveryFee": qOrder.OrderDeliveryFee,
|
"OrderDeliveryFee": val(qOrder.OrderDeliveryFee),
|
||||||
"BusinessDeliveryFee": businessDeliveryFee,
|
"BusinessDeliveryFee": val(businessDeliveryFee),
|
||||||
"OrderStatusID": qOrder.OrderStatusID,
|
"OrderStatusID": val(qOrder.OrderStatusID),
|
||||||
"OrderAddressID": qOrder.OrderAddressID,
|
"OrderAddressID": val(qOrder.OrderAddressID),
|
||||||
"OrderPaymentID": qOrder.OrderPaymentID,
|
"OrderPaymentID": val(qOrder.OrderPaymentID),
|
||||||
"OrderRemarks": qOrder.OrderRemarks,
|
"OrderRemarks": qOrder.OrderRemarks ?: "",
|
||||||
"OrderAddedOn": qOrder.OrderAddedOn,
|
"OrderAddedOn": qOrder.OrderAddedOn,
|
||||||
"OrderLastEditedOn": qOrder.OrderLastEditedOn,
|
"OrderLastEditedOn": qOrder.OrderLastEditedOn,
|
||||||
"OrderSubmittedOn": qOrder.OrderSubmittedOn,
|
"OrderSubmittedOn": qOrder.OrderSubmittedOn,
|
||||||
"OrderServicePointID": qOrder.OrderServicePointID
|
"OrderServicePointID": val(qOrder.OrderServicePointID)
|
||||||
}>
|
}>
|
||||||
|
|
||||||
<cfset var qLI = queryExecute(
|
<cfset var qLI = queryExecute(
|
||||||
|
|
@ -117,20 +117,20 @@
|
||||||
<cfset var rows = []>
|
<cfset var rows = []>
|
||||||
<cfloop query="qLI">
|
<cfloop query="qLI">
|
||||||
<cfset arrayAppend(rows, {
|
<cfset arrayAppend(rows, {
|
||||||
"OrderLineItemID": qLI.OrderLineItemID,
|
"OrderLineItemID": val(qLI.OrderLineItemID),
|
||||||
"OrderLineItemParentOrderLineItemID": qLI.OrderLineItemParentOrderLineItemID,
|
"OrderLineItemParentOrderLineItemID": val(qLI.OrderLineItemParentOrderLineItemID),
|
||||||
"OrderLineItemOrderID": qLI.OrderLineItemOrderID,
|
"OrderLineItemOrderID": val(qLI.OrderLineItemOrderID),
|
||||||
"OrderLineItemItemID": qLI.OrderLineItemItemID,
|
"OrderLineItemItemID": val(qLI.OrderLineItemItemID),
|
||||||
"OrderLineItemStatusID": qLI.OrderLineItemStatusID,
|
"OrderLineItemStatusID": val(qLI.OrderLineItemStatusID),
|
||||||
"OrderLineItemPrice": qLI.OrderLineItemPrice,
|
"OrderLineItemPrice": val(qLI.OrderLineItemPrice),
|
||||||
"OrderLineItemQuantity": qLI.OrderLineItemQuantity,
|
"OrderLineItemQuantity": val(qLI.OrderLineItemQuantity),
|
||||||
"OrderLineItemRemark": qLI.OrderLineItemRemark,
|
"OrderLineItemRemark": qLI.OrderLineItemRemark ?: "",
|
||||||
"OrderLineItemIsDeleted": qLI.OrderLineItemIsDeleted,
|
"OrderLineItemIsDeleted": val(qLI.OrderLineItemIsDeleted),
|
||||||
"OrderLineItemAddedOn": qLI.OrderLineItemAddedOn,
|
"OrderLineItemAddedOn": qLI.OrderLineItemAddedOn,
|
||||||
"ItemName": qLI.ItemName,
|
"ItemName": qLI.ItemName ?: "",
|
||||||
"ItemParentItemID": qLI.ItemParentItemID,
|
"ItemParentItemID": val(qLI.ItemParentItemID),
|
||||||
"ItemParentName": qLI.ItemParentName,
|
"ItemParentName": qLI.ItemParentName ?: "",
|
||||||
"ItemIsCheckedByDefault": qLI.ItemIsCheckedByDefault
|
"ItemIsCheckedByDefault": val(qLI.ItemIsCheckedByDefault)
|
||||||
})>
|
})>
|
||||||
</cfloop>
|
</cfloop>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -141,16 +141,16 @@ try {
|
||||||
} catch (any de) { completedAt = ""; }
|
} catch (any de) { completedAt = ""; }
|
||||||
|
|
||||||
arrayAppend(orders, {
|
arrayAppend(orders, {
|
||||||
"OrderID": row.OrderID,
|
"OrderID": val(row.OrderID),
|
||||||
"OrderUUID": row.OrderUUID ?: "",
|
"OrderUUID": row.OrderUUID ?: "",
|
||||||
"BusinessID": row.OrderBusinessID,
|
"BusinessID": val(row.OrderBusinessID),
|
||||||
"BusinessName": row.BusinessName ?: "Unknown",
|
"BusinessName": row.BusinessName ?: "Unknown",
|
||||||
"OrderTotal": round(total * 100) / 100,
|
"OrderTotal": round(val(total) * 100) / 100,
|
||||||
"OrderStatusID": row.OrderStatusID,
|
"OrderStatusID": val(row.OrderStatusID),
|
||||||
"StatusName": statusText,
|
"StatusName": statusText,
|
||||||
"OrderTypeID": row.OrderTypeID ?: 0,
|
"OrderTypeID": val(row.OrderTypeID),
|
||||||
"TypeName": row.OrderTypeName ?: "Unknown",
|
"TypeName": row.OrderTypeName ?: "Unknown",
|
||||||
"ItemCount": itemCount,
|
"ItemCount": val(itemCount),
|
||||||
"CreatedAt": createdAt,
|
"CreatedAt": createdAt,
|
||||||
"CompletedAt": completedAt
|
"CompletedAt": completedAt
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue