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,13 +90,6 @@
|
|||
<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
|
||||
", [ { value = OrderID, cfsqltype = "cf_sql_integer" } ], { datasource = "payfrit" })>
|
||||
|
||||
<cfif qExisting.recordCount EQ 0>
|
||||
<!--- Get order type --->
|
||||
<cfset qOrderDetails = queryExecute("
|
||||
SELECT o.OrderTypeID
|
||||
|
|
@ -106,7 +99,39 @@
|
|||
|
||||
<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>
|
||||
|
||||
<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("
|
||||
|
|
|
|||
Reference in a new issue