Importieren von Aufträgen
Für den
Import von Aufträgen ist es notwendig zu spezifizieren, wie
ein
Auftrag auszusehen hat und was importiert werden soll. Daher
muss in einer Spezifikation bzw. Schemadefinition angegeben
werden, was bei einem
Auftrag importiert werden soll. Vor
der Erstellung eines neuen Auftragsimportes sollte idealerweise erst einmal
ein
Auftrag per Hand angelegt werden, um anhand dieses Musters einen entsprechenden
Auftragsimport zu entwickeln.
Hinweis
Ab der Version 6.0 von eEvolution®-ABizI
ist es möglich Aufträge, die in einem XML-Format
vorliegen auch ohne einen Biztalk Server zu importieren.
Es gibt verschiedene Formate mit Schemadefinitionen:
In früheren Zeiten war ebenfalls das Format
"dtd" (Abkürzung für Document
Type Definition) für die Definition von Spezifikationen gebräuchlich,
allerdings wird es heutzutage nur noch selten verwendet.
Microsoft entwickelte ein Format mit Namen
"xdr", welches für die so genannten docSpecs
innerhalb der ABizI verwendet
wurde. Allerdings ist dieses Format nur noch für den Biztalk Server 2002
interessant.
Hinweis:
Der
Biztalk Server 2002 ist dazu in der Lage xdr-Formate
in ein xsd-Format zu konvertieren.
Das Format "xsd"
ist das allgemein gebräuchliche Standard-Format bei der Definition von
Schemata von XML. Es gibt noch weitere Formate, die die
Funktionen von "xsd" erweitern können, diese
wurden aber bisher noch nicht in der ABizI
verwendet oder getestet.
Beispiele:
Historisch
bedingt finden sich in dem Verzeichnis Fileserver/Projekte/Apertum.40/Module/ABizI/Vorgaenge einige Beispiele für mögliche Spezifikationen
in unterschiedlichen Formaten.
Der
Import eines Auftrages wird hier anhand einer xsd-Datei durchgeführt
werden.

Hierbei handelt es sich um einen Beispieleintrag in einer xsd-Datei.
Die Definition eines Elementes enthält nicht nur
den Namen und Datentyp, sondern auch eine Dokumentation der Bedeutung
dieses Elementes. Diese ist direkt der Datenbankdokumentation (DBDoku)
entnommen, ist der Zusatz "(Kein
Import)" der Erklärung angefügt,
so wird dieses Element bei einem
Auftragsimport nicht automatisch importiert.
Ein mit diesem Zusatz versehendes Element kann nur importiert werden,
wenn die SQL-Statements entsprechend angepasst werden.
Achtung:
Nicht alle Elemente der xsd-Datei
entstammen einer einzigen Tabelle. Bei der Erstellung des Beispielformates
und der dazugehörigen SQL-Statements wurden die notwendigen Elemente verschiedenen
Tabellen und Sichten entnommen.Daher
ist ABIZI_Auftrag.xsd nicht identisch mit der Tabelle
Auftrag in
der Datenbank.
Erstellung eines Auftrags
Für die Erstellung eines Auftrages braucht man zumindest einen zu bestellenden
Artikel, die dazugehörige Menge, in der dieser bestellt werden soll und
einen Kunden, der diesen
Artikel bestellt. In der
XML-Datei finden sich daher i.d.R. mindestens folgende Angaben:
-
BESTMENGE, die Bestellmenge,
in der der Artikel bestellt werden soll.
-
ARTNR1, die Artikelnummer, anhand der der
Artikel eindeutig identifiziert werden kann.
Information:
Statt der Artikelnummer des Artikels (ARTNR1) kann auch die GTIN (EANNR) oder die kundenspezifische Artikelnummer (KNDARTNR) angegeben werden, um einen
Artikel eindeutig zu identifizieren, wobei folgende Voraussetzungen zu beachten sind:
-
Ist die ARTNR1 im Import angegeben, dann wird immer diese für die Identifizierung des Artikels verwendet.
-
Die EANNR wird nur verwendet, wenn keine ARTNR1 angegeben im Import angegeben wurde.
-
Die KNDARTNR wird nur verwendet, wenn weder eine ARTNR1 noch eine EANNR im Import angegeben wurde.
-
KNDNR1, die Kundennummer, anhand welcher der
Kunde eindeutig identifiziert werden kann.
Es können weitere Informationen an dieser Stelle hinterlegt werden, so kann z.B. mit < LFDLAGNR> das Lager angegeben werden, von welcher die jeweilige Auftragsposition entnommen werden soll.
Information:
Wird einer Auftragsposition
keine LFDLAGNR beim Importieren mitgegeben, so greift an dieser Stelle dagegen die folgende Logik:
-
Ist die Option „Standard- oder Artikellager mit der niedrigsten laufenden Nummer verwenden“ auf dem Reiter „Auftragsimport“ in der Systemkonfiguration nicht aktiv, dann wird diesen Auftragspositionen immer das unter „Lager, das standardmäßig verwendet wird“ hinterlegte Lager im Auftrag zugewiesen.
-
Ist die Option „Standard- oder Artikellager mit der niedrigsten laufenden Nummer verwenden“ auf dem Reiter „Auftragsimport“ in der Systemkonfiguration aktiv, dann wird diesen Auftragspositionen, dann wird das passende Lager dagegen in folgender Reihenfolge ermittelt:
-
Ist dem Artikel ein Standardlager zugeordnet, wird dieses verwendet.
-
Ist dem Artikel kein Standardlager zugeordnet, wird das dem Artikel zugeordnete Lager mit der niedrigsten laufenden Nummer verwendet.
-
Ist dem Artikel KEIN Lager zugeordnet, dann wird das unter „Lager, das standardmäßig verwendet wird“ hinterlegte Lager verwendet.
Beim Import einer unaufgelösten Handelsstückliste über den ABizI-Auftragsimport wird automatisch die Lagerauswahl für die enthaltenen Handelsstücklistenartikeln vorgenommen, wenn es sich um lagergeführte Artikel handelt.
Sollte dem Handelsstücklistenartikel kein Standardlager zugewiesen sein, so wird das Lager mit der niedrigsten laufenden Nummer verwendet.
Beispiel:
<ABizI typ="Auftrag" ver="000.001">
<AUFTRAG>
<KDNR1>297361</KDNR1>
<AUFTRAGPOSITION>
<ARTNR1>9100899</ARTNR1>
<BESTMENGE>15</BESTMENGE>
</AUFTRAGPOSITION>
</AUFTRAG>
</ABizI>
Die übrigen Daten des Auftrages
werden beim
Import entsprechend
den unter "
Auftragsimport" in den
ABizI-Systemeinstellungenhinterlegten Einstellungen ermittelt und in den
Auftrag eingetragen.
Optional kann pro
Auftrag der Bereich "IMPORTEINSTELLUNGEN" hinzugefügt werden, um die Einstellungen aus den ABiZI-
Systemeinstellungen auftragsspezifisch zu übersteuern. Es könnten dort aktuell folgende Einstellungen übersteuert werden:
-
PREISFINDUNG, mit Hilfe dieses Parameters kann die Preisfindung und von der Einstellung "Preisfindung beim Übertragen nochmal durchführen" auf dem Reiter "Auftragsimport"für einen Auftrag aktiviert oder deaktiviert werden:
-
Ist der Wert 0, wird keine Preisfindung für den Auftrag durchgeführt.
-
Ist der Wert 1, wird eine Preisfindung für den Auftrag durchgeführt.
Beispiel Preisfindung für Auftrag aktiviert:
<ABizI typ="Auftrag" ver="000.001">
<AUFTRAG>
<KDNR1>297361</KDNR1>
<AUFTRAGPOSITION>
<ARTNR1>9100899</ARTNR1>
<BESTMENGE>15</BESTMENGE>
</AUFTRAGPOSITION>
<IMPORTEINSTELLUNGEN>
<PREISFINDUNG>1</PREISFINDUNG>
</IMPORTEINSTELLUNGEN>
</AUFTRAG>
</ABizI>
Beispiel Preisfindung für Auftrag deaktiviert:
<ABizI typ="Auftrag" ver="000.001">
<AUFTRAG>
<KDNR1>297361</KDNR1>
<AUFTRAGPOSITION>
<ARTNR1>9100899</ARTNR1>
<BESTMENGE>15</BESTMENGE>
<PREIS>100.00</PREIS>
</AUFTRAGPOSITION>
<IMPORTEINSTELLUNGEN>
<PREISFINDUNG>1</PREISFINDUNG>
</IMPORTEINSTELLUNGEN>
</AUFTRAG>
</ABizI>
Die gewünschte Bestellmenge, Artikelnummer und Kundennummer
muss nun in die XML-Datei eingefügt werden, optional kann der Bereich "IMPORTEINSTELLUNGEN" hinzugefügt werde, um beispielsweise die Preisfindung zu übersteuern. Wird im Anschluss diese Datei
dann in dem Ordner abgelegt, der von der
eEvolution®-ABizI überwacht wird, sollte ein
Auftrag
mit den gegebenen Daten angelegt werden. Die übrigen Daten des Auftrages
werden entsprechend den
ABizI-Systemeinstellungen
unter "
Auftragsimport" hinterlegten Eigenschaften für den
Import von
Aufträgen in den neuen
Auftrag geschrieben.
Hinweis:
Die Einrichtung eines
Watchers können Sie unter
Eigenschaften & Einrichten eines Watchers
nachlesen.
Erscheint die Datei kurze Zeit später in dem Ordner, in dem die abgearbeiteten
Vorgänge gespeichert werden, so ist kein technischer Fehler beim
Import
aufgetreten.
Achtung:
Die Angaben,
die im Hauptfenster der ABizI gemacht werden sind identisch mit den Angaben,
die in die Log-Datei geschrieben werden.
Hinweis:
Der Inhalt
der Log-Datei wird alle 500KB durch sie selbst erneut überschrieben.
Sobald der
Watcher den
Auftrag entdeckt, wird
dieser gemäß den Einstellungen importiert. Die einzelnen Schritte zur
Vorbereitung eines Imports werden detailliert in
ABizIImportGUI.exe beschrieben, analog
dazu wird hier dem Vorgang eine Tracking ID zugewiesen,
der Vorgangstyp ermittelt, die Lizenzprüfung durchgeführt und nach erfolgreicher
Lizenzprüfung der Vorgang entsprechend denen in der dazugehörigen XML-Datei
gemachten Angaben importiert und erstellt.
Hinweis:
In einer XML-Datei können
auch mehrere, verschiedene Aufträge enthalten sein.
Beim
Import des Auftrages werden ggf. auch die Kundendaten
aktualisiert, falls entsprechende Angaben in der XML-Datei enthalten waren.
Hinweis
Das Aktualisieren der
Kundendaten kommt aus dem Webshop, wo der
Kunde seine Daten selbst pflegt
und es daher sinnvoll ist, diese Daten stets unverzüglich mit dem Erhalt
des letzten Auftrages zu aktualisieren.
Im Auftragsmodul sollte im Anschluss der auf
diese Art importierte
Auftrag mit den entsprechenden Daten aus der XML-Datei,
den
ABizI-Systemeinstellungen und
den
Default-Einstellungen des Kunden aus der eEvolution®-Auftragsverwaltung zu finden. Die XML-Datei
wird im Anschluss an das erfolgreiche Importieren in ein Verzeichnis verschoben,
wo alle verarbeiteten Importe gespeichert werden. Dieses Verzeichnis kann
bei einem unter
<processedpath>
angegeben werden. Weitere Informationen hierzu finden Sie unter
Eigenschaften
& Einrichten von Watchern. In den
ABizI-Systemeinstellungen,
die unter System ->
Systemeinstellungen
erreichbar sind, können auf dem Tab
Microsoft Biztalk Server an eEvolution® verschiedene Einstellungen und Optionen
für den
Import von Aufträgen festgelegt werden. Diese
werden in jedem Fall beim
Import von Aufträgen beachtet. Unter
Systemeinstellungen - Microsoft Biztalk Server nach Evolution® sind detaillierte Informationen
über diese Optionen und Einstellungen zu finden.
Wichtiger Hinweis:
Fehlen die Preise bzw.
ist der Preis eines Artikels auf 0 festgelegt, so liegt das i.d.R.
daran, dass keine Preise aus der XML-Datei übermittelt wurden. Für den
Fall, dass keine Preise über die XML-Datei übermittelt werden können/sollen,
muss in den
ABizI-Systemeinstellungen unter System
->
Systemeinstellungen -> Microsoft Biztalk Server an eEvolution® ein Häkchen bei der Option "Preisfindung beim Übermitteln
nochmal durchführen" in
der Feldgruppe
Sonstiges setzen.
Achtung:
Es ist
möglicherweise notwendig zusätzlich zum Preis auch den Bruttopreis zu
setzen.
Die in der Datenbank unter "
Einstellungen SQL-Statements" hinterlegten SQL-Befehle können beim
Import von Aufträgen über die
ABizIImportModule.config durch die Anpassung der Settings in der Modulkonfiguration übersteuert werden, so dass die in der
ABizIImportModule.config hinterlegten SQL-Befehle statt der unter "
Einstellungen SQL-Statements" verwendet werden. So können mehrere
Import-Module für Aufträge mit verschiedenen SQL-Statements implementiert werden.
Beispiel:
<Module name="Auftrag" version="*" type="nGroup.Info.eEvolution.Abizi.ABizIImport.Modules.Auftrag.AuftragImporter, nGroup.ABizI.ABizIImport.Modules.Auftrag">
<Settings>
<add name="Update_bei_Anlage" value="UPDATE auftrag SET vortext = :lsVortext, nachtext = :lsNachtext, bestnr = :oAuftrag[nA].sBESTNR, bestdatum = :oAuftrag[nA].dtBESTDATUM WHERE lfdangaufgutnr = :nlfdangaufgutnr"/>
<add name="Update_Pos" value="UPDATE ANGAUFPOS SET ABWEICH = 1, ABWABEZ1 = :oAuftrag[nA].oAuftragposition[nAp].sABWABEZ1, TEXT1 = :oAuftrag[nA].oAuftragposition[nAp].lsTEXT1, SEK = :oAuftrag[nA].oAuftragposition[nAp].nSEK, SEKPREIS = :oAuftrag[nA].oAuftragposition[nAp].nSEKPREIS, SEKLIEFNR = :oAuftrag[nA].oAuftragposition[nAp].nSEKLIEFNR, SEKDURCH = :oAuftrag[nA].oAuftragposition[nAp].sSEKDURCH WHERE ZUORDNR = :nZuordnr AND LFDANGAUFGUTNR = :AagLaufendeNummer"/>
<add name="Update_Pos_Langtext" value="UPDATE ANGAUFPOS SET LANGTEXT = 0 + CASE WHEN LEN(CONVERT(VARCHAR(MAX), TEXT1)) > 0 THEN 1 ELSE 0 END + CASE WHEN LEN(CONVERT(VARCHAR(MAX), TEXT2)) > 0 THEN 2 ELSE 0 END WHERE ZUORDNR = :nZuordnr AND LFDANGAUFGUTNR = :AagLaufendeNummer" />
<add name="Update_Kunde_Phase_Lesen" value="UPDATE kunde SET name1 = :sR_Name1, name2 = :sR_Name2, strasse = :sR_StrHnr, ort = :sR_Ort, plz = :sR_Plz, land = :sR_Land, telefon = :sR_Telefon, telefax = :sR_Telefax, email = :sEmail WHERE kndnr = :KundenNummer"/>
<add name="Update_Pos_Rabatt" value="update angaufpos set rabatt = :uPos.discount, posrabatt4 = :uPos.discount where lfdangaufgutnr = :uBestellung.lfdangaufgutnr and zuordnr = :nZuordnr" />
<add name="Update_Kunde_Nach_Insert" value="UPDATE kunde SET text1 = text1 WHERE kndnr = :KundenNummer" />
<add name="Update_Pos_Liefertermin" value="UPDATE angaufpos SET liefertermin = :dtLiefertermin, lieferwoche = :nLiefWoche, lieferjahr = :nLiefJahr WHERE zuordnr = :nZuordnr AND lfdangaufgutnr = :AagLaufendeNummer" />
<add name="Lookup_Kunde_Exist" value="SELECT max(kdnr1) into :sKdnr FROM kunde WHERE kdnr1 = :sKdnr"/>
</Settings>
</Module>
Fehlerbehandlung¶
Wurde ein
Auftragsimport nicht ordnungsgemäß durchgeführt, so wird i.d.R.
kein
Auftrag angelegt, allerdings die verwendete XML-Datei in das Verzeichnis
gelegt, wo alle abgearbeiteten Vorgänge gespeichert werden. .
Bei einem technischen Fehler wird die entsprechende XML-Datei in das
unter
<errorpath>
angegebene Verzeichnis verschoben. Die XML-Datei eines logischer Fehlers
wird im Gegensatz zu einem Technischen in dasselbe
unter
<processedpath>
angegebene Verzeichnis geschrieben, in das auch korrekt importierte XML-Datei
gesammelt werden.
In beiden Fällen werden keine Aufträge erzeugt. Auch bei einer Exception
während des Auftragsimportes landet die XML-Datei in einem Verzeichnis
mit den Aufträgen die korrekt importiert werden konnten. A allerdings
wird bei einem fehlgeschlagenen
Auftragsimport, der eine Exception geworfen
hat ein neuer
Auftrag angelegt, wenn dieser auch i.d.R.
unvollständig ist. Im Unterschied zu einem normalen technischen oder logischen
Fehler werden hier trotzdem die entsprechenden Aufträge angelegt, welche
allerdings unvollständig sind. Es handelt sich dabei um einen Bug, da
die Erzeugung von unvollständigen Aufträgen nicht erwünscht wird.
Verwandte Themen¶
Der Import aus anderen eEvolution®-ModulenDer generische ImportImportieren von GutschriftsvorgängenImport von Kunden inklusive abw. Liefer- und RechnungsempfängerImport von AnsprechpartnernEigenschaften
& Einrichten von WatchernSystemeinstellungen - Microsoft Biztalk Server nach Apertum