What am I trying to do: Use a Data Directive instead of the built-in RDD for EDI 855 (Order acknowledgements).
Why am I doing this: RDDs have a history of moving around during updates.
I have a Data Directive connected to the OrderHed.Update/In-Transaction.
The custom code is tied to a field status change in the Order Header.
During the data import from Demand to Sales Order Entry the status field is updated.
The status field can also be manually changed in the Sales Order Entry Screen.
The custom code is pulling from the OrderHed and OrderDtl.
The Data directive works when I manually change the status field and when I import an EDI PO through Demand Management.
I do not get OrderDtl output when the Data Directive is executed when the order comes from Demand Management.
If I manually change the status field, then the Data Directive output has OrderDtl data.
I am not sure if this is a timing issue or if I am going about this the wrong way.
I did try the following with no luck:
"for (int i=1; i<=150000; i++)
{
// test
}
I MUCH prefer an 855 generated from a BPM over the Epicor RDD. I find that over time, you tend to get customers who have a variety of special requirements that are simply not handled well with an RDD. However, I’ve not tried to automate the 855 as soon as you get the order - that sounds more like it’s a 997. We’ve always had users review the order and manually kick off the 855. That allows them to do things like check inventory levels, review ship by dates, and so on.
What I’ve developed over time as a “best approach” is this: First, I avoid using the Epicor “EDIAck” field to send the acknowledgement. I’ve found sometimes Epicor changes this field when I’ve not wanted it to, that’s probably fixed in later versions of Epicor, but I still shy away from it. I usually have a UD field that I use (example: EDI855Sent_c). Also, by using my own UD field, it means I have complete control (bah, hah, ha). The BPM trigger (on the OrderHed.Update method) is based on that field changing from FALSE to TRUE.
Then, in the Order Entry program, I have a shape for 855’s. The shape is not visible if EDIOrder=FALSE (non-EDI orders). For EDI orders, the shape is yellow when EDI855Sent_c = FALSE with a caption “855 not sent”, and green when EDI855Sent_c = TRUE with a caption “855 Sent”. I add a click event to it, so when a user clicks the epiShape, it sets EDI855Sent_c to TRUE, which invokes the BPM. If they click when it’s already been sent, I present a dialog box of “do you want to resend…”, and if they answer yes, it toggles the EDI855Sent_c to false, saves, then back to true and saves again, thus resending the 855.
They usually have a dashboard of open EDI orders that are not acknowledged that they work from.
Currently we receive about 200 EDI POs a day. Manually acknowledging each one is not an option.
The 997 is generated by the EDI software once it is received.
@SimsTrak we are using a UD field in the Sales Order Entry screen as the trigger. If an order needs to be modified, then the field can be manually updated. Once the Order is saved then the 855 data is exported out. This part is working perfectly.
The auto part does kick out the file, but it is missing the orderdtl data.