We have a similar need but have handled it a bit differently. Years later, we still go back on forth on which would be best, our way or your planned way.
We also need to store original planned ship by date and also need to have a date that we use for schedule creep. You look to be planning to use UD field to hold date stamp original planned ship date and use ReqDate for schedule creep date. We do not do it this way. I do like your way in that required dates for materials will be aligned with when you currently think you’ll be able to ship. I do not like your way in that there is no way to tell in regards to material requirements dates what jobs have already been pushed back to what degree by just using timephase.
Any others out there who want to chime in on how they deal with their sales order release dates/schedule creep???
Here’s some code from a OrderRel In-Transaction data directive bpm that does the initial “get my ReqDate and put it into my latest scheduled shipping date (Date01)”. Date04 does not store anything for us and we use it for date comparison for null. It’s probably not the most efficient means of doing this, but it’s robust for years. You could toss your conditions in for blank date and reason code <> “” early on.
/* Replace the Latest Scheduled Ship Date (OrderRel.Date01) with OrderRel.ReqDate if Date01 is null*/
foreach (var ttOrderRel_xRow in ttOrderRel)
var ttOrderRelRow = ttOrderRel_xRow;
if ((DateTime?)ttOrderRelRow["Date01"] == (DateTime?)ttOrderRelRow["Date04"])
ttOrderRelRow["Date01"] = ttOrderRelRow.ReqDate;