Neu Auftragsimport über jtlwawiextern.dll - Auftrag erscheint nicht in den Listen bei Verkauf(F6)

  • Das Forum bekommt am 14.11.2019 zwischen 14:00 und (vorraussichtlich) 19:00 Uhr ein Update!
    In der Zeit wird das Forum leider nicht erreichbar sein!

    Das Update wird einige Stunden dauern und wir werden euch mit einer kleinen Hinweisseite auf dem laufenden halten.

Eiko

Aktives Mitglied
26. Juni 2017
51
1
#1
Hallo zusammen,

ich arbeite gerade an einer Software, welche programmgesteuert eine Auftrags-XML erzeugt und in die WaWi importiert. Der Import klappt so erstmal ohne Probleme, allerdings erscheint der Auftrag nur beim Kunden, in den Listen unter Verkauf (F6) ist er nirgendwo zu sehen. Fehlt der XML-Datei noch irgendwas, damit der Auftrag auch in den Listen zu sehen ist?

XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<tBestellungen>
    <tBestellung nRechnungErstellen="0" nRechnungDrucken="0" kRechnungsFormular="3" tKunde_kKunde="238" kFirma="1">
        <tBenutzer_kBenutzer>6</tBenutzer_kBenutzer>
        <nPlattform>5</nPlattform>
        <tbestellpos>
            <tArtikel_kArtikel>18</tArtikel_kArtikel>
            <cArtNr>ART-10006</cArtNr>
            <fVKNetto>0,88235294117647</fVKNetto>
            <fMwSt>19</fMwSt>
            <nAnzahl>1</nAnzahl>
            <nType>1</nType>
            <fRabatt>0</fRabatt>
            <fEKNetto>0</fEKNetto>
            <twarenlagerausgang>
                <kArtikel>18</kArtikel>
                <kWarenLagerEingang>0</kWarenLagerEingang>
                <kWarenLagerPlatz>0</kWarenLagerPlatz>
                <fAnzahl>1</fAnzahl>
                <kLagerArtikel>0</kLagerArtikel>
            </twarenlagerausgang>
        </tbestellpos>
        <tZahlung>
            <fBetrag>1,05</fBetrag>
            <nAnzahlung>0</nAnzahlung>
            <kZahlungsart>1</kZahlungsart>
            <cZahlungsArtName></cZahlungsArtName>
            <cHinweis></cHinweis>
        </tZahlung>
        <kSprache>2</kSprache>
        <cWaehrung>EUR</cWaehrung>
        <tVersandArt_kVersandArt>2</tVersandArt_kVersandArt>
        <dVersandt>2018-09-18</dVersandt>
        <dLieferdatum>2018-09-18</dLieferdatum>
        <dErstellt>2018-09-18 17:58:43</dErstellt>
        <kZahlungsArt>1</kZahlungsArt>
        <nZahlungsziel>0</nZahlungsziel>
        <cVersandlandWaehrung>EUR</cVersandlandWaehrung>
    </tBestellung>
</tBestellungen>
 

ManuelP

JTL-Wawi
Mitarbeiter
2. Januar 2012
2.063
215
Hückelhoven
#2
Hi,

es gibt dazu ne globale Einstellung, ich mein unter Vorgänge. Haben wir damals für LS Pos gemacht.

Gruß

Manuel
 

Eiko

Aktives Mitglied
26. Juni 2017
51
1
#3
Das habe ich probiert, funktioniert leider nicht.
 

Eiko

Aktives Mitglied
26. Juni 2017
51
1
#4
Habe es hinbekommen. Das tag "tlieferadresse" ist notwendig, sonst geht es nicht.
 

ManuelP

JTL-Wawi
Mitarbeiter
2. Januar 2012
2.063
215
Hückelhoven
#5
Huhu,

welche Version hast du im Einsatz? Mit der 1.4 ist die Validierung schärfer, dort dürfte der Auftrag ohne Lieferadresse auch nicht im Kunden zu sehen sein.

Gruß

Manuel
 

Eiko

Aktives Mitglied
26. Juni 2017
51
1
#6
Aktuell die 1.3.13.0

Der XML-Import scheint sowieso so seine Eigenarten zu haben... :)
 

ManuelP

JTL-Wawi
Mitarbeiter
2. Januar 2012
2.063
215
Hückelhoven
#7
Huhu,

na ich denke mit der 1.4 wird es besser. Haben ihn extra neu entwickelt. Du kannst dich gerne ins Pilotprogramm eintragen und selbst überzeugen :)

Gruß

Manuel
 

ManuelP

JTL-Wawi
Mitarbeiter
2. Januar 2012
2.063
215
Hückelhoven
#9
Hi,

das sollte mittlerweile laufen. Habe aber mal Kollegen den Beitrag hier geschickt.
LS Pos geht über die gleiche Schnittstelle, würde die nicht laufen dann würden unsere Alphapiloten Alarm schlagen, die nutzen zum Teil auch Kasse im Ladenlokal.

Gruß

Manuel
 

schmiede

Aktives Mitglied
19. Mai 2015
57
4
#10
Hi,

das sollte mittlerweile laufen. Habe aber mal Kollegen den Beitrag hier geschickt.
LS Pos geht über die gleiche Schnittstelle, würde die nicht laufen dann würden unsere Alphapiloten Alarm schlagen, die nutzen zum Teil auch Kasse im Ladenlokal.

Gruß

Manuel
Guten Morgen Manuel, hier mal unser Ticket dazu: Ticket#2018091710005557

Stand 18.09.2018 vom Support:
"aktuell funktioniert der Auftragsimport in der Pilotversion nicht. Wir arbeiten an einer Lösung und hoffen das diese in der nächsten Version enthalten ist."

Gruß
Alex
 

ChristopherL

Moderator
Mitarbeiter
2. August 2016
214
5
#11
Hi,

der aktuelle Import ist funktionstüchtig. Wir arbeiten daran dem Benutzer mehr Auskunft zu geben warum die Validierung fehlgeschlagen ist.
Im obigen XML müssen folgende Anpassungen durchgeführt werden:
  • Knoten "tBenutzer_kBenutzer" entfernen, da dieser beim Aufruf der Methode über geben wird
  • Knoten "nPlattform" in "nPlatform" umbenennen
  • Beim Wert des Knotens "fVKNetto" das ',' durch '.' ersetzten
  • Knoten "tZahlung" in "tzahlung" umbenennen
  • Knoten cVersandlandWaehrung entfernen
  • Beim Wert des Knotens "fBetrag" das ',' durch '.' ersetzten
  • Knoten "tlieferadresse" hinzufügen
Mit freundlichen Grüßen

ChristopherL
 
Zustimmungen: ManuelP

Eiko

Aktives Mitglied
26. Juni 2017
51
1
#12
Hi,

der aktuelle Import ist funktionstüchtig. Wir arbeiten daran dem Benutzer mehr Auskunft zu geben warum die Validierung fehlgeschlagen ist.
Im obigen XML müssen folgende Anpassungen durchgeführt werden:
  • Knoten "tBenutzer_kBenutzer" entfernen, da dieser beim Aufruf der Methode über geben wird
  • Knoten "nPlattform" in "nPlatform" umbenennen
  • Beim Wert des Knotens "fVKNetto" das ',' durch '.' ersetzten
  • Knoten "tZahlung" in "tzahlung" umbenennen
  • Knoten cVersandlandWaehrung entfernen
  • Beim Wert des Knotens "fBetrag" das ',' durch '.' ersetzten
  • Knoten "tlieferadresse" hinzufügen
Mit freundlichen Grüßen

ChristopherL
Die Fehler bei der Groß/Kleinschreibung etc. hab ich bereits korrigiert. Ist das Ersetzen von ',' durch '.' notwendig? Aktuell funktioniert es mit Komma, es kommt ja auch direkt so aus der Datenbank. Und wenn ich das richtig überblicke, kann ich das auch nicht beeinflussen. Ich übergebe als fVKNetto einen Double-Wert, der in der Überwachung beim Debuggen einen Punkt hat, aber im XML ist es ein Komma.

Code:
    Public Function CreateBestellPos(
                                    [...]
                                    fVKNetto As Double,
                                    [...]
                                    )
                                    
        Dim doc As XmlDocument = New XmlDocument
        Dim Rootnode As XmlNode = doc.CreateNode(XmlNodeType.Element, "tbestellpos", Nothing)
        doc.AppendChild(Rootnode)
        [...]
        Dim fVKNettoNode As XmlNode = doc.CreateNode(XmlNodeType.Element, "fVKNetto", Nothing)
        fVKNettoNode.AppendChild(doc.CreateTextNode(fVKNetto))
        Rootnode.AppendChild(fVKNettoNode)
        [...]
        Return doc
    End Function
Der Auftragsimport funktioniert soweit, zusätzlich habe ich einen Workflow, welcher die bezahlten importierten Aufträge ausliefert und den Bestand ausbucht. (Sofern Artikel mit Bestand) Was ich hier nicht hinbekomme: Wenn der Artikel ein Stücklistenartikel ist, dann trägt es den und die Artikel der Stückliste zwar in die Tabelle tbestellpos ein, es wird aber im Gegensatz zu einem direkt in der Wawi angelegten Auftrag beim zugrunde liegenden Artikel nicht die Anzahl eingetragen.

Als Beispiel: Ich verkaufe Koaxkabel auf 100m-Rollen und auch Meterware. Als Artikel für die Meterware habe ich einen Stücklistenartikel gemacht, welcher in den Stücklistenpositionen 0,01x der 100m-Trommel enthält. Bei einem händischen Auftrag stehen dann in der tBestellpos der 1m-Artikel mit der Anzahl 1 und der 100m-Artikel mit der Anzahl 0,01 wenn ich 1x1m in die Auftragspositionsliste packe. Mache ich einen Import, dann steht da der 1m-Artikel mit Anzahl 1 und der 100m-Artikel mit Anzahl 0. (Der 100m-Artikel wird jeweils automatisch in die tbestellpos eingetragen) Gibts do noch nen Trick oder funktioniert das nicht so, wie ich mir das denke?
 

ManuelP

JTL-Wawi
Mitarbeiter
2. Januar 2012
2.063
215
Hückelhoven
#13
Hi,

füg mal nur den Stücklistenvater ein, ggf. erkennt der Import autom. welches Kind dazu gehört.

Gruß

Manuel
 

Eiko

Aktives Mitglied
26. Juni 2017
51
1
#14
Ist nicht der Stücklistenvater der Artikel, der die einzelnen Bestandteile enthält? Den füge ich ja ein.
 

Eiko

Aktives Mitglied
26. Juni 2017
51
1
#15
Ich habe jetzt mal spaßeshalber den Artikel neu gemacht, um mir das mal anzusehen:

Artikel A - Kabeltrommel 100m, Stückzahl teilbar
Artikel B - Kabel 1m, Stücklistenartikel, Stücklisteninhalt 0,01x Artikel A

Lege ich einen Auftrag in der WaWi an und lege 1x den Artikel B in die Artikelliste, dann sehe ich beim Fertigstellen des Auftrages im SQL-ServerProfiler folgendes:

Artikel B mit Anzahl 1
SQL:
declare @p25 int
set @p25=4632
exec dbo.spBestellposAnlegen @kArtikel=1147,@kBestellung=983,@fVKPreis=1.05,@fMwSt=19,@nAnzahl=1,@fRabatt=0,@cString='Test Kabel',@fVKNetto=0.88235294117647,@cArtNr='ART-10667',@nType=1,@cHinweis='',@nHatUpload=0,@cUnique='',@kKonfigitem=0,@nDropshipping=0,@fEkNetto=0,@cOrderItemId='',@cItemId='',@cTransactionID='',@kAmazonBestellungPos=0,@nSort=1,@kBestellStueckliste=0,@cEinheit='Meter',@nEckDatenNichtAktualisieren=0,@kBestellpos=@p25 output
select @p25
und daraus resultierend Artikel A mit Anzahl 1
SQL:
declare @p25 int
set @p25=4633
exec dbo.spBestellposAnlegen @kArtikel=1148,@kBestellung=983,@fVKPreis=0,@fMwSt=0,@nAnzahl=1,@fRabatt=0,@cString='Test Kabeltrommel',@fVKNetto=0,@cArtNr='ART-10668',@nType=1,@cHinweis='',@nHatUpload=0,@cUnique='',@kKonfigitem=0,@nDropshipping=0,@fEkNetto=0,@cOrderItemId='',@cItemId='',@cTransactionID='',@kAmazonBestellungPos=0,@nSort=2,@kBestellStueckliste=4632,@cEinheit='Trommel',@nEckDatenNichtAktualisieren=0,@kBestellpos=@p25 output
select @p25


Mache ich einen Import, dann wir die Bestellposition mit Artikel B und Anzahl 1 angelegt
SQL:
declare @p25 int
set @p25=4634
exec dbo.spBestellposAnlegen @kArtikel=1147,@kBestellung=984,@fVKPreis=1.05,@fMwSt=19,@nAnzahl=1,@fRabatt=0,@cString='Test Kabel',@fVKNetto=0.88235294117647,@cArtNr='ART-10667',@nType=1,@cHinweis='',@nHatUpload=0,@cUnique='',@kKonfigitem=0,@nDropshipping=0,@fEkNetto=0,@cOrderItemId='',@cItemId='',@cTransactionID='',@kAmazonBestellungPos=0,@nSort=1,@kBestellStueckliste=0,@cEinheit='Meter',@nEckDatenNichtAktualisieren=0,@kBestellpos=@p25 output
select @p25
Aber das daraus resultierende Anlegen der Position für Artikel A hat als Anzahl 0
SQL:
declare @p25 int
set @p25=4635
exec dbo.spBestellposAnlegen @kArtikel=1148,@kBestellung=984,@fVKPreis=0,@fMwSt=0,@nAnzahl=0,@fRabatt=0,@cString='Test Kabeltrommel',@fVKNetto=0,@cArtNr='ART-10668',@nType=1,@cHinweis='',@nHatUpload=0,@cUnique='',@kKonfigitem=0,@nDropshipping=0,@fEkNetto=0,@cOrderItemId='',@cItemId='',@cTransactionID='',@kAmazonBestellungPos=0,@nSort=2,@kBestellStueckliste=4634,@cEinheit='',@nEckDatenNichtAktualisieren=0,@kBestellpos=@p25 output
select @p25


Beim Anlegen des Auftrages in der WaWi wird zwischendurch auch noch das hier ausgeführt, das fehlt beim Import völlig:
SQL:
SELECT * FROM tStueckliste WHERE kStueckliste = 15
go
SELECT vStandardArtikel.kArtikel,cArtNr,cName,fVKBrutto,fVKNetto,cAktiv,vLagerbestandEx.fLagerbestand AS nLagerbestand,cBarcode,fGewicht,cHersteller,cLagerAktiv,kStueckliste,cLagerArtikel,cTeilbar,cLagerKleinerNull,fPackeinheit,cHAN,cISBN,cUPC,cEPID,fEbayPreis,cErloeskonto, vLagerbestandEx.fVerfuegbar FROM vStandardArtikel LEFT JOIN vLagerbestandEx ON vLagerbestandEx.kArtikel = vStandardArtikel.kArtikel WHERE vStandardArtikel.kArtikel=1148
go
SELECT fEKNetto FROM vStandardArtikel WHERE kArtikel=1148
go


Kann das evtl. ein Bug sein?
 
Zuletzt bearbeitet:

ChristopherL

Moderator
Mitarbeiter
2. August 2016
214
5
#16
Morgen,

der Fehler, dass die Stücklisten nicht korrekt importiert werden, ist mit dem neuen Import behoben.

Mit freundlichen Grüßen

ChristopherL
 

nesh

Gut bekanntes Mitglied
14. Oktober 2012
164
6
Frankfurt am Main
#17
Hallo zusammen,
ich hätte hierzu auch mal eine Frage die mit die Suchfunktion nicht beantwortet hat.
Bei einem Auftragsimport via Datenbank wird der Kunde ja automatisch angelegt (Geht seit der 1.4 übrigens trotz "Gelöst" immer noch nicht).

Da ich die ExternDll bereits verwende, wollte ich diese Funktionalität (Auftrag Anlegen) nun dort auch mit rein Packen.

Bei allen Beispielen die hier im Form zu finden sind ist tKunde_kKunde mit einem Wert belegt.
Was aber, wenn es den Kunden gar nicht gibt? Kann ich tKunde_kKunde einfach weg oder leer lassen, oder muss ich den Kunden (irgendwie) vorher anlegen?

Danke schon mal vorab...
 

Philipp Laumen

Moderator
Mitarbeiter
16. Juli 2018
52
13
#18
Hallo nesh.

schau mal in deinem Installtionspfad der Wawi. Dort solltest du den Ordner "Importdateien" und die Datei Externdll.xsd finden - darin steht was angegeben werden muss.
Der Kunde muss dann gefüllt werden, kKunde MUSS weggelassen werden.
Hier z.B. kannst du bequem prüfen ob deine XML Datei valide ist:
https://www.liquid-technologies.com/online-xsd-validator

MfG
Philipp