I'm currently starting a new sub project where I will:
- Retrieve the order information from our mainframe
- Save the order information to our web-apps' database
- Send the order as EDI (either D01b or D93a)
- Receive the order response, despatch advice and invoice messages
- Do all kinds of fun things with the resulting datasets.
However I am struggling with my initial class designs.
The order information will be retrieved from the mainframe which will result in a "AOrder" class, this isn't a problem, I am not sure about how to mold this local object into an EDI string.
Should I create EDIOrder/EDIOrderResponse/etc classes with matching decorators (EDIOrderD01BDecorator, EDIOrderD93ADecorator)? Do I need builder objects or can I do:
// $myOrder is instance of AOrder $myOrder->toEDIOrder(); $decorator = new EDIOrderD01BDecorator($myOrder); $edi = $decorator->getEDIString();
And it'll have to work the other way around as well. Is the following code a good way of handling this problem or should I go about this differently?
$ediString = $myEDIMessageBroker->fetch(); $ediOrderResponse = EDIOrderResponse::fromString($ediString);
I'm just not so sure about how I should go about designing the classes and interactions between them.
Thanks for reading and helping.