Wechseln zu: Navigation, Suche

Erweiterter XML-Auftragsimport

Schema

Für die einfache Validierung eines Auftragsimportes in Form einer XML Datei stellen wir Ihnen gerne ein Schema bereit. Dieses Schema deckt die grundlegend erforderlichen Informationen der XML Datei ab. Diese kann jedoch nach belieben erweitert werden. Dabei können alle Tabellenfelder aus der Tabelle 'tbestellung' in Form von Tags, bzw. deren Namen, direkt gefüllt werden (Siehe dazu Punkt 3).

Aufbau XML Datei

Im folgenden Kapitel wird der Aufbau der XML Datei beschrieben, dabei wird jeder XML Tag genauer erläutert. Eine Beispieldatei erhalten Sie bei uns auf Anfrage.

Header

Die XML Datei ist mit folgenden Kopfinformationen zu versehen:

<?xml version="1.0" encoding="ISO-8859-1"?>

Tag <tBestellungen>

Darunter befindet sich immer der Tag <tBestellungen>, welcher beliebig viele Bestellungen zum Import bereitstellen kann.

<?xml version="1.0" encoding="ISO-8859-1"?>
<tBestellungen>
     <tBestellung>
     </tBestellung>
     <tBestellung>
     </tBestellung>
     <tBestellung>
     </tBestellung>
</tBestellungen>

Tag <tBestellung>

Der Tag <tBestellung> enthält alle Tags die für den Import einer Bestellung verwendet werden. Zusätzlich stellt er Attribute bereit, über welchen der Import individuell gesteuert werden kann. Zum Beispiel kann hier definiert werden, ob ein Lieferschein erstellt oder gedruckt werden soll.

Folgende Attribute müssen im Tag <tBestellung> für den Import angegeben werden:

<xs:attribute name="nRechnungErstellen" type="xs:unsignedLong" use="optional" />
<xs:attribute name="nRechnungDrucken" type="xs:unsignedLong" use="optional" />
<xs:attribute name="nRechnungVorlageRechnung" type="xs:unsignedLong" use="optional" />
<xs:attribute name="nLieferscheinErstellen" type="xs:unsignedLong" use="optional" />
<xs:attribute name="nLieferscheinDrucken" type="xs:unsignedLong" use="optional" />
<xs:attribute name="kLLDruckVorlageLieferschein" type="xs:unsignedLong" use="optional" />
<xs:attribute name="kFirma" type="xs:Long" />
<xs:attribute name="tKunde_kKunde" type="xs:Long" />


??????
    1. kFirma: Gibt die Firma an, welche zum Auftrag hinterlegt werden soll (Tabelle: tfirma Feld: kFirma)
    2. tKunde_kKunde: Gibt den Kunden an, für welchen der Auftrag erstellt wird (Tabelle: tkunde Feld: kKunde)

Achtung: Der Kunde muss in der Datenbank, in welche die XML importiert wird, vorhanden sein.


    1. nLieferscheinErstellen: Gibt an ob ein Lieferschein zum importieren Auftrag erstellt werden soll.

Achtung:: Detailinformationen dazu werden unter den Auftragspositionen angegeben.


    1. nLieferscheinDrucken: Gibt an ob der erstellte Lieferschein gedruckt werden soll. (Erfordert: nLieferscheinErstellen = "1")
    2. kLLDruckVorlageLieferschein: Gibt die Druckvorlage zum Druck des Lieferscheins an (Tabelle: tDruckvorlage Feld: kLLVorlage)
    3. nRechnungErstellen: Gibt an ob eine Rechnung zum importierten Auftrag erstellt werden soll.
    4. nRechnungDrucken: Gibt an ob die erstelle Rechnung gedruckt werden soll (Erfordert: nRechnungErstellen = "1")
    5. kLLDruckVorlageRechnung: Gibt die Druckvorlage zum Druck der Rechnung an (Tabelle: tDruckvorlage Feld: kLLVorlage)

<tBestellung> Tags

Innerhalb des Tags <tBestellung> werden die Informationen zur Bestellung hinterlegt, die übertragen werden sollen.

Dies beinhaltet zum Einen Informationen, die direkt für den Auftrag erforderlich sind und zum Anderen Auflistungen der Positionen und Zahlungen. Des Weiteren werden hier die Lieferadresse und Zahlungsinformationen hinterlegt.

Im Folgenden werden die Tags beschrieben, die unmittelbar in die Erzeugung eines Auftrags einfließen.

<tBestellung nLieferscheinErstellen="1" nLieferscheinDruck ??????>
     <kSprache>1</kSprache>
     <cWaehrung>EUR</cWaehrung>
     <fGutschein>5.00</fGutschein>
     <cBestellNr>A4711-5</cBestellNr>
     <cInetBestellNr>Beleg 4711</cInetBestellNr>
     <tVersandArt_kVersandArt>2</tVersandArt_kVersandArt>
     <cVersandInfo>Versandinfo</cVersandInfo>
     <dVersandt>2012-08-01</dVersandt>
     <kLogistik>4</kLogistik>
     <dLieferdatum>2012-07-13</dLieferdatum>
     <cAnmerkung>Anmerkung</cAnmerkung>
     <dErstellt>2012-07-16</dErstellt>
    1. kSprache: Enthält einen Verweis auf die Sprache des Auftrags (Tabelle: tSprachen Feld: kSprache)
    2. cWaehrung: Währung wird hier als Text hinterlegt (im Beispiel: 'EUR')
    3. fGutschein: Enthält den Betrag eines Gutscheins, der vom Gesamt-Bestellwert des Auftrags abgezogen wird.
    4. cBestellNr: Enthält die Bestellnummer. Sie wird automatisch über den Nummernkreis der Wawi ermittelt, sofern hier keine Bestellnummer angegeben wird.
    5. cInetBestellNr: Enthält eine von der Wawi abweichende Bestellnummer. z.B. die Nummer eines Kassenbons.
    6. tVersandArt_kVersandArt: Enthält einen Verweis auf die Versandart, mit welcher der Auftrag ausgeliefert wird. (Tabelle: tversandart Feld: kSprache) Versandarten können in den Wawi Statistiken individuell ausgewertet werden. Um importierte Aufträge auszuwerten empfiehlt sich aber die Verwendung einer Erweiterung (siehe unten) um das Tag <nPlatform> (z.B. 151 für LS-Pos)
    7. cVersandInfo: Enthält Informationen zum Versand.
    8. dVersandt: Enthält das Datum, an welchem die Ware versendet wurde / wird. (Format: yyyy-mm-dd oder yyyy-mm-dd hh:nn:ss)
    9. kLogistik: Enthält einen Verweis auf den Logistiker, mit dem der Auftrag ausgeliefert wird. (Tabelle: tLogistik Feld: kLogistik) Bei z.B. Kassensystem, wo kein Logistiker erforderlich ist, kann hier einfach eine 0 übertragen werden.
    10. dLieferdatum: Enthält das voraussichtliche Lieferdatum (Format: yyyy-mm-dd oder yyyy-mm-dd hh:nn:ss).
    11. cAnmerkung: Enthält eine Anmerkung zu Auftrag.
    12. dErstellt: Enthält das Datum der Auftragserstellung. (Format: yyyy-mm-dd oder yyyy-mm-dd hh:nn:ss)

Tag <tzahlung>

Jeder Auftrag kann über beliebig viele Zahlungen bezahlt werden. Z.B. könnte ein Kunde einen Teil bar und einen anderen Teil per Überweisung bezahlen.

<tzahlung>
     <fBetrag>93.11</fBetrag>
     <nAnzahlung>0</nAnzahlung>
     <kZahlungsart>0</kZahlungsart>
     <cZahlungsArtName>Mit Bargeld</cZahlungsArtName>
</tzahlung>
<tzahlung>
     <fBetrag>10.00</fBetrag>
     <nAnzahlung>0</nAnzahlung>
     <kZahlungsart>2</kZahlungsart>
     <cZahlungsArtName></cZahlungsArtName>
</tzahlung>

Dazu können innerhalb des <tBestellung>-Tags beliebig viele Tags von <tzahlung> enthalten sein.

Folgende Tags müssen innerhalb von <tzahlung> enthalten sein:

    1. fBetrag: Enthält den Zahlbetrag.
    2. nAnzahlung: Gibt an ob es sich um eine Anzahlung handelt ("1" = Ja und "0" = Nein).
    3. kZahlungsart: Enthält einen Verweis auf die Zahlungsart. (Tabelle: tZahlungsart Feld: kZahlungsart) Ist die Zahlungsart nicht bekannt, kann hier einfach eine "0" eingetragen werden.
    4. cZahlungsArtName: Wird in kZahlungsart "0" hinterlegt, kann hier der Name der gewünschten Zahlungsart hinterlegt werden. Wird keine passende Zahlungsart zum angegebenen Namen gefunden, wird diese automatisch angelegt.

Tag <tbestellpos>

Jeder Auftrag beinhaltet beliebig viele Positionen, die im Tag <tbestellpos> einzeln definiert werden können. Hier bietet sich zusätzlich die Möglichkeit die Warenlagerausgänge zu einer Positionen anzugeben und somit den zu erstellenden (wenn gewünscht) Lieferschein zu definieren.

<tbestellpos>
     <tArtikel_kArtikel>33958</tArtikel_kArtikel>
     <cString>CTT_Variation_grün</cString>
     <cArtNr>CTT_Variation</cArtNr>
     <fVKNetto>5.46</fVKNetto>
     <fMwST>19.00</fMwST>
     <nAnzahl>5.00</nAnzahl>
     <nType>1</nType>
     <fRabatt>0.00</fRabatt>
     <tbestelleigenschaft>
          <kEigenschaftwert>255</kEigenschaftwert>
     </tbestelleigenschaft>
     <twarenlagerausgang>
          <kArtikel>33958</kArtikel>
          <kWarenLagerEingang>0</kWarenLagerPlatz>
          <kWarenLagerPlatz>1</kWarenLagerPlatz>
          <fAnzahl>5.00</fAnzahl>
          <kLagerArtikel>0</kLagerArtikel>
     </twarenlagerausgang>
</tbestellpos>

Folgende Tags müssen innerhalb eines <tbestellpos>-Tags enthalten sein:

    1. tArtikel_kArtikel: Beinhaltet einen Verweis auf den gewünschten Artikel und ist "0" bei Frei-Positionen (Tabelle: tartikel Feld: kArtikel).
    2. cArtNr: Beinhaltet die gewünschte Artikelnummer, die auf der Bestellung gedruckt werden soll (Im Normalfall <tartikel.cArtNr>).
    3. fVKNetto: Beinhaltet den Netto-Verkaufspreis (pro Einheit) der Position. Der Brutto-Verkaufspreis ermittelt sich automatisch.
    4. fMwSt: Beinhaltet die Mehrwertsteuer in % (z.B. '19.00' für 19 % MwSt).
    5. nAnzahl: Beinhaltet die Menge der Position.
    6. nType: Beinhaltet den Typ der Position (0 = Freiposition 1 = Artikel 2 = Versand, 11 = Gratisgeschenk, andere nTypes sind variabel und können ggf. von Plugins genutzt werden). Freiposition können z.B. von Kassensystem genutzt werden um Freitextpositionen zu erzeugen. Achtung: Hier wird immer Menge und Preis mit 0 gedruckt.
    7. fRabatt: Beinhaltet einen Rabatt auf die Position (wird automatisch vom VK abgezogen!).

Tag <tbestelleigenschaft>

Ein Tag <tbestellpos> kann beliebig viele Tags <tbestelleigenschaft> abbilden. Diese beinhalten jeweils einen Verweis auf eine kEigenschaftwert (entspricht einer Variation) (Tabelle: teigenschaftwert Feld: kEigenschaftWert)

Tag <twarenlagerausgang>

Eine Position innerhalb eines Auftrags kann über verschiedene Lieferungen erfüllt werden. Diese werden über die <twarenlagerausgang>-Tags innerhalb des <tbestellpos>-Tags definiert.

<twarenlagerausgang>
     <kArtikel>33963</kartikel>
     <kWarenLagerEingang>0</kWarenLagerEingang>
     <kWarenLagerPlatz>1</kWarenLagerPlatz>
     <fAnzahl>6.00</fAnzahl>
     <kLagerArtikel>0</kLagerArtikel>
</twarenlagerausgang>
<twarenlagerausgang>
     <kArtikel>33964</kartikel>
     <kWarenLagerEingang>0</kWarenLagerEingang>
     <kWarenLagerPlatz>1</kWarenLagerPlatz>
     <fAnzahl>4.00</fAnzahl>
     <kLagerArtikel>0</kLagerArtikel>
</twarenlagerausgang>

Folgende Tags müssen innerhalb eines <twarenlagerausgang>-Tags enthalten sein:

kArtikel: Beinhaltet den auszuliefernden Artikel. Bei Stücklisten z.B. werden hier die Komponenten ausgeliefert und mit der tatsächlich ausgebuchten Menge angegeben. Beispiel: Eine Stückliste als Position mit der Menge 2 mit 2 Komponenten (jeweils 2 Stück in Komponente) ergibt zwei Tags von twarenlagerausgang: 1. Artikel Komponente 1 mit Menge 4 (<Menge der Stückliste> (2) * <Anzahl der Komponenten in der Stückliste> (2) = (4))
1. Artikel Komponente 2 mit Menge 4 (<Menge der Stückliste> (2) * <Anzahl der Komponenten in der Stückliste> (2) = (4))

kWarenLagerEingang: Chargen- und MHD-Artikel werden immer einem Wareneingang zugeordnet, der den Eingang des Mindesthaltbarkeitsdatums-, bzw. der Charge definiert. Dazu kann der entsprechende Wert aus dem Feld kWarenLagerEingang aus der Tabelle tWarenLagerEingang mit der gewünschten Chargennummer, bzw. dem gewünschten MHD referenziert werden. Achtung: Ein kWarenLagerEingang bezieht sich auch IMMER auf ein ein kWarenLagerPlatz (Tabelle: tWarenLagerPlatz Feld: kWarenLagerPlatz). Um zu prüfen, ob noch genügend Bestand auf einem MHD- oder einer Charge liegt, können die kumulierten Mengen in tWarenLagerEingang, denen von tWarenLagerAusgang gegenübergestellt werden.

Die Ermittlung per SQL-Abfrage kann beispielsweise so erfolgen:

SELECT
     tWarenLagerEingang.kWarenLagerEingang,
     tWarenLagerEingang.kArtikel,
     tWarenLagerEingang.cChargenNr,
     tWarenLagerEingang.dMHD,
     tWarenLagerEingang.fAnzahl     -     tWarenLagerAusgang.fAnzahl As fVerfuegbar
FROM
     tWarenLagerEingang
LEFT JOIN
(
     SELECT tWarenLagerAusgang.kWarenLagerEingang, ISNULL(SUM(tWarenLagerAusgang.fAnzahl), 0.0) AS fAnzahl FROM tWarenLagerAusgang
     GROUP BY tWarenLagerAusgang.kWarenLagerEingang
) AS WarenLagerAusgang ON tWarenLagerEingang.kWarenLagerEingang = WarenLagerAusgang.kWarenLagerEingang
WHERE
     tWarenLagerEingang.fAnzahl > WarenLagerAusgang.fAnzahl
     AND (tWarenLagerEingang.cChargenNr IS NOT NULL OR tWarenLagerEingang.dMHD IS NOT NULL)
    1. kWarenLagerPlatz: Enthält den WarenLagerPlatz, von welchem die Ware geliefert wird. (Tabelle: tWarenLagerPlatz Feld: kWarenLagerPlatz)
    Das entsprechende WarenLager befindet sich in der Tabelle tWarenlager.
    1. fAnzahl: Gibt die Anzahl des Warenlagerausgangs an (Bei Seriennummernartikeln z.B. immer 1 pro Seriennummer).
    2. kLagerArtikel: Bei der Auslieferung von Seriennummern-Artikeln muss der entsprechende Lagerartikel angegeben werden, der die gewünschte Seriennummer enhält.

Die verfügbaren Seriennummern/ kLagerArtikel können z.B. mit folgendem SQL ermittelt werden:

SELECT * FROM tlagerartikel
WHERE kLieferscheinPos IS NOT NULL

Tag <tlieferadresse>

Über den Tag <tlieferadresse> wird einem Auftrag die entsprechende Lieferadresse zugewiesen. Im Folgenden werden die selbsterklärenden Tags innerhalb von <tlieferadresse> angegeben, bei allen handelt es sich um Freitext-Felder:

<tlieferadresse>
     <cAnrede>Herr</cAnrede>
     <cVorname>Max</cVorname>
     <cNachname>Mustermann</cNachname>
     <cTitel>Dr.</cTitel>
     <cFirma>JTL-Software</cFirma>
     <cStrasse>Rheinstraße 7</cStrasse>
     <AdressZusatz></AdressZusatz>
     <cPLZ>41836</cPLZ>
     <cOrt>Hückelhoven</cOrt>
     <cBundesLand>NRW</cBundesLand>
     <cLand>Deutschland</cLand>
     <cTel>024373 9675020</cTel>
     <cMobil>0123 456789456</cMobil>
     <cFax>024373 9675021</cFax>
     <cMail>lieferadresse@jtl-software.de</cMail>
</tlieferadresse>

Tag <tzahlungsinfo>

Der Tag <tzahlungsinfo> definiert zusätzliche Zahlungsinformationen zu einem Auftrag. Bis auf den Tag <dGueltigkeit> (Typ Datum, Format: yyyy-mm-dd oder yyyy-mm-dd hh:nn:ss) handelt es sich hierbei ausschließlich um Textfelder:

<tzahlungsinfo>
     <cBankName/>
     <cBLZ/>
     <cKontoNr/>
     <cKartenNr/>
     <dGueltigkeit/>
     <cCVV/>
     <cKartenTyp/>
     <cInhaber/>
</tzahlungsinfo>

Erweiterung um weitere Felder

Innerhalb des Tags <tbestellung> können weitere Tags angegeben werden, die in dieser Dokumentation nicht aufgeführt sind. Dabei können alle Felder aus der Tabelle tBestellung direkt angesprochen werden.

Beispiel: Für die Erstellung eines reinen Angebotes, kann z.B. folgender Tag hinzugefügt werden:

<cType>A</cType>

Soll der Bestellung ein anderer Benutzer, als der über den der Import durchgeführt wird zugeordnet werden, kann dies über folgenden Tag vorgenommen werden: <tBenutzer_kBenutzer>3<tBenutzer_kBenutzer> (Tabelle: tbenutzer Feld: kBenutzer)

Das Gleiche funktioniert auch bei <tZahlung>, wenn hier zum Beispiel ein eigener Hinweis gewünscht ist, könnte <tZahlung> einfach um einen weiteren Tag erweitert werden:

<cHinweis>Ihr Hinweis</cHinweis>

Ansonsten würde der Hinweis einer Zahlung mit "XML-Import" vorbelegt werden.

Beispiele XML / XSD

Unten finden Sie Beispiel XML- sowie XSD-Dateien. Klicken Sie hierzu auf den entsprechenden Link und laden die PDF-Datei herunter (Rechtsklick auf den Link > Datei/Ziel speichern unter...).

Datei:Beispiel Gutschrift.pdf
Datei:Beispiel Auftrag XML.pdf
Datei:Gutschrift Import XDS.pdf
Datei:Auftrag Import XSD.pdf