Sooooooooooo⌠you donât just wanna take it at face value? The explanation is long winded (and my memory is spotty) lol
So back in 9 or possibly 8 (6???). Progress had these shadow records called BeforeImage https://knowledgebase.progress.com/articles/Article/P17959
Its basically a transaction which keeps track of whatâs changed in case there is an error. Some of Epicorâs logic used this BeforeImage records to figure out if something changed.
For example on a BPM when you say Condition of Field X changed to Z to V it used (and uses) the before image to figure out what changed. There is also some logic in the Business Object which uses the before image to determine some âlogicâ flow. For example if BI.Field X == âPâ then Do RainBowMagic
In 10 they kept that same mechanism by passing in a copy of the current (unchanged) record without a row mod, and when you write a BPM that checks if field X changed it uses that to figure it out. So in the Shipping BO there must be some logic where it checks the BI and if it canât find it, it behaves erroneously.
We should ALWAYS use the BI when we call BOâs from a BPM. When we do it from the UI using the Adapter Epicor is nice and does that for us.
Note the terminology/context may not be 100% accurate, maybe @Bart_Elia can correct me where Iâm wrong itâs been a few years since I looked at this but thatâs the gist as I recall.
We have all been doing it, it works 89% of the time without it, but that 11% is a pain in the ass. For example if you want to UnRelease a Job without the BI canât be done if you have the prevent changes to Released Job checkbox in your company. It will refuse to let you do it in code. Because when it checks âwhat fields changedâ (which should only be the released flag) it fails to see this and stops you. There are many other examples were this is the âsolutionâ
I"m working really hard to make sure that all my code as of the last few months does this correctly,because I believe Epicor is getting more serious about it in the newwer releases I get bit by it again and again.
Jose you have the name right - Youâll see a bunch of variables like BIOrderHedRow or the like.
Some of the functionality is a lot of fuzzy - have not been in there in years and not day to day on ERP so you probably have it fresher in your head than I do (Too many cobwebs since I am spanning products now).
many thanks for responding, it is correct but that is not the detail I have it like this
var shipHeadRow = custShipTs.ShipHead.NewRow (); It will have something to do with the epicor version, Iâm in 10
Here I am⌠in 2022⌠baffled as to why a RowMod=âUâ (for updating a ShipHead) â ended up removing it!
The ShipDtl lines are still there, btw.
If I was not shaven⌠I would be pulling my hair out!! I was originally doing an UpdateExt which has other problems â so I modify my Epicor Function to use the GetByID/Update approach. I spent hours on this â why did it remove the ShipHead!!
I search the site hoping someone shares a similar issue and come across this topic. This site is a life-saver at times!!
I believe this is an issue in BPM and Epicor Function land. Direct DLL BO does not seem to do this at all, which our legacy code still does. I have never known a ShipHead being removed like this.
Is there any other sections of Epicor we need to cater for this âfixâ other than ShipHead ??
⌠So I had a transfer order pack turn to 0 the other day and I am trying to figure out if it was my function for updating it or some other weird bug.
Are yâall saying that it completely deletes it or does it turn the packnum to 0?