If you are like me, you spend a lot of time in Microsoft SQL Server. Often, a trigger can cause you a lot of grief. Whether it is a recursive trigger that goes into an endless loop. Or a trigger that is updating data in the recordset that you are trying to save (causing problems in your client code).
Here is a quick way to get a list of all triggers in a particular DB
sysobjects.name AS trigger_name
,USER_NAME(sysobjects.uid) AS trigger_owner
,s.name AS table_schema
,OBJECT_NAME(parent_obj) AS table_name
,OBJECTPROPERTY( id, 'ExecIsUpdateTrigger') AS isupdate
,OBJECTPROPERTY( id, 'ExecIsDeleteTrigger') AS isdelete
,OBJECTPROPERTY( id, 'ExecIsInsertTrigger') AS isinsert
,OBJECTPROPERTY( id, 'ExecIsAfterTrigger') AS isafter
,OBJECTPROPERTY( id, 'ExecIsInsteadOfTrigger') AS isinsteadof
,OBJECTPROPERTY(id, 'ExecIsTriggerDisabled') AS [disabled]
FROM sysobjects WITH(NOLOCK)
INNER JOIN sys.tables t WITH(NOLOCK)
ON sysobjects.parent_obj = t.object_id
INNER JOIN sys.schemas s WITH(NOLOCK)
ON t.schema_id = s.schema_id
WHERE sysobjects.type = 'TR'
You will get a result like this that will list out the triggers and which tables they are tied to.
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:
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.
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.
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)
Here is an example of how you can create a NEW shipto address, using POST, for a customer (NOTE: I am doing a post and not passing a ShipToId in the URL.)
Also NOTE: When doing a post (adding a NEW address), if you explicitly set a ShipToId in the body, it cant be an existing ShipToId for that customer or an error will be thrown. If you do pass a ShipToId in the body, the system will try to create a new ShipTo Address using that ShipToId. If you don’t pass a ShipToId, the API will auto generate a new ShipToId for you.
Another NOTE: There is an issue with the API, where you need to make sure that you put the CustId in the body, when doing a POST for a new ShipTo Address, or it wont save against the CustId. This is a known issue where the API doesn’t grab the CustId from the query string when it is saving the SOAddress, it grabs from the body. So, make sure that you are putting CustId in the body (also NOTE the capitalization of CustId. Darn Solomon in its differences in capitalization throughout.)
Creating a new SOAddress for a customer:
Here is an example of how to create a new SOAddress using curl and the action type of POST. Variables that are in the call:
yourserver: You would replace the actual server you have the Catalina API installed on instead of using “yourserver.” this is just a placeholder.
YOURAUTHCODEHERE: This should be the encoded basic authentication string for your setup
YOURCPNYID: This should be the CpnyID of the Company you are using from your System database
YOURSITEIDHERE: This should be the SiteID setup in the API configuration
CUSTID1: This is a customer ID (CustID) that I am using in my example. You would of course use a valid CustID in your SL’s Customer table
ADDR1: I am forcing this to save a new ShipTo Address with the ShipToId of “ADDR1”. If ADDR1 already exists for this customer, it will throw an error. NOTE: You can leave this field out and the API will auto-generate an ID for you
Other fields in the body is data that I wanted to save in the SOAddress
Now, lets say you want to edit an existing shipto address. You would do a patch and make sure that you pass the ShipToId that you want in the URL. It doesn’t have to be in the body. In the below example, I am updating the ShipToId of ADDR1 for Customer ID CUSTID1 and only updating the field “Attn” to read “Marvin the Martian.” PATCH will not update any other fields if they aren’t passed.
We recently decided to move from California to the Outer Banks of North Carolina. The reasons are many (taxes, crowds, etc.), but what we are going to miss is the year around growing season we had in Southern California. Even though we had such a small garden, the use of vertical hydroponics, rain gutter growing, raised beds, etc. allowed us to have a very productive garden that produced most of our greens and herbs.
This new location is going to be very different. We do have a lot more land. But, it is on a barrier island where the soil is mostly sand, isn’t very fertile for growing food, very salty, and there can be severe storms. Continue reading “New Location, New Garden”→
PayFabric has several different endpoints depending on which version you are using. When configuring Order Central, Account Central, or Sales Central, use the following endpoints based on the version you are setup to use:
Catalina creates seamless integration with TSheets and Dynamics SL. This removes the tedious re-keying of data that introduces costly errors and additional resources. The key Integration points are:
Synchronize Projects and Tasks between Dynamics SL and TSheets
Synchronize Employees between Dynamics SL and TSheets
Synchronize timecard entries between Dynamics SL and TSheets
This allows you to use a best of breed time tracking and approval software like TSheets. And then be able to synchronize time back into Dynamics SL so that you can pay your employees and bill your customers.
Quick demo I did on our SMS Central product to allow your customers to download product documentation to their phone by just texting a picture of a barcode on the product.
Give your customer quick access to product, safety, and other documentation without an app or website. Your customer can just text a picture of a product barcode from their phone (no app needed). SMS Central will then text the document back to your customer’s phone based on that barcode. You can store your documents in SharePoint, OneDrive, DropBox, a file server, a document imaging system (like Metafile or Papersave), or most any other location. SMS Central will decode the barcode and retrieve the proper image and send to your customer or field personnel.