Using ctAPI to Create Sales Orders
We often get requests to integrate ecommerce or other systems to Dynamic SL’s Order Management module. Basically creating sales orders from shopping carts, CRM’s, Point of Sales, Mobile Apps, etc.
It is pretty easy to create sales orders in SL using Catalina’s API with a minimal amount of work. I am going to focus on the REST version of the API and show how you can create a sales order using Postman. From there, you can apply that to whatever client application you may be developing in.
The first thing that you do is look in Swagger to determine how to use the API. The swagger documentation, for the API, is located:
http://yourservername/ctDynamicsSL/swagger
Where “yourservername” is the server that the Catalina API is installed on.
NOTE: ctDynamicsSL may be located in a different virtual path. Check with your server administrator.
Below you can see an example of the swagger documentation. You will need to enter your API key and password, CpnyID, and SiteID in the top navigation bar if you want to use the swagger tools to test code. In this example, we are just getting the usage information on how to save an order.
Clicking on the Orders resource of the API you can then look at the POST method. This is the method that allows you to save new orders. It also gives you the format of the order object you would pass to the API.
Now you have this information, you now know how to send data to the API. Below is an example of one of the most simplest orders to create. There is very little required. You would replace the values with the values that match what your SL system accommodates.
{
"SOTypeID":"SO",
"ShipViaID":"BEST",
"CustID":"C300",
"ShipToID":"DEFAULT",
"orderItems": [
{
"InvtID":"0RCRANK",
"QtyOrd":1,
"CurySlsPrice":-999876,
"CuryCost":-999876,
"Taxable":1
}
]
}
NOTE: notice the CurySlsPrice and CuryCost. If you put either of those to the secret number of -999876, this will tell the Catalina API to have Dynamics SL calculate the pricing. If you put any other number, your number will be what is saved in the line item as the price.
Here is how you can put it together in a curl code. This gives you the information on how to use the URL (NOTE: you will have to replace yourservername with your actual server) and change the authorization to what your authorization is setup on your server.
curl -X POST \
http://yourservername/ctDynamicsSL/api/orders/sales/order \
-H 'Accept: application/json' \
-H 'Authorization: Basic YOURAUTHORIZATIONHERE' \
-H 'Content-Type: application/json' \
-H 'CpnyID: 0060' \
-H 'SiteID: DEFAULT' \
-H 'cache-control: no-cache' \
-d '{
"SOTypeID":"SO",
"ShipViaID":"BEST",
"CustID":"C300",
"ShipToID":"DEFAULT",
"orderItems": [
{
"InvtID":"0RCRANK",
"QtyOrd":1,
"CurySlsPrice":-999876,
"CuryCost":-999876,
"Taxable":1
}
]
}'
And below, you can see how you can enter it into Postman. NOTE how the API passes back the order object to you once it is created. If there is an error, the order object will be passed back mostly blank with the field errorString as not empty (meaning the error will be stored in the field errorString)