I have two different customizations on a UD102 form. They each enter/edit information of different aspects of a record. There’s a process going on converting a billet of steel into a rolled coil of steel.
UD102 is the header for the job, and each UD102A record holds a single billet that gets converted to a coil.
At point A, we need to be able to enter information like “did a problem rolling the billet damage the product and it’s never going to make it to the end of the process.”
At point B, we’re weighing the finished coil and printing a tag. The timing here is that the point B action is after the point A action but either can occur before the process is completed.
So, we end up with dirty rows and the dreaded “Row has been modified by another user and couldn’t be updated” message. And it can happen on either end, depending on which one saved the record first.
You simply cannot edit the same record in two different places at once. You can either do what Epicor does and "lock’ the record so that no two people get be in it at once
Or you have to manage that record state yourself via functions that check which field changed and right before the update runs you fetch the latest copy of the record from the Db and made the necessary changes.
None of this is native though, if they are sequential steps (as you mention) I would just not let Step B happen until Step A has been completed assuming I understood what you meant.
I have to be editing somehow at both places somehow. Here’s the deal:
They start pushing billets down the line through a series of rollers. Maybe 10, maybe 100 on a job. Eventually the billets are reduced size from like 5" square to 1/4" round. As they come to the scale, they are weighed and tagged.
Except for billet 22, which has escaped from the rollers and made a hot (really hot) mess on the floor. They need to mark that one to indicate it’s never going to make it to the scale. Meanwhile, the tagger is still tagging number 10., 11, etc.
The easy thing for me to do is put a great big refresh button on the form for when they get the error message.
I was hoping someone had run into this same situation and had some handy hints.
Instead of using a Customization on UD102, create an Updatable Dashboard for the data - assuming you are updating different fields, have a different BAQ / potentially different Dashboard for each of your Steps.
Heresy - create an Update Method BPM on UD102 that is a Base Processing BPM. In that BPM, figure out what data changed and then push the changed data (but not SysRevID) through UD102 UpdateExt and finally call GetByID to repopulate the UD102 Dataset. Very similar approach to what Jose was recommending but allows you to not deal with SysRevID management.