File: D:/web/circ.itp/woo-from-shopping-admin.asp
<%Option Explicit%>
<!--#include file="woo-to-itp.asp"-->
<%DisableCache%><!DOCTYPE html>
<html>
<head>
<title>Shopping Admin to Woo</title>
</head>
<body>
<h3>Shopping Admin to Woo</h3>
<%
' (SS,4/8/25)
If Not IsWooLiveMode Then
Response.Write "<p><strong>In ""Test mode"", no data written to CIRC Shopping Admin database</strong></p>" & NL
End If
' (SS,15/8/25)
Initialise
SendToWooCommerce
Finalise
' commands for specified order no
' including: set pick list note, set ready for despatch note, message to customer, mark as completed
' commands: picklist, readyfordespatch, messagetocustomer, completed
' picklist id can be specified instead of order no for SWC_PICK_LIST command
Sub SendToWooCommerce
Const SWC_PICK_LIST = "picklist"
Const SWC_READY_FOR_DESPATCH = "readyfordespatch"
Const SWC_MESSAGE_TO_CUSTOMER = "messagetocustomer"
Const SWC_COMPLETED = "completed"
Dim LOrderNo, LPickListID, LCmd
LOrderNo = CleanRequestQueryString("orderno")
LPickListID = CleanRequestQueryString("picklistid")
LCmd = CleanRequestQueryString("cmd")
If LCmd = "" Then
Response.Write "Command not specified"
Exit Sub
ElseIf LCmd <> SWC_PICK_LIST AND LCmd <> SWC_READY_FOR_DESPATCH AND LCmd <> SWC_MESSAGE_TO_CUSTOMER AND LCmd <> SWC_COMPLETED Then
Response.Write "Command invalid"
Exit Sub
ElseIf LOrderNo = "" And LCmd <> SWC_PICK_LIST Then
Response.Write "Order No not specified"
Exit Sub
ElseIf LPickListID = "" And LCmd = SWC_PICK_LIST Then
Response.Write "Pick List ID not specified"
Exit Sub
End If
Response.Write "Order No: " & LOrderNo & BR
Response.Write "Pick List ID: " & LPickListID & BR
Response.Write "Command: " & LCmd & BR
Response.Write BR
Dim LWooCommerceOrderID, LStatus, LReadyForDespatchDate, LMessageToCustomer, LPickListOrderIDs
If LCmd = SWC_PICK_LIST Then
LPickListOrderIDs = WC_GetOrderIDsForPickList(LPickListID)
Response.Write "WooCommerce Order IDs in pick list: " & LPickListOrderIDs & BR
If LPickListOrderIDs = "" Then
Response.Write "No WooCommerce Order IDs in pick list"
Exit Sub
End If
Else
' verify order no, get WooCommerceOrderID, ready for despatch date and message to customer, and status
If Not GetSQL4Values("SELECT WooCommerceOrderID, Status, ReadyForDespatch, MessageToCustomer FROM orders WHERE OrderNo = '" & CleanSQLStr(LOrderNo) & "'", LWooCommerceOrderID, LStatus, LReadyForDespatchDate, LMessageToCustomer) Then
Response.Write "Order No: " & LOrderNo & " doesn't exist" & BR
Exit Sub
End If
Response.Write "WooCommerce Order ID: " & LWooCommerceOrderID & BR
Response.Write "Status: " & LStatus & BR
Response.Write "ReadyForDespatch: " & LReadyForDespatchDate & BR
If NB(LWooCommerceOrderID) = "" Then
Response.Write "WooCommerce Order ID missing for this order"
Exit Sub
End If
If LCmd = SWC_MESSAGE_TO_CUSTOMER Then
LMessageToCustomer = Trim(NB(LMessageToCustomer))
' Response.Write "CustomerMessage: <hr>" & LMessageToCustomer & "<hr>" & BR
LMessageToCustomer = WC_EmailBodyMessageAddTokens(LOrderNo, LMessageToCustomer)
LMessageToCustomer = ConvertNewlinesToHTML(LMessageToCustomer)
Response.Write "CustomerMessage: <hr>" & LMessageToCustomer & "<hr>" & BR
End If
End If
If LCmd = SWC_PICK_LIST Then
' for each order ID in list
Dim LOrderIDArray, i
LOrderIDArray = Split(LPickListOrderIDs, ",")
For i = LBound(LOrderIDArray) To UBound(LOrderIDArray)
LWooCommerceOrderID = Trim(LOrderIDArray(i))
Response.Write "LWooCommerceOrderID " & i & ": " & LWooCommerceOrderID & BR
DoWooCommerceSend LWooCommerceOrderID, WST_NOTE, "Added to pick list: " & LPickListID, ""
Next
ElseIf LCmd = SWC_READY_FOR_DESPATCH Then
If NB(LReadyForDespatchDate) = "" Then
Response.Write "Not yet ready for despatch" & BR
Else
DoWooCommerceSend LWooCommerceOrderID, WST_NOTE, "Ready for despatch: " & LReadyForDespatchDate, ""
End If
ElseIf LCmd = SWC_MESSAGE_TO_CUSTOMER Then
If LMessageToCustomer = "" Then
Response.Write "No message to customer" & BR
Else
DoWooCommerceSend LWooCommerceOrderID, WST_METADATA, LMessageToCustomer, "messageToCustomer"
' DoWooCommerceSend LWooCommerceOrderID, WST_METADATA, "Just testing 2", "messageToCustomer"
End If
ElseIf LCmd = SWC_COMPLETED Then
DoWooCommerceSend LWooCommerceOrderID, WST_STATUS, "completed", ""
End If
End Sub
' (SS,6/1/25) for CIRC, replace new {ORDER_NO} and {DELIVERY_POSTCODE} tokens in courier tracking URL
' (SS,15/8/25) taken from EmailBodyMessageAddTokens in apputils, added {STORE_EMAIL}
Function WC_EmailBodyMessageAddTokens(AOrderNo, AMessage)
Dim LResult
LResult = ReplaceStr(AMessage, "{ORDER_NO}", AOrderNo)
OpenQuery "SELECT OrderNo, Postcode, DeliveryPostcode FROM orders WHERE OrderNo = '" & CleanSQLStr(AOrderNo) & "'"
Dim LDeliveryPostcode
LDeliveryPostcode = NB(GetQueryValue("DeliveryPostcode"))
If LDeliveryPostcode = "" Then LDeliveryPostcode = NB(GetQueryValue("Postcode"))
LResult = ReplaceStr(LResult, "{DELIVERY_POSTCODE}", URLEncode(LDeliveryPostcode)) ' URLEncode converts space to + (not %20)
CloseQuery
LResult = ReplaceStr(LResult, "{STORE_EMAIL}", "sales@castironradiatorcentre.co.uk")
WC_EmailBodyMessageAddTokens = LResult
End Function
' (SS,15/8/25) returns list of WooCommerceOrderID for given pick list ID
Function WC_GetOrderIDsForPickList(APickListID)
Dim LResult
LResult = ""
OpenQuery "SELECT WooCommerceOrderID FROM orders WHERE PickListID = '" & CleanSQLStr(APickListID) & "' AND WooCommerceOrderID IS NOT NULL ORDER BY WooCommerceOrderID"
Do While Not EndOfQuery
LResult = LResult & IIf(LResult = "", "", ",") & GetQueryValue("WooCommerceOrderID")
NextQueryRecord
Loop
CloseQuery
WC_GetOrderIDsForPickList = LResult
End Function
' (SS,15/8/25) get WC order ID for given ITP order no
' !!! might not be required anymore
Function WC_GetWooCommerceOrderID(AOrderNo)
WC_GetWooCommerceOrderID = GetSQLValueAsString("SELECT WooCommerceOrderID FROM orders WHERE OrderNo = '" & CleanSQLStr(AOrderNo) & "'")
End Function
%>
</body>
</html>