openTRANS Anbindung
openTRANS ist ein offener XML-Standard entwickelt auf Initiative des Fraunhofer IAO zur Unterstützung des elektronischen Datenaustauschs (EDI) bei Geschäftstransaktionen zwischen Handelsunternehmen.
Im Benutzerhandbuch wird ein konkreter Fall beschrieben.
Im ersten Schritt wird das Konvertieren der openTRANS-ORDER Nachrichten implementiert, um Adempiere-Order zu erzeugen. Im zweiten Implementierungsschritt werden alle Methoden implementiert, die zum Produktumfeld gehören. In Folgeschritten wird der Auftrag mit seinen Positionen und das Abhandeln der Lieferavis implementiert.
OpenTRANS nach ADempiere
Wie geschieht das Mapping der OpenTRANS-Objekte in adempiere-Objekte?
Dieser Transformation geschieht in zwei Schritten
standard JAXB-unmarshaller, daraus entstehen openTRANS-ORDER pojo's in Methode
Transformer.toModel(...)
in packagecom.klst.opentrans
Mapping openTRANS-pojo nach adempiere-Objekte
Beispiel: diese Methode liest ein xml-openTRANS-ORDER und liefert die pojo Klasse ORDER
Grober Aufbau einer OpenTRANS-Order
Die Details kann man im xsd-file nachlesen, welches sich im opentrans.jar befindet. ORDER besteht aus 1 bis n ORDER_ITEMs, die detailieter beschrieben werden:
Die openTRANS-pojos werden in folgende adempiere-Objekte abgebildet:
ORDER -> MOrder
ITEM -> MOrderLine
PRODUCT_ID -> MProduct , dabei werden bei Bedarf neue Produkte angelegt
ORDER_UNIT -> MUoM, der oben erwähnte "Six pack", oder PCE im xml-Beispiel
...
Das Abbilden von openTRANS PRODUCT in adempiere-MProduct ist einiges kompelxer als die simple Maßeinheit, denn es müssen diverse DB-Modell-Randbedingungen beachtet werden (Preise, Steuern, Lieferant, Produktkategorie, Maßeinheit).
Prozessklassen
CreateProductProcess
CreateProductProcess
Abschliessend wird noch eine Prozessklasse CreateProductProcess
benötigt, die adempiere-Produkte für mehrere OpenTRANS-Order erstellt, etwa mit solcher Methode:
createProductIfNew(ORDERITEM item, int dropShipBPartner_ID) ...
CreateProductProcess
kann dann überwacht oder im Hintergrund den ersten Teil des oben beschriebenen Workflows verrichten. Unser Kunde hat sich für den überwachten Ablauf entschieden, da damit eventuelle Störungen sofort erkennbar sind. Der zuständige Mitarbeiter startet den Prozess per Mausklick und bekommt gleich ein Feedback wie viele Objekte erstellt wurden:
CreateOrderProcess
CreateOrderProcess
Nachdem alle Produkte für den Auftrag erstellt sind, kann mit CreateOrderProcess
der adempiere-Auftrag erstellt werden. Damit ist die Bearbeitung der openTRANS-ORDER abgeschlossen.
Avis Prozesse
Der Lieferavis (in openTrans Terminologie DISPATCHNOTIFICATION), also die Ankündigung einer Lieferung hat in ADempiere kein Gegenobjekt. Am ehesten kann man DISPATCHNOTIFICATION auf einen Lieferschein abbilden. Die Lieferavis, die wir bekommen sind in einem XML-Format, das nicht ganz den Vorgaben von opentrans_2_0.xsd
entspricht. Die Unterschiede sind gering. Daher werden die Avis-Datenströme mittels AvisPipedInputStream
so angepaßt, damit sie den entsprechenden openTRANS Vorgaben entsprechen.
Für das Lieferavis gibt es zwei Prozesse:
AvisPrepareProcess
erstellt eine Kopie des XML-Avis im openTRANS 2.0 Format. Mit einer CSS-Definition kann der Nutzer die Avis Inhalte zur Kontrolle im XML-Browser (IE) lesen.DispatchNotificationProcess
beinhaltet die eigentliche Transformation und erstellt zum Avis den entsprechenden adempiere-Lieferschein, aus dem die Rechnung generiert werden kann.
Last updated