Meet Me at Sage Summit in New Orleans, July 27-30, 2015

A Mt. Rushmore for Sage

A Mt. Rushmore for Sage

Colin Powell. Deepak Chopra. Stephen Kelly. Sage Life indeed! And this is what you get before before 10 am. All of these talks will take place at Sage Summit, July 27-30, 2015 in New Orleans. Meet me there?

Sage Summit is the event to learn, network, and connect. Hundreds of sessions and more than 70 speakers are all focused on helping you grow your business.

If you’d like to be inspired by businesses just like yours who’ve experienced unbelievable success driven by innovative and accessible mobile ERP solutions, then please join me for either of these two talks in the Thought Leadership series:


Hear stories about how a seventeen-year-old beverage distributor increased sales over 20% in year one after going mobile—with zero increase in warehouse and admin personnel.

Find out how a food distributor increased sales and eliminated 100 hours of clerical work each week by providing their top customers an app to order product right from their smart phones.

And learn about something called Sage Life, a re-imagination of business management brought to you by Sage and Salesforce.

All that and much, much more.

Meet me at Sage Summit in New Orleans, July 27-30!
Register Now!
Remember to also register for the sessions! 


3 ways to make xkzero part of your Sage Summit story

xkzero will be well-represented at Sage Summit 2015 in New Orleans!

Here are 3 ways to make xkzero a part of your Sage Summit story.

1. Visit our booth.

xkzero team members look forward to seeing you at booth 522!
Sage Summit Booth 522: xkzero

2. Take a class.

Alnoor Cassim, Director of xkzero Technical Services will conduct a 2-day advanced scripting class for 90 Minds.  

Alnoor has taught 4 sold out beginning-level scripting classes over the last couple of years–each session attended by around 20 consultants. This will be the first time he offers an advanced-level class, so you won’t want to miss it!

3. Attend a talk.

Sage Summit welcomes back xkzero co-founder Paul Ziliak as a part of the Thought Leadership speaker series.

This year, Paul is slated for two speaking sessions:

We hope you’ll be a part of our Sage Summit story! See you in New Orleans? Register here. (Remember, you also need to register for the sessions and classes!) 

Paul Ziliak at Sage Summit 2014: "Why Mobile, Why Now"

Paul Ziliak at Sage Summit 2014: “Why Mobile, Why Now”


iSales 100 User Training Overview

This 21-minute video demonstrates the basics of iSales 100 mobile sales app for Sage 100 ERP. We hope this serves as a helpful iSales 100 training primer for all the app users on your team.

Topics include:

  • Getting Started (0:00)
    Download the app for iPhone, iPad, or iPod Touch. Log in. Synchronize data.
  • Accessing Customers and Contacts (2:42)
    Search for customers, and all contacts at a company. View contact info and access maps. Call or email customers. View and sort history and open orders.
  • Accessing Inventory Items (7:05)
    Search by item, using customized filters. View product images. See stock availability.
  • Processing Transactions (9:21)
    Initiate a new transaction. Select transaction type (i.e. sales order, quote, invoice), date, PO number, and shipping info. Create memo. Add items to the order. Add signature. Calculate totals. View transaction in shopping cart. Edit, print, or email order.
  • Synchronizing Transactions (16:17)
    Sync select transactions or all data. (Empties shopping cart and sends data to Sage 100 ERP system.)
  • Creating Hot Lists (16:51)
    Create lists in customer, contact, or item categories.
  • Resetting the Device (19:42)
    Clear iSales 100 data. Login as new user. Sync all to restore data.

For more information about iSales 100 and xkzero visit or email us at

Mobile ERP Sales App En Español: iSales 100 for Sage 100 ERP

One of the great advantages of iSales 100 for Sage 100 ERP is its ability to accommodate multiple languages. We are happy to offer our mobile ERP sales app en español. Because iSales 100 is a native iOS application, users can set their language preferences on the phone with the tap of just a few buttons. Web apps and customer portals just don’t have this same ease of flexibility.


Una de las grandes ventajas de iSales mobile ERP sales app en español: iSales 100 logo100 para Sage 100 ERP es la capacidad para acomodar múltiples idiomas. Ya que iSales 100 es una aplicación nativa de iOS, los usuarios pueden configurar sus preferencias de idioma en el teléfono con el toque de sólo unos pocos botones. Aplicaciones de Web y portales de clientes simplemente no tienen la misma flexibilidad.

iSales 100 actualmente está disponible en Inglés y Español, pero si desea utilizar iSales en su idioma preferido, simplemente avísenos!


iSales 100 is currently available in English and Spanish, but if you’d like to use iSales in another preferred language, please let us know! Download your free trial from the Apple app store now and test out language preferences for yourself!

xkzero is dedicated to revolutionizing the way people work.  We believe that people perform best when they are confident, informed, and have a high level of trust in the tools they use.

xkzero builds solutions designed for the best possible user experience, engineered in a flexible way to accommodate the needs of each individual and we adapt to the precise business rules that can vary industry by industry, company by company.

xkzero can help you discover a whole new dimension of selling, operations and business intelligence. We focus on the way your people interact with customers and suppliers, and interact with each other. We can help you change the way your business processes and reports business activity as it happens.

For more information about xkzero please contact us at or call 847-416-2009.

The Experience of Doing Business With You: A Sage Summit 2015 Preview

We all have our judgments when doing business with others. Whether over the phone, in person, or online—you’ll come away from a business interaction having decided if the seller was too slow, uninformed, not there when we needed them, or failed to warn us about one thing or another.

Creating a positive experience of doing business together is vitally important to revenue production, customer retention and profitability. With the continued emergence of mobile apps for business, now more than ever it’s critical to evaluate how you can differentiate and win against the competition. One crucial offering that can keep you on top—create a better experience of doing business with you.

Join me at Sage Summit 2015 in New Orleans from July 27-30 to network, connect, and learn how Sage can grow your business.

As part of the Sage Summit Thought Leader series, I will share insights during an all-new session designed to help you learn how to change the experience of doing business with you by leveraging mobile technology:

  • TL-139: Disrupt your industry: making your mobile dream a reality
    Wednesday, July 29, 2015
    4:30 to 5:15 pm

In this session you’ll learn how companies in B2B industries went from zero to mobile virtually overnight by creating a vision, strategy and action plan to harness new opportunities for sales, operational efficiency and profits.

Hear how companies who sell everything from beverages, restaurant supplies, grocery products, dirt, landscaping material and services, computer peripherals, medical instruments, and industrial equipment are rising above the competition and creating real value through mobile technologies for their ERP systems.

If you haven’t already done so, register for Sage Summit 2015 now! Use my promo code BEMYGUEST for a rate of $99 USD. The regular price is $799.

I’m also revisiting and updating a very popular session from Sage Summit 2014:

  • TL-134: Why Mobile, Why Now? A Decision Maker’s Guide to Business Success
    Tuesday, July 28, 2015
    4:30 to 5:15 pm

Once you are registered for the conference, visit the Sage Summit site to secure your spot to attend both presentations. Don’t wait until you get to New Orleans to register for sessions. They fill up fast!

Sage Summit 2015 celebrity speakers include General Colin L. Powell, USA (Ret.), Deepak Chopra, Tony Hawk, Jane Seymour, and Matthew Weiner, the creator of Mad Men.

Don’t miss it! We look forward to seeing you there! Also, be sure to visit us at booth 522 and make xkzero a part of your Sage Summit story.

Sage Summit Booth 522: xkzero


Start Growing Revenue with iSales 100: Webinar Recording

Webinar running time (46:30)

Not all mobile sales apps are created equal. iSales 100 is built to meet a flexible range of mobile sales needs. It can accommodate sales people from any location away from the office, whether automated at the customer site, trade show, or showroom floor.

iSales 100: Energize Selling with Sage 100 ERP 

Here is the recording of our recent Webinar for Sage 100 ERP business partners.

Some of the great information in this Webinar (46:30):


This is a Sage business partner-only event. Sales people and consultants both will benefit from the presentation.

xkzero is a Chicago-based software company dedicated to revolutionizing the way people work.   We believe that people perform best when they are confident, informed, and have a high level of trust in the tools they use.

xkzero builds solutions designed for the best possible user experience, engineered in a flexible way to accommodate the needs of each individual and we adapt to the precise business rules that can vary industry by industry, company by company.

xkzero can help you discover a whole new dimension of selling, operations and business intelligence. We focus on the way your people interact with customers and suppliers, and interact with each other. We can help you change the way your business processes and reports business activity as it happens.

For more information about xkzero please contact us at or call 847-416-2009.


Restricting a Company from Search Results with GetX

Any number of reasons may lead you to wish for the search results of GetX Search for Sage 100 ERP to no longer appear in your browser. Perhaps the company is no longer active, or has been sold. Or maybe it’s an archive company and you only want results from your new live company to appear.

No problem. To disable search results for a single company, access that company code within Sage 100 ERP, choose GetX for Sage 100 ERP / Setup / GetX Setup Wizard and de-select the box labeled “Enable Search Results for Company.” That’s it.

Disable GetX for a single company

The Cost of Finding Duplicate Anything in Sage 100 ERP

Have you looked lately at the price of some of the off-the-shelf add-ons for Sage 100 ERP?

Some can be a bit…well, pricey.

Example: The image below shows the capabilities of one company’s Sage Preferred Development Partner add-on for Sage 100 ERP. Like hundreds of other customizations offered by one of a dozen or so companies that provide and create extra functionality for Sage 100, it solves only one very specific problem.

The particular problem solved in the example below, according to the company’s website, can be solved for an initial price of $2,080. Add $580 per year for maintenance and support.

The price for the software tallies out to $168 per user, per year. That assumes a 7-user Sage 100 ERP system over the course of 3 years.

What is the cost of finding duplicate anything in Sage 100?

What is the cost of finding duplicate anything in Sage 100?


What does this company’s add-on help you do? It gets rid of any duplicate customer records in the ERP.

Right on. Clean data sounds like a good customer service goal to us.

However, we have our own universal search tool that solves way more than one problem. On the subject of duplicate elimination alone, GetX by xkzero searches for duplicate anything. A-N-Y-T-H-I-N-G.

The price is $90 per user per year. That’s twenty-five cents per day.


To search for duplicate A-N-Y-T-H-I-N-G.

GetX is not just about locating duplicate whatever-you-want-to-find. It will change the way you work.


Download your free trial today.



Top 10 Reasons to Include GetX in Every Sage 100 ERP System



GetX provides a whole new way of thinking about your system. Using this tool, you enter data first, then GetX takes you wherever you need to go. We broke down the benefits during a Webinar to introduce GetX for Sage 100 ERP to Sage business partners. Here, we pass them along to you:

Top 10 Reasons to Include GetX in Every Sage 100 ERP System:

  1. Free-30 day trial for anyone
  2. Installation and set-up done in 15 minutes
  3. Won’t break any customizations or 3rd party code
  4. Supports Sage 100 ERP versions 4.5 to 2015
  5. Reduces time to perform almost any look-up
  6. Increases every user’s confidence in Sage 100 ERP
  7. Major competing products, from Quickbooks to Netsuite to Epicor to Sage X3 to SAP, already have GetX-like search.
  8. Free install assistance always
  9. Price is about 25 cents per user per day.
  10. Everyone already knows how to use it.

Top 10 Reasons to use GetX


To learn more, here is the full recording of the Webinar, “An Introduction to GetX.” (52:46)

Lastly, here’s the 11th and most important reason to include GetX with every Sage 100 client opportunity—new, upgrade or anyone: Customers love it!

Here is what several customers and xkzero business partners have said about GetX:

“My client loves it to death.”

“If your client wants to look up something quickly…use GetX.”

“You should include (GetX) on every deal.”


“I feel like a kid on Christmas morning. This solves everything I didn’t like about Sage 100.”

“This is a killer app.”

“Put us on the list of pumped up resellers!”

“We have a client who is hot to trot and ready to buy GetX today.”

“I would describe this as a game changer.”

“I don’t know what I would do without GetX at this point.”

“We rely on it heavily in our customer service area.”

If you are not getting the information you need out of your ERP, you need GetX!!! It puts every bit of your information at your finger tips in an easy search format. The fun begins when you start figuring out how many ways it will save you money!!!!

Register now for these free Webinars!

Are you aware of our summer promotions? Contact your xkzero account representative or email us at for more information.

Join the fun this summer with xkzero! 



Line Item Discount Calculations: Scripting Tip for Sage 100 ERP

Scripting Tips for Sage 100 ERP

Blogger: Alnoor Cassim, xkzero Technical Services


A case for creating a script for line item discount calculations—
Let’s say you sell designer purses and handbags. During the month of June, you offer a 20% discount on Gucci orders of $300 or more—for loyalty program customers only.

Think of all the specific parameters involved in this promotion. Qualifications to receive the fixed percentage discount require the purchase be made during a limited timeframe, by a certain customer base, and only for orders of products by a particular vendor that exceed a designated amount.

Can Sage 100 ERP do the math?

The regular Sales Promotion feature has the option of applying a discount % to a date range. However, we cannot easily apply that percentage off to an entire product line, nor can we specify the customer type or add any other conditions.

To minimize the salesperson’s involvement in the calculation, you can automate Sage 100 ERP to set all the qualifying discount conditions. Yes, this is another case in which scripting can help!

Let’s assume the following:

  1. We have set up this miscellaneous charge code for the promotion:  /DISC20
    We would like to reflect the discount by having the script automatically add /DISC20 line as a negative amount (to offset the order total, subtracting 20 percent for the Gucci products).
    We will not use the line item discount percentage feature nor use the Discount Rate/ Amount fields on the Totals tab.
  2. In Customer Maintenance we will use the Customer Type field to represent the loyalty tier level where B=Blue, S=Silver, G=Gold, Z=Zero. For our promotion a value of B, S, or G qualifies.
  3. In Product Line Maintenance, we will set up GUCC as the product line for all Gucci items. Several items have been created using GUCC. (Others designers in our collection include Louis Vuitton, Coach, Nine West, and LeSportsac.)

To accomplish this task, you can create a script. For your own company and industry, add your own business rules and other complexities.

What kind of script do you need to create?
Create an event script (a.k.a. User Defined Script) that runs when the Totals tab is clicked in Sales Order Entry. The event type we are using is called Pre-Totals. As the “Pre” implies, a Pre-Totals script will run before any of the standard Sage 100 ERP programming (such as when the totals tab is clicked (e.g. calculating Sales Tax)).

How do you create this script?

Follow these steps:

  1. Go to the Custom Office/Main Menu, and make these selections:
    “User-Defined Field and Table Maintenance”
  2. Under the “Sales Order” heading, choose: “SO Sales Order Header”
  3. Right-click and choose “User Defined Scripts”
  4. In the “User Defined Script” window, click the “Add” button. This will open the “Add Script” window.
  5. In the “User-Defined Script–Add Script” window, as shown below [Image 1], make these choices:
    Event: “Table – Pre-Totals”
    Type in a name for your script, such as this (without the quotes):
    “Line Item Disc by Prod Line”


    Image 1

  6. You will see a message indicating that the script file does not exist, followed by a question, “Do you want to create it? Yes/No?” Yes, you do want to create the script! Click: “Yes.”
  7. Now the “Edit Script” window will appear. Copy the following code and paste it into your script editor window. Note: It is important to use the code exactly as shown below, including line breaks and spaces.

'Alnoor Cassim - xkzero - Line_Item_Disc_By_Prod_Line

'1 Check the Order Date for June Orders
'2 Check for a qualifying Customer Type
'3 Check if last line has /DISC20 and remove as we need to recalc
'4 Scan all lines for at least $300 of qualifying Gucci product
'5 If order qualifies, add the /DISC20 line and apply 20% off

'Init VARs
sItemType = "" : sItemCode = "" : nXAmt = 0 : nTotXAmt = 0
sProdLine = "" : sOrderDate = "" : sCustType = "" : sDiv = "" : sCust = ""
sDiscProdLine = "GUCC" : nAmtToQualify = 300 : nDP = .20

'Get the Order Date and if not in June exit the script -> No Discount
retVal = oBusObj.GetValue("OrderDate$", sOrderDate)
If sOrderDate < "20150601" or sOrderDate > "20150630" Then
	Exit Sub
End If

'Find out if we have a qualifying loyalty customer
retVal = oBusObj.GetValue("ARDivisionNo$", sDiv)
retVal = oBusObj.GetValue("CustomerNo$", sCust)

'AR_Customer table available as Data Source so use GetChildHandle()
'The other way is to use GetObject()
Set oCustomer=oBusObj.AsObject(oBusObj.GetChildHandle("CustomerNo"))

'Concantenate the key fields for AR_Customer
FullCust = sDiv & sCust

'Find the Customer record. Note how oCustomer is referenced now.
retVal = oCustomer.Find(FullCust)

'Get the value of the Customer Type (Loyalty Tier)
retVal = oCustomer.GetValue("CustomerType$", sCustType)

'If not Blue, Silver, or Gold exit script -> No discount
If sCustType = "Z" or sCustType = "" Then
	Exit Sub
End If

'oLines passed in but we must explicity set as an object in VB
Set oLines = oSession.AsObject(oBusObj.Lines)

'Avoid Double Discount
'Move to last line first to check if /DISC20 already exists.
'If so delete as we need to recalc if order qualifies for discount
retVal = oLines.MoveLast()
retVal = oLines.GetValue("ItemCode$", sItemCode)
If sItemCode = "/DISC20" Then
	retVal = oLines.Delete()
End If

'Start at the top of the grid
retVal = oLines.MoveFirst()

'Loop through Lines grid. Check for lines that qualify for discount
Do Until cBool(oLines.EOF) = True

	retVal = oLines.GetValue("ItemType$", sItemType)
	retVal = oLines.GetValue("ItemCode$", sItemCode)
	'Check for regular inventory items only: ItemType = 1
	If sItemType = "1" Then

		'CI_Item table is available as a Data Source to get Prod Line
		'Note how we use oLines instead of oBusObj here
		If IsObject(oItem) = False Then
			Set oItem=oLines.AsObject(oLines.GetChildHandle("ItemCode"))
		End If
		'Get the Product Line and if qualifiying increment total
		retVal = oItem.Find(sItemCode)
		retVal = oItem.GetValue("ProductLine$", sProdLine)
		If sProdLine = sDiscProdLine Then
			'We have reached a qualifying line yea!
			'Get the Extension Amt and increment the total.
			retVal = oLines.GetValue("ExtensionAmt", nXAmt)
			nTotXAmt = nTotXAmt + nXAmt
		End If
	End If
	'Move to next line in the grid
	retVal = oLines.MoveNext()


'Final Test
'Check if we have at least $300 of qualifying product
'If so add the /DISC20 negative misc charge code

If nTotXAmt >= nAmtToQualify Then
	retVal = oLines.AddLine()
	retVal = oLines.SetValue("ItemCode$", "/DISC20")
	retVal = oLines.SetValue("ItemType$", "3")
	sCommentText = "Congrats you qualify for a discount"
	retVal = oLines.SetValue("CommentText$", sCommentText)
	retVal = oLines.Write()
End If
How does this script work?

To better understand the logic behind the script’s functionality, read this:

These comments lines represent the high level approach we will apply:

  1. Check the order date for June orders.
  2. Check for a qualifying customer type.
  3. Check if last line already has /DISC20 and remove if we need to recalculate.
  4. Scan all the lines for at least $300 of qualifying Gucci product.
  5. If the order qualifies, add the /DISC20 line and apply 20% off the price.

“Init VARs”
In the first section, we “initialize” (init) the variables to prepare for use later in the script.
Note: We are hard-coding the qualifying product line, qualifying amount, and discount pct. However, if in July a new promo starts for a different designer, we could create a User Defined Table (UDT) to store the “designer of the month,” the “qualifying amount,” and “Disc Pct.” This would allow the script to grab the values from the UDT to prevent needing to modify that script every time.

The next block of code enables the following preliminary steps:

  • If the Order Date is not June 1-30, 2015, it disqualifies the discount (exits the script).
  • It attains values from the AR_Customer table, by using the GetChildHandle() function to take advantage of a Data Source called “CustomerNo”
    Note: This has exactly the same result as using Custom Office, where in UDF Maintenance you map a UDF from AR_Customer table via the “CustomerNo” data source to SO_SalesOrderHeader table.
  • It locates the CustomerNo in AR_Customer table through the Find() function.
  • It gets the value of the CustomerType field through the GetValue() function.
  • It disqualifies the discount (exits the script) if CustomerType (the Loyalty Tier) is not Blue, Silver, or Gold.

Preventing Double Discounts
Normally we would scan the grid sequentially from top to bottom. However, we want to jump to the last line first and remove /DISC20 in case it was still there from the last time we clicked Totals for this order. We need to calculate the discount but at the same time not have more than one instance of /DISC20.

Scanning the Lines Grid
We are now ready to position ourselves at the first line in the grid and start the “Do Until Loop.” We continue to move sequentially through each line via the MoveNext() function until we reach “EOF.” This technically means “End of File,” but in this case refers to the last row in our grid. We use the VB function CBool() to convert the condition into a True/False test.

We now check if the ItemType field is set to “1.” This means we landed on a regular inventory item. If so, then we continue processing.

We can use the GetChildHandle() function again instead of GetObject(). Connect to the data source called “ItemCode” to get to the ProductLine field.
Note: This produces exactly the same results as using Custom Office, where in UDF Maintenance you map a UDF from CI_Item table via the “ItemCode” data source to SO_SalesOrderDetail table.

Next step—
Check to see if we landed on an item belonging to GUCC product line. If so, store the extension amount and increment the Gucci total in a counter. Finally, we do the MoveNext() function to move to the next line in the grid.

Final Test
If the totals for all GUCC lines are at least $300, then go through the steps to add a new line for /DISC20. We set the ItemType field to “3″ for Miscellaneous Charge, set the ExtensionAmt field to negative to reduce the order total, and set a comment to make it clear a discount was taken. Finally we write the new line.

You’re almost done! 

Now you can accept the script.
This will return you to the “Add Script” window.

  1. To close this screen and return to the “User Defined Scripts” window, click “OK.”
  2. Next, to go back to the main “User Defined Field” and “Table Maintenance” window, click “Close.” Here, you must also click “Close” again to see the “Script Compile” window.
  3. IMPORTANT: When the “Script Compile” window appears, click the Compile” button.

Note that you can further edit the script, if necessary. To do so, from the “Custom Office/Main” menu, choose the “User Defined Script Maintenance” task. When done editing the script, to syntax check the script, click the Check Script button:

To save the script, click the Accept button.

The next step is to click the Compile button in the lower-left of the screen. When the Script Compile window appears, click the Compile button again followed by the Close button.

This is one of many Sage 100 ERP scripting examples we will share through the xkzero blog. If you need help with scripting or other programming or technical issues with your Sage ERP, no matter how complex, please feel free to contact us: 

xkzero Technical Services
Call: 847-416-2009