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 = []>
|
||||
<cfloop query="qLI">
|
||||
<cfset arrayAppend(rows, {
|
||||
"OrderLineItemID": qLI.OrderLineItemID,
|
||||
"OrderLineItemParentOrderLineItemID": qLI.OrderLineItemParentOrderLineItemID,
|
||||
"OrderLineItemOrderID": qLI.OrderLineItemOrderID,
|
||||
"OrderLineItemItemID": qLI.OrderLineItemItemID,
|
||||
"OrderLineItemStatusID": qLI.OrderLineItemStatusID,
|
||||
"OrderLineItemPrice": qLI.OrderLineItemPrice,
|
||||
"OrderLineItemQuantity": qLI.OrderLineItemQuantity,
|
||||
"OrderLineItemRemark": qLI.OrderLineItemRemark,
|
||||
"OrderLineItemIsDeleted": qLI.OrderLineItemIsDeleted,
|
||||
"OrderLineItemID": val(qLI.OrderLineItemID),
|
||||
"OrderLineItemParentOrderLineItemID": val(qLI.OrderLineItemParentOrderLineItemID),
|
||||
"OrderLineItemOrderID": val(qLI.OrderLineItemOrderID),
|
||||
"OrderLineItemItemID": val(qLI.OrderLineItemItemID),
|
||||
"OrderLineItemStatusID": val(qLI.OrderLineItemStatusID),
|
||||
"OrderLineItemPrice": val(qLI.OrderLineItemPrice),
|
||||
"OrderLineItemQuantity": val(qLI.OrderLineItemQuantity),
|
||||
"OrderLineItemRemark": qLI.OrderLineItemRemark ?: "",
|
||||
"OrderLineItemIsDeleted": val(qLI.OrderLineItemIsDeleted),
|
||||
"OrderLineItemAddedOn": qLI.OrderLineItemAddedOn,
|
||||
"ItemName": qLI.ItemName,
|
||||
"ItemParentItemID": qLI.ItemParentItemID,
|
||||
"ItemParentName": qLI.ItemParentName,
|
||||
"ItemIsCheckedByDefault": qLI.ItemIsCheckedByDefault
|
||||
"ItemName": qLI.ItemName ?: "",
|
||||
"ItemParentItemID": val(qLI.ItemParentItemID),
|
||||
"ItemParentName": qLI.ItemParentName ?: "",
|
||||
"ItemIsCheckedByDefault": val(qLI.ItemIsCheckedByDefault)
|
||||
})>
|
||||
</cfloop>
|
||||
|
||||
|
|
@ -126,24 +126,24 @@
|
|||
"OK": true,
|
||||
"ERROR": "",
|
||||
"ORDER": {
|
||||
"OrderID": qOrder.OrderID,
|
||||
"OrderUUID": qOrder.OrderUUID,
|
||||
"OrderUserID": qOrder.OrderUserID,
|
||||
"OrderBusinessID": qOrder.OrderBusinessID,
|
||||
"OrderBusinessDeliveryMultiplier": qOrder.OrderBusinessDeliveryMultiplier,
|
||||
"OrderTypeID": qOrder.OrderTypeID,
|
||||
"OrderDeliveryFee": qOrder.OrderDeliveryFee,
|
||||
"BusinessDeliveryFee": businessDeliveryFee,
|
||||
"OrderID": val(qOrder.OrderID),
|
||||
"OrderUUID": qOrder.OrderUUID ?: "",
|
||||
"OrderUserID": val(qOrder.OrderUserID),
|
||||
"OrderBusinessID": val(qOrder.OrderBusinessID),
|
||||
"OrderBusinessDeliveryMultiplier": val(qOrder.OrderBusinessDeliveryMultiplier),
|
||||
"OrderTypeID": val(qOrder.OrderTypeID),
|
||||
"OrderDeliveryFee": val(qOrder.OrderDeliveryFee),
|
||||
"BusinessDeliveryFee": val(businessDeliveryFee),
|
||||
"BusinessOrderTypes": businessOrderTypesArray,
|
||||
"OrderStatusID": qOrder.OrderStatusID,
|
||||
"OrderAddressID": qOrder.OrderAddressID,
|
||||
"OrderPaymentID": qOrder.OrderPaymentID,
|
||||
"OrderPaymentStatus": qOrder.OrderPaymentStatus,
|
||||
"OrderRemarks": qOrder.OrderRemarks,
|
||||
"OrderStatusID": val(qOrder.OrderStatusID),
|
||||
"OrderAddressID": val(qOrder.OrderAddressID),
|
||||
"OrderPaymentID": val(qOrder.OrderPaymentID),
|
||||
"OrderPaymentStatus": qOrder.OrderPaymentStatus ?: "",
|
||||
"OrderRemarks": qOrder.OrderRemarks ?: "",
|
||||
"OrderAddedOn": qOrder.OrderAddedOn,
|
||||
"OrderLastEditedOn": qOrder.OrderLastEditedOn,
|
||||
"OrderSubmittedOn": qOrder.OrderSubmittedOn,
|
||||
"OrderServicePointID": qOrder.OrderServicePointID
|
||||
"OrderServicePointID": val(qOrder.OrderServicePointID)
|
||||
},
|
||||
"ORDERLINEITEMS": rows
|
||||
})>
|
||||
|
|
|
|||
|
|
@ -103,14 +103,14 @@ try {
|
|||
// First pass: create all items
|
||||
for (row in qItems) {
|
||||
item = {
|
||||
"LineItemID": row.OrderLineItemID,
|
||||
"ItemID": row.OrderLineItemItemID,
|
||||
"ParentLineItemID": row.OrderLineItemParentOrderLineItemID,
|
||||
"ItemName": row.ItemName,
|
||||
"Quantity": row.OrderLineItemQuantity,
|
||||
"UnitPrice": row.OrderLineItemPrice,
|
||||
"Remarks": row.OrderLineItemRemark,
|
||||
"IsDefault": (row.ItemIsCheckedByDefault == 1),
|
||||
"LineItemID": val(row.OrderLineItemID),
|
||||
"ItemID": val(row.OrderLineItemItemID),
|
||||
"ParentLineItemID": val(row.OrderLineItemParentOrderLineItemID),
|
||||
"ItemName": row.ItemName ?: "",
|
||||
"Quantity": val(row.OrderLineItemQuantity),
|
||||
"UnitPrice": val(row.OrderLineItemPrice),
|
||||
"Remarks": row.OrderLineItemRemark ?: "",
|
||||
"IsDefault": (val(row.ItemIsCheckedByDefault) == 1),
|
||||
"Modifiers": []
|
||||
};
|
||||
itemsById[row.OrderLineItemID] = item;
|
||||
|
|
|
|||
|
|
@ -69,22 +69,22 @@
|
|||
<cfset var businessDeliveryFee = qBusiness.recordCount GT 0 ? qBusiness.BusinessDeliveryFlatFee : 0>
|
||||
|
||||
<cfset out.Order = {
|
||||
"OrderID": qOrder.OrderID,
|
||||
"OrderUUID": qOrder.OrderUUID,
|
||||
"OrderUserID": qOrder.OrderUserID,
|
||||
"OrderBusinessID": qOrder.OrderBusinessID,
|
||||
"OrderBusinessDeliveryMultiplier": qOrder.OrderBusinessDeliveryMultiplier,
|
||||
"OrderTypeID": qOrder.OrderTypeID,
|
||||
"OrderDeliveryFee": qOrder.OrderDeliveryFee,
|
||||
"BusinessDeliveryFee": businessDeliveryFee,
|
||||
"OrderStatusID": qOrder.OrderStatusID,
|
||||
"OrderAddressID": qOrder.OrderAddressID,
|
||||
"OrderPaymentID": qOrder.OrderPaymentID,
|
||||
"OrderRemarks": qOrder.OrderRemarks,
|
||||
"OrderID": val(qOrder.OrderID),
|
||||
"OrderUUID": qOrder.OrderUUID ?: "",
|
||||
"OrderUserID": val(qOrder.OrderUserID),
|
||||
"OrderBusinessID": val(qOrder.OrderBusinessID),
|
||||
"OrderBusinessDeliveryMultiplier": val(qOrder.OrderBusinessDeliveryMultiplier),
|
||||
"OrderTypeID": val(qOrder.OrderTypeID),
|
||||
"OrderDeliveryFee": val(qOrder.OrderDeliveryFee),
|
||||
"BusinessDeliveryFee": val(businessDeliveryFee),
|
||||
"OrderStatusID": val(qOrder.OrderStatusID),
|
||||
"OrderAddressID": val(qOrder.OrderAddressID),
|
||||
"OrderPaymentID": val(qOrder.OrderPaymentID),
|
||||
"OrderRemarks": qOrder.OrderRemarks ?: "",
|
||||
"OrderAddedOn": qOrder.OrderAddedOn,
|
||||
"OrderLastEditedOn": qOrder.OrderLastEditedOn,
|
||||
"OrderSubmittedOn": qOrder.OrderSubmittedOn,
|
||||
"OrderServicePointID": qOrder.OrderServicePointID
|
||||
"OrderServicePointID": val(qOrder.OrderServicePointID)
|
||||
}>
|
||||
|
||||
<cfset var qLI = queryExecute(
|
||||
|
|
@ -117,20 +117,20 @@
|
|||
<cfset var rows = []>
|
||||
<cfloop query="qLI">
|
||||
<cfset arrayAppend(rows, {
|
||||
"OrderLineItemID": qLI.OrderLineItemID,
|
||||
"OrderLineItemParentOrderLineItemID": qLI.OrderLineItemParentOrderLineItemID,
|
||||
"OrderLineItemOrderID": qLI.OrderLineItemOrderID,
|
||||
"OrderLineItemItemID": qLI.OrderLineItemItemID,
|
||||
"OrderLineItemStatusID": qLI.OrderLineItemStatusID,
|
||||
"OrderLineItemPrice": qLI.OrderLineItemPrice,
|
||||
"OrderLineItemQuantity": qLI.OrderLineItemQuantity,
|
||||
"OrderLineItemRemark": qLI.OrderLineItemRemark,
|
||||
"OrderLineItemIsDeleted": qLI.OrderLineItemIsDeleted,
|
||||
"OrderLineItemID": val(qLI.OrderLineItemID),
|
||||
"OrderLineItemParentOrderLineItemID": val(qLI.OrderLineItemParentOrderLineItemID),
|
||||
"OrderLineItemOrderID": val(qLI.OrderLineItemOrderID),
|
||||
"OrderLineItemItemID": val(qLI.OrderLineItemItemID),
|
||||
"OrderLineItemStatusID": val(qLI.OrderLineItemStatusID),
|
||||
"OrderLineItemPrice": val(qLI.OrderLineItemPrice),
|
||||
"OrderLineItemQuantity": val(qLI.OrderLineItemQuantity),
|
||||
"OrderLineItemRemark": qLI.OrderLineItemRemark ?: "",
|
||||
"OrderLineItemIsDeleted": val(qLI.OrderLineItemIsDeleted),
|
||||
"OrderLineItemAddedOn": qLI.OrderLineItemAddedOn,
|
||||
"ItemName": qLI.ItemName,
|
||||
"ItemParentItemID": qLI.ItemParentItemID,
|
||||
"ItemParentName": qLI.ItemParentName,
|
||||
"ItemIsCheckedByDefault": qLI.ItemIsCheckedByDefault
|
||||
"ItemName": qLI.ItemName ?: "",
|
||||
"ItemParentItemID": val(qLI.ItemParentItemID),
|
||||
"ItemParentName": qLI.ItemParentName ?: "",
|
||||
"ItemIsCheckedByDefault": val(qLI.ItemIsCheckedByDefault)
|
||||
})>
|
||||
</cfloop>
|
||||
|
||||
|
|
|
|||
|
|
@ -141,16 +141,16 @@ try {
|
|||
} catch (any de) { completedAt = ""; }
|
||||
|
||||
arrayAppend(orders, {
|
||||
"OrderID": row.OrderID,
|
||||
"OrderID": val(row.OrderID),
|
||||
"OrderUUID": row.OrderUUID ?: "",
|
||||
"BusinessID": row.OrderBusinessID,
|
||||
"BusinessID": val(row.OrderBusinessID),
|
||||
"BusinessName": row.BusinessName ?: "Unknown",
|
||||
"OrderTotal": round(total * 100) / 100,
|
||||
"OrderStatusID": row.OrderStatusID,
|
||||
"OrderTotal": round(val(total) * 100) / 100,
|
||||
"OrderStatusID": val(row.OrderStatusID),
|
||||
"StatusName": statusText,
|
||||
"OrderTypeID": row.OrderTypeID ?: 0,
|
||||
"OrderTypeID": val(row.OrderTypeID),
|
||||
"TypeName": row.OrderTypeName ?: "Unknown",
|
||||
"ItemCount": itemCount,
|
||||
"ItemCount": val(itemCount),
|
||||
"CreatedAt": createdAt,
|
||||
"CompletedAt": completedAt
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue