Bartender Options in Mobile/Wireless Warehouse

Preamble

I just upgraded to BarTender 2022. FYI with regards to version 2022 there is a problem with R5 Through R7 (Latest Release) when using the GenXXX RDD files in Epicor. Those RDD files add “/DBTEXTHEADER” parameter. For some reason the latest 3 releases on Bartender do not like that. You have to downgrade to R4 to resolve it, or find a way to remove the parameter from the file (or be in a different Release of Epicor maybe). I don’t see how that is possible with the GenXXX unless you intercept it with PowerShell and strip it out. But I digress…

We have Mobile Warehouse on 10.2.500.19. We are migrating a company using SyteLine CSI and I believe Factory Track. They have a mobile app as well. From what I gather they have a bunch of print options throughout that are on-demand. For example, they key in a part, Serial Number and QTY and a label gets printed.

Historically I believe that Bartender print options were basically limited to the GenXXX where the Command Script was provided via the Report Style. 2022 offers REST API calls as well as a mobile app. From what I hear the Biscit Mobile Warehouse is not really customizable as Epicor itself. I only have limited expose to it but I have a feeling that only way I would be printing from it is with BPM/DD triggering a print job to a GenXXX RDD. Are there any other options? I think they are going to expect random Print Buttons throughout the App that are not triggered through logic…just manual prints. I have a feeling I will have to install the Bartender App on the device and recreate their BT Reports in the Bartender Print portal. Then have Bartender query SQL to reproduce what they have. Unless there is a way to make some API calls?

@Chris_Conn has been successful using the Bartender API and even did an Insights talk about it. He may jump in with some ideas. The RDD was made for file drops but that doesn’t work as well with cloud native applications.

2 Likes

I was recently speaking to someone else about this so I will copy out my generic responses from that convo. Maybe it will spur some discussion and\or nasty looks :sweat_smile:

There are many ways to use BT, I prefer to use the REST webservice (Integration Builder). It is super flexible . Mainly I dont incorporate SSRS into the mix at all, there is just custom code that calls the webservice passing the desired data as variable (which drives the label format, the data passed in as well as print info like printers\copies. (I compile all of my ‘label data’ dynamically from BAQ by just passing keys - also I am using named datasources in BT for my label bindings, then I can pass literally anything I want via json)

With all that said, I have brought SSRS into the mix somewhat recently. I use the mechanism of SSRS to drive my prints so I can call BT from EMW. The catch is it only works if where you want to print from has an SSRS print baked in.

Effectively, I hijack the TaskAgent when the tasks come in, see if its a report style I want to hijack, parse the needed data from the params, then pass a REST call on to BT to do a print. (Ultimately, if I hijack it, I kill it so Epicor doesnt try to do its SSRS stuff).

It is pretty limited, but for our purposes, it did ok at at least getting some basic printing to BT from EMW

I do have some auto prints as well. I started by having records created in UD02 to generate my BT calls, which works decent, however I found that if I create a UD02 record from a function it doesnt fire UD02 DataDirs :frowning:

I’ve since moved most of my BT print logic out to functions. Now from a BPM for auto print, i can drop a function widget, select PrintCaseLabel, pass the desired params and blam-o.

Yes I handle all my styles mainly in BT, but there is some epicor side logic that holds the “if this data, then send this format\data”. I use all named datasources on my BT labels so I can pass in whatever via REST and it just binds.

Re: Task highjack, I do in fact have to kill it myself before Epicor has a go at it.

DD on SysAgentTask does the catch.

I put “BT Hijack” anywhere in my report style name, if incoming task is rpt (filtered to my 2 i handle) check it has BT Hijack

My other printing logic in place already takes the keys for a specific label, say like PackSlip and based on the keys like Company, Pack, etc it calls a BAQ that compiles all the label data.

So DD hijack just catches the task, gets the keys, then kills the task. The rest of my printing logic goes to town at that point.

Also another option is via Print Portal. You could have your labels be connected to DB but its too limiting imho, so you just keep passed in data. With print portal you can setup an “input screen” but you can pass it data via URL (and it even has a REST endpoint as well)

Oh also, shout out to @hmwillett , with her help I got some pretty slick reusable BT printing stuff in the works for Kinetic

Using the REST might be the route you want to take, but if you do end up using the file drop method you can easily remove the DBTEXTHEADER as a search and replace action before you process the print in bartender integration builder.

Gee…I was on the phone with BT support. I don’t know why that was not offered up! They seemed to imply it was something I had to do in Epicor.