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:
parent
7caf4d60b0
commit
2019b9ff43
1 changed files with 43 additions and 16 deletions
|
|
@ -90,23 +90,48 @@
|
||||||
<cfset cashTaskCreated = false>
|
<cfset cashTaskCreated = false>
|
||||||
<cfif NewStatusID EQ 3 AND oldStatusID NEQ 3>
|
<cfif NewStatusID EQ 3 AND oldStatusID NEQ 3>
|
||||||
<cftry>
|
<cftry>
|
||||||
<!--- Check if delivery/pickup task already exists for this order (TaskTypeID=1) to prevent duplicates --->
|
<!--- Get order type --->
|
||||||
<!--- Note: Other tasks like Cash or Chat may already exist for this order, so we only check for TaskTypeID=1 --->
|
<cfset qOrderDetails = queryExecute("
|
||||||
<cfset qExisting = queryExecute("
|
SELECT o.OrderTypeID
|
||||||
SELECT ID FROM Tasks WHERE OrderID = ? AND TaskTypeID = 1 LIMIT 1
|
FROM Orders o
|
||||||
|
WHERE o.ID = ?
|
||||||
", [ { value = OrderID, cfsqltype = "cf_sql_integer" } ], { datasource = "payfrit" })>
|
", [ { value = OrderID, cfsqltype = "cf_sql_integer" } ], { datasource = "payfrit" })>
|
||||||
|
|
||||||
<cfif qExisting.recordCount EQ 0>
|
<cfset orderTypeID = qOrderDetails.recordCount GT 0 ? val(qOrderDetails.OrderTypeID) : 1>
|
||||||
<!--- 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>
|
<!--- 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>
|
<cfif orderTypeID EQ 1>
|
||||||
<!--- Dine-in: Server delivers to service point --->
|
<!--- Dine-in: Server delivers to service point --->
|
||||||
<cfset tableName = len(qOrder.Name) ? qOrder.Name : "Table">
|
<cfset tableName = len(qOrder.Name) ? qOrder.Name : "Table">
|
||||||
|
|
@ -114,11 +139,11 @@
|
||||||
<cfset taskCategoryID = 3>
|
<cfset taskCategoryID = 3>
|
||||||
<cfelseif orderTypeID EQ 2>
|
<cfelseif orderTypeID EQ 2>
|
||||||
<!--- Takeaway: Expo task to notify customer order is ready --->
|
<!--- 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 --->
|
<cfset taskCategoryID = 4> <!--- Expo/Pickup category --->
|
||||||
<cfelseif orderTypeID EQ 3>
|
<cfelseif orderTypeID EQ 3>
|
||||||
<!--- Delivery: Hand off to delivery driver --->
|
<!--- 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 --->
|
<cfset taskCategoryID = 5> <!--- Delivery category --->
|
||||||
<cfelse>
|
<cfelse>
|
||||||
<cfset taskTitle = "">
|
<cfset taskTitle = "">
|
||||||
|
|
@ -137,7 +162,7 @@
|
||||||
) VALUES (
|
) VALUES (
|
||||||
?,
|
?,
|
||||||
?,
|
?,
|
||||||
1,
|
?,
|
||||||
?,
|
?,
|
||||||
?,
|
?,
|
||||||
0,
|
0,
|
||||||
|
|
@ -146,11 +171,13 @@
|
||||||
", [
|
", [
|
||||||
{ value = qOrder.BusinessID, cfsqltype = "cf_sql_integer" },
|
{ value = qOrder.BusinessID, cfsqltype = "cf_sql_integer" },
|
||||||
{ value = OrderID, cfsqltype = "cf_sql_integer" },
|
{ value = OrderID, cfsqltype = "cf_sql_integer" },
|
||||||
|
{ value = taskTypeID, cfsqltype = "cf_sql_integer" },
|
||||||
{ value = taskCategoryID, cfsqltype = "cf_sql_integer" },
|
{ value = taskCategoryID, cfsqltype = "cf_sql_integer" },
|
||||||
{ value = taskTitle, cfsqltype = "cf_sql_varchar" }
|
{ value = taskTitle, cfsqltype = "cf_sql_varchar" }
|
||||||
], { datasource = "payfrit" })>
|
], { datasource = "payfrit" })>
|
||||||
<cfset taskCreated = true>
|
<cfset taskCreated = true>
|
||||||
</cfif>
|
</cfif>
|
||||||
|
</cfif>
|
||||||
|
|
||||||
<!--- Check for pending cash payment and create "Pay With Cash" task --->
|
<!--- Check for pending cash payment and create "Pay With Cash" task --->
|
||||||
<cfset qCashPayment = queryExecute("
|
<cfset qCashPayment = queryExecute("
|
||||||
|
|
|
||||||
Reference in a new issue