We have been busy adding new features to SLQuickCollect. SLQuickCollect is Catalina’s solution that allows you to email or SMS message out a simple link to your customer as a request for payment. The customer can then click on the link and are sent to a payment page without any portal login required. This lowers the barrier of entry for you to collect from your customers and get paid faster.
Below are a few of the new features we have added to SLQuickCollect over the last month.
Ability to create payment requests via web page: This is a way to quickly send out SLQuickCollect links from a simple to use web page.
Send attachments: You can send any type of attachment with the quick link email. This could include the invoice PDF, a work order document, pictures, or any other type of document you would want to send to the customer as information about the payment request.
Add custom properties to the requests: Custom properties are a way for you to send custom information to the SLQuickCollect link so that the customer knows what they are paying for. These custom properties are unlimited and can be whatever you want. They could include: notes, order number, work order number, or anything you can think of. These properties can then be displayed to the customer on the SLQuickCollect link email, payment page, receipt page, and receipt email templates.
More multi-site/config options: This allows you to create different email templates, config options, payment methods, branding, etc. By doing this, you can have a completely different setup for different companies, marketing campaigns, storefronts, and more.
L2/L3 fields: SLQuickCollect (and Account Central) can capture level 2 and level 3 fields such as PO Number, extended address information, line item information, etc. This allows for savings on credit card transaction fees.
Payment entry requests: Not only can you create payment requests that would apply against invoices (payment applications), but now you can create payment requests for “payment entries” in SL. These are payments that aren’t directly applied to an invoice. But just captured against the customer account.
Catalina’s API for Dynamics SL wraps saving of data into transactions which allows for “rollback” if there is an error. Meaning if there are multiple tables/records that are in a transaction, and an error occurs, everything will get rolled back as if nothing happened.
There are some times when there are problems with this. Mainly when some type of external force (like a trigger) updates the same data that Catalina is trying to save. This could cause table locking and not allow transactions to save properly. One way to get around this is to turn transactional processing off.
NOTE: Only do this in a test environment first. This should be done if other methods don’t work.
This is done easily by changing the web.config of ctDynamics SL. Search for the keyword “DISABLETRANSACTIONS”.
Once you have found the keyword, make sure that the value=”TRUE” and that will turn off transactions.
<add key="DISABLETRANSACTIONS" value="TRUE"/>
If you only want to disable the transactions on a single web service and not all of Catalina’s API, Keep the value of DISABLETRANSACTIONS to FALSE. But add a key to web.config similar to this:
When you have an installation of Catalina’s API for Dynamics SL and you are receiving this error in your log files:
Err:Retrieving the COM class factory for component with CLSID {A440BD76-CFE1-4D46-AB1F-15F238437A3D}
This error is limited to SL7 installations and sometimes occurs during checkout or placing and order upon intial install of Catalina products; but usually after SL client updates or changes.
The problem is related to missing registry entry for: capicom.dll. This file is required by the the Microsoft Solomon components and used for database access. Capicom.dll is included in a variety of MS products and should already be located on the computer.
It is simple to call a stored procedure through a RESTful API call if you have Catalina’s API for Dynamics SL. You can call any stored procedure and pass parameters and retrieve data.
This is a demo on how to call a stored procedure using Postman and Catalina’s API for Dynamics SL.
First, to do this demo, you need to download and install Postman. Postman is a developer tool that allows you to interact with API’s easily so that you can test API calls to see how you call them and what data is returned. You can get Postman here: https://www.postman.com/
In the demo, we are going to call the stored procedure SOHeader_all. This stored procedure retrieves all Sales Order Headers (SOHeader) for a particular CpnyID and OrdNbr. NOTE: this is just an example. With Catalina’s API, you can call any stored procedure.
SOHeader_all has 2 parameters: – @parm1: This parameter is for the CpnyID – @parm2: This parameter is for the OrdNbr (can use a wildcard like ‘O000%’ which will bring back all orders that start with O000.
You can see what the procedure looks like here:
PROCEDURE [dbo].[SOHeader_all]
@parm1 varchar( 10 ),
@parm2 varchar( 15 )
AS
SELECT *
FROM SOHeader
WHERE CpnyID = @parm1
AND OrdNbr LIKE @parm2
ORDER BY CpnyID,
OrdNbr DESC
So, if you wanted to retrieve all orders that started with “O000” for CpnyID = “0060” you would call the stored procedure like this:
exec SOHeader_all @parm1='0060', @parm2='O000%'
So, now how to call this using Postman through Catalina’s API for SL?
First you need to know where your Catalina API is installed. I am going to use the server name yourserver.com as the domain name. So, for this example, we would look at the endpoint as the following:
As you can see above, you would replace yourServer.com with wherever your server is. And you can see <ProcedureName> in the URL. this would be replaced with the actual stored procedure name you want to call (in this example, we are going to replace it with SOHeader_all). So, the new URL for the endpoint would look like the following:
In Postman, you would make it look like below. NOTE: when calling a customSQL stored procedure, you must use the action type of “POST”
Next, you need to set the authentication. This is done on the “Authorization” tab. Catalina’s API uses “Basic Auth”. So, make sure that you set the type for “Basic Auth” in the dropdown. And then enter the username and password that was given to you from your installer.
After that, you will have been given a SiteID from your installer. You will need to create a Header for that SiteID. You do this on the headers tab. You should enter that SiteID (in my example it is “DEFAULT”, but you would use the SiteID given to you by your installer) and the default CpnyID (in my example that is “0060”, but you would use your CpnyID of your database)
Finally, you will want to enter the body of the parameters that are being passed. There are 2 parameters for SOHeader_all (@parm1 and @parm2). The format of the body that you would set is below.
So, your Body tab in Postman would look like this (NOTE: make sure you select the “raw” radio button as shown below)
Then all you have to do is simply hit the “Send” button and the system should retrieve the results from your stored procedure call. In my example, it looks like below
This is a demo that shows you how to create a mobile app to interact with Dynamics SL to provide a “Contact Free” payment solution to help protect your employees and customers during COVID 19. The intended user of this example app would be a customer service rep, sales person, or field service rep who needs to collect payment from a customer (handy for collecting a deposit or down payment before delivery, installation, or service work to be done).
This demo uses Catalina’s API to search customers in SL and then lets the user to request a payment from a customer by generating a link and emailing it to the chosen customer. That customer then can click on the link and pay the amount which automatically creates a payment in SL’s AR.
Check out the video of the demo on our Youtube channel here:
Below is a screenshot of the Android app from the above demo. First you can search for a customer by a keyword. That search will then bring back a list of results. You can then click on the customer you want to request funds for. The app will automatically fill in the email address of the customer (from the Customer record in Dynamics SL). You can change the email address if you want. You then enter a requested payment amount and hit submit. Once you do this, Catalina’s SLQuickCollect will send off an email to the customer with a link which will then allow them to make a PCI compliant secure payment. Once authorization occurs, SLQuickCollect will then create a payment in Dynamics SL automatically.
As mentioned below, if you want to have starter code on creating an Android App (with Visual Studio and Xamarin), you can check out an example on our Github here (NOTE: I would only consider this a starter. This is in no means something finished but enough to get you started)
Getting paid by your customers can sometimes be difficult. Catalina’s payment portal allows users to login and manage their account and pay their invoices. But customers still need to login.
To reduce the barrier of entry for customers to pay, Catalina has come up with SLQuickCollect. SLQuickCollect allows you to send out a link via email or SMS which the customer clicks on. They are then sent to a payment page without any login required. They simply pay (Credit Card or ACH). Once that payment is authorized and captured, SLQuickCollect creates the payment in Dynamics SL.
The above shows how you can request for an amount not tied to any invoice. This is especially handy if you need to capture a deposit against a sales order, service call, etc. This payment would go into the SL “Payment Entry” screen.
The demo shows how you can request a payment from the sales order screen for a deposit amount. This would then send a link to the user via email. The user would click on the link and pay.
The request payment allows you to decide an amount to charge for a deposit for the order. It also has a handy percentage calculator to take out the guess work.
NOTE: SLQuickCollect also has the ability to send out a simple link to pay for an invoice and have that payment applied to one or more invoices through the “Payment Application Screen”
Catalina’s SLQuickCollect is a way to send a request for payment to your customer as an email with a link to click to pay. Your customer simply clicks on it and pays (no need for a portal login or anything). The payment works through a PCI compliant payment processor and is automatically integrated back into Dynamic SL’s AR.
There are many ways to create SLQuickCollect links. One of which is calling a stored procedure by passing a few parameters.
The stored procedure is called: xct_spSLPaddInvoicePaymentRequest
The parameters to this proc is:
@batNbr: The batch number of the invoice you want to send
@refNbr: The invoice number you want to send
@CustID: The customer who the link is going to be going to
@paymentEmailList: A delimited list of email addresses the link will be sent to
@siteID: (optional) For which configuration site to use (defaults to ‘SLPAY’)
@setupID: (optional) The PayFabric setupID you are to send. If not passed, the default will be used from SLQuickCollect’s configuration
@deviceID: (optional) The PayFabric deviceID you are to send. If not passed, the default will be used from SLQuickCollect’s configuration
You can call this stored procedure from most anything. You could call it from a trigger when an invoice is created. You can call it from a SL screen. Or even another application all together (like maybe excel that has a list of invoices to send)
Here is an example of how I added a button on the Invoice and Memo screen to send a SLQuickCollect link for a particular invoice.
Below, you can see where I created a button “Send SLQuickLink” that will take the current invoice on the screen and send a payment request link to the customer.
Below is the code behind the click event of the button. This will look at the current batNbr, refNbr (invoice number), custID, and get the email tied to the customer to send the link to that customer’s email.
Private Sub bPayLink_Click()
Dim SQLStr As String
Dim Csr_temp As Integer
Dim sCustID As String
Dim recfound As Integer
Dim maintflg As Integer
sCustID = GetObjectValue("ccustid")
SQLStr = "Customer_All " + SParm(sCustID)
serr = SqlFetch1(Csr_temp, SQLStr, bCustomer, LenB(bCustomer))
Dim lsSQL As String
Dim liCursor As Integer
lsSQL = "xct_spSLPaddInvoicePaymentRequest" & SParm(ThisScreen.cbatnbr.Text) & SParm(ThisScreen.crefnbr.Text) & SParm(ThisScreen.ccustid.Text) & SParm(bCustomer.EMailAddr) & SParm("SLPAY")
Call sql(liCursor, lsSQL)
Call SqlFree(liCursor)
MsgBox ("SLQuickLink Sent to CustID " + ThisScreen.ccustid.Text + " for invoice " + ThisScreen.crefnbr.Text)
End Sub
If you need EDI integration between your trading partners and Dynamics SL, you can use Catalina’s API for SL to get data in and out of Dynamics SL. One of the simplest of transactions is order management. If you have a trading partner that needs to send you PO’s so that you can then fulfill, the most common documents used are:
Inbound Documents
850: This is a purchase order to fulfill
Outbound Documents
855: An immediate response sent back to your trading partner acknowledging that you received the transaction
997: An acknowledgement that you have received the transaction and often when you will pass back a reference number for your internal order number
856: A shipper notification that notes what has shipped on the PO when a shipper is generated
The key to this is a data mapping layer that allows you to translate the inbound EDI documents and transform it into something that the Catalina API can understand. The reverse is true when data needs to be sent from SL out to your trading partner. The Catalina API will retrieve the data and then the translation will transform that data into an EDI document to send back to your customer.
If you have questions or need assistance with EDI integration with DynamicsSL, you can contact Catalina at [email protected]
Get programming samples for Catalina’s API for Dynamics SL, see demos of Catalina products, check out special projects in IOT, urban gardening, robotics, and much more.
Many of Catalina Technology’s stored procedures accept a field called @parms that is an XML field for configurable parameters to be passed. An example of this is below.
You can see that there is a parameter getting passed called “@parms”. In that is a XML string that contains one or more parameter. In this case, there is a single parameter called “ADDRID” and it is getting passed the value of “C%” so that it can return all addresses that start with a “C”