Use proper task types for delivery/pickup tasks

- Looks up task type by name for the business instead of hardcoding ID
- Dine-in: 'Deliver to Table'
- Takeaway: 'Order Ready for Pickup'
- Delivery: 'Deliver to Address'

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
John Mizerek 2026-02-16 19:29:47 -08:00
parent 7caf4d60b0
commit 2019b9ff43

View file

@ -90,23 +90,48 @@
<cfset cashTaskCreated = false>
<cfif NewStatusID EQ 3 AND oldStatusID NEQ 3>
<cftry>
<!--- Check if delivery/pickup task already exists for this order (TaskTypeID=1) to prevent duplicates --->
<!--- Note: Other tasks like Cash or Chat may already exist for this order, so we only check for TaskTypeID=1 --->
<cfset qExisting = queryExecute("
SELECT ID FROM Tasks WHERE OrderID = ? AND TaskTypeID = 1 LIMIT 1
<!--- Get order type --->
<cfset qOrderDetails = queryExecute("
SELECT o.OrderTypeID
FROM Orders o
WHERE o.ID = ?
", [ { value = OrderID, cfsqltype = "cf_sql_integer" } ], { datasource = "payfrit" })>
<cfif qExisting.recordCount EQ 0>
<!--- Get order type --->
<cfset qOrderDetails = queryExecute("
SELECT o.OrderTypeID
FROM Orders o
WHERE o.ID = ?
", [ { value = OrderID, cfsqltype = "cf_sql_integer" } ], { datasource = "payfrit" })>
<cfset orderTypeID = qOrderDetails.recordCount GT 0 ? val(qOrderDetails.OrderTypeID) : 1>
<cfset orderTypeID = qOrderDetails.recordCount GT 0 ? val(qOrderDetails.OrderTypeID) : 1>
<!--- Look up task type for this business based on order type --->
<!--- OrderTypeID: 1=dine-in, 2=takeaway, 3=delivery --->
<cfif orderTypeID EQ 1>
<cfset taskTypeName = "Deliver to Table">
<cfelseif orderTypeID EQ 2>
<cfset taskTypeName = "Order Ready for Pickup">
<cfelseif orderTypeID EQ 3>
<cfset taskTypeName = "Deliver to Address">
<cfelse>
<cfset taskTypeName = "">
</cfif>
<!--- OrderTypeID: 1=dine-in, 2=takeaway, 3=delivery --->
<cfset taskTypeID = 0>
<cfif len(taskTypeName)>
<cfset qTaskType = queryExecute("
SELECT ID FROM tt_TaskTypes WHERE BusinessID = ? AND Name = ? LIMIT 1
", [
{ value = qOrder.BusinessID, cfsqltype = "cf_sql_integer" },
{ value = taskTypeName, cfsqltype = "cf_sql_varchar" }
], { datasource = "payfrit" })>
<cfset taskTypeID = qTaskType.recordCount GT 0 ? qTaskType.ID : 0>
</cfif>
<!--- Check if this type of task already exists for this order to prevent duplicates --->
<cfset qExisting = queryExecute("
SELECT ID FROM Tasks WHERE OrderID = ? AND TaskTypeID = ? LIMIT 1
", [
{ value = OrderID, cfsqltype = "cf_sql_integer" },
{ value = taskTypeID, cfsqltype = "cf_sql_integer" }
], { datasource = "payfrit" })>
<cfif qExisting.recordCount EQ 0 AND taskTypeID GT 0>
<!--- Build task title based on order type --->
<cfif orderTypeID EQ 1>
<!--- Dine-in: Server delivers to service point --->
<cfset tableName = len(qOrder.Name) ? qOrder.Name : "Table">
@ -114,11 +139,11 @@
<cfset taskCategoryID = 3>
<cfelseif orderTypeID EQ 2>
<!--- Takeaway: Expo task to notify customer order is ready --->
<cfset taskTitle = "Order ###OrderID# Ready for Pickup - Notify Customer">
<cfset taskTitle = "Order ###OrderID# Ready for Pickup">
<cfset taskCategoryID = 4> <!--- Expo/Pickup category --->
<cfelseif orderTypeID EQ 3>
<!--- Delivery: Hand off to delivery driver --->
<cfset taskTitle = "Order ###OrderID# Ready for Delivery Driver">
<cfset taskTitle = "Deliver Order ###OrderID# to Address">
<cfset taskCategoryID = 5> <!--- Delivery category --->
<cfelse>
<cfset taskTitle = "">
@ -137,7 +162,7 @@
) VALUES (
?,
?,
1,
?,
?,
?,
0,
@ -146,11 +171,13 @@
", [
{ value = qOrder.BusinessID, cfsqltype = "cf_sql_integer" },
{ value = OrderID, cfsqltype = "cf_sql_integer" },
{ value = taskTypeID, cfsqltype = "cf_sql_integer" },
{ value = taskCategoryID, cfsqltype = "cf_sql_integer" },
{ value = taskTitle, cfsqltype = "cf_sql_varchar" }
], { datasource = "payfrit" })>
<cfset taskCreated = true>
</cfif>
</cfif>
<!--- Check for pending cash payment and create "Pay With Cash" task --->
<cfset qCashPayment = queryExecute("