Handheld Change Workstation

I agree with that. How about a dashboard and the change on the row select?

@Chris_Conn did some heavy research on the HH Menu and struggled with it, I wonder if he can give you a boiler plate code.

I did heavy customization to the way workstation printing worked, this was mainly in MES, not HH though. With that said, the same approach could be applied.

The crux of the whole thing was avoiding using AutoPrint (with Bartender) and instead, writing my own logic to generate the BT files. That opened up a huge amount of flexibility, and ultimately, I made it such that the selected printer would default based on the workstation, but the user had the entire selection of (label) printers at their disposal. That way, if my forklift was on the otherside of the building, I could look at the name tagged on the side of the printer (could even barcode and scan) to select the proper printer.

Also, the user had the ability to set copies, reprints, etc.

2 Likes

I’ve got labels working as custom code bpms, I ended up testing for the assembly as we had specific labels based on customer forms, so that works, I’ve also added a menu based on some of your direction in other posts. I’m thinking Iight ba able to advance button to the menu to drive the workstation change, but at least we have the fallback of multiple AD users… @Chris_Conn sounds like you were in the same situation as us, not having the numbers of employees to only perform only one part of the process as Epicor expects.
Thanks for the advice, and suggestions.

Not sure if it can be done…but probably can:

var ses = ((Ice.Core.Session)oTrans.Session);
ses.WorkstationID = "MyDesiredWorkStation";

Make a screen to display all WorkStations and Associated printers.
When user selects one, try to set the workstation in the current session.
Print to your newly selected printer

1 Like

This is my attempt. Created a simple BAQ/Dashboard with a tracker deployed, added a button to the assembly as a customisation, Modified the Erp.Menu.Handheld to add a new button and label so show the workstation. Then used the process calling example to tell the menu that the form has workstation was changed, then just @Chris_Conn/@hkeric.wci code to refresh the Workstation label.

Dashboard is a bit clunky but it appears to work. Just need to check the prn parameter in the bartender reports to confirm it is picking things up correctly, but I think it will be.

HHChangeWorkstation

Thanks again for all the advice and historical posts.

Also meant to mention theirs a setButtonImage method in the Erp.Menu.Handheld assembly

5 Likes

Looks very good! Nice work… Someone tag Epicor to Learn from it :slight_smile: hehe

What image did you use for setButtonImage? for that Monitor

@Hally you are violating the Golden Rule… That those who help get the source code. :smiley: Right @Chris_Conn

1 Like

Full steps to replicate will come in due course :grin:. Thought I might make it “A one way to do it” how to… Was going to put it in code review, I’m sure there are some refinements that can be made, but for a first attempt I was chuffed it worked pretty much first go!

On the menu the new button I added for the workstation (second button from the bottom)

Any thoughts on using Bluetooth/iBeacon to find the closest printer? You can buy USB BLE Beacons for about $30.

1 Like

Never heard of them before. Intetesting. I took a quick look, that might work with an Android App or windows client, but not the Epicor handheld app running on RDS, don’t think you could get a Bluetooth beacon to reach our RDS servers in Azure :grin: Nice thought @Mark_Wonsil even better than having the user to remember to change workstation. Perhaps a prompt after printing saying “Printed to…” With an option to suppress until the device changes printers, of course we have printers that have different stock, just to complicate things…

1 Like

Would be pretty cool, you could also potentially use RFID at chokepoints (ala walmart theft deterrents) to determine the zone a user was in.

Hell if you’re using wifi, I wonder if you could just determine what AP your on.

Not sure how that would work with RDP, obviously the RDP Server itself isn’t moving. You almost need to create a Native App on Windows Mobile to use Hardware API?

Im surprised @hmwillett hasnt chimed in on this Post. He probably busy with St. Patricks Day.

2 Likes

And I don’t think that Bluetooth travels that far! :rofl:

Assuming that the mobile device has Bluetooth, you could go with a different approach. Instead of the handheld choosing the workstation, have the beacon on the handheld/forklift/etc. and let other PCs report the location of the moving beacons to a service by sending an HTTP POST. When the location changes, have the service determine when to change the workstation for the device.

Mark W.

1 Like

I am curious now if push notifications from server to client are a thing.

10.2.300 has notifications but that’s all that I’m aware of and even that is just for Epicor Global Admins to communicate with Cloud Users.

Not sure what it would take to hook the System Monitor or the Client to register with an Azure Notification Hub.

image

In all seriousness, it’s not something I’ve had to deal with, so I haven’t put any thought to it.
We have all of our scanners tagged to specific workstations with the printer closest to that workstation assigned. It really hasn’t been an issue. On occasion, we have a user that needs to change, but it’s rare and I end up doing it for them.

Code coming soon…

First time I’ve posted something like this so please be kind…Indexing would be nice, before anyone asks

2 Likes

That was the resource with the ResourceID = “Workstation”

setButtonImage("Workstation", epiButtonC1);

      private bool setButtonImage(string resID, EpiButton btnTarget)
      {
            bool flag;
            if (EpiUIImages.AllImages.ContainsKey(resID))
            {
                btnTarget.Appearance.Image = (Image)EpiUIImages.AllImages[resID];
                btnTarget.Appearance.ImageHAlign = Infragistics.Win.HAlign.Center;
                btnTarget.Appearance.ImageVAlign = Infragistics.Win.VAlign.Middle;
                btnTarget.Appearance.ImageAlpha = Infragistics.Win.Alpha.Opaque;
                btnTarget.ImageSize = new Size(24, 24);
                flag = true;
            }
            else
            {
                HandHeldMessageBox.Show(string.Format(EpiString.GetString("cannotFindImageResource"), resID));
                flag = false;
            }
			return flag;
}
1 Like