Hallo, ich habe ein kleines Problem, ich lege über SQL neue XML Imports an.
Wir haben das schon recht lange im Einsatz, das wir die Aufträge aus einem Web System über die SQL Importieren. Was eigentlich auch immer stabil funktioniert hat, seit der letzten Version haben wir immer wieder mal das Problem, dass die Aufträge aber nicht angelegt werden, aber der XML Import wird, dennoch verarbeitet.
Ich versuche mal mein weg zu beschreiben.
Wir erstellen eine XML die schaut den so aus
Ich Importiere die XML daten über PHP über ein SQL Insert
soweit funktioniert es auch alles, nur das nicht immer der Auftrag übernommen wird, in meinen Tests habe ich die Aufträge die nicht importiert worden sind manuell im XML Import eingetragen was, den auch immer funktioniert hat, ich habe auch beobachtet ob der SQL Insert in der Datenbank angekommen ist, was er jedes Mal auch war, aber es wird immer wieder kein Auftrag dazu angelegt.. Ich habe es bis jetzt nicht verstanden da es willkürlich mal passiert und den funktioniert es wider, es ist auch kein fehler aufgetreten, so wie ich das immer kannte, wenn ich mal eine fehlerhafte XML in die Tabelle geschrieben habe den ist bei v1.5 der Worker abgestürzt was zum Glück bei der 1.6 nicht mehr der Fall ist aber den hat das System die fehlerhaften Importe weiter in der Tabelle belassen, was auch immer noch der Fall ist, fehlerhafte XML Imports werden, den nicht aus der Tabelle gelöscht was auch gut so ist..
Vielleicht ist das Problem bekannt oder ihr könnt mir helfen das Problem zu beheben, es ist auf jeden Fall sehr Spuki das Problem...
PS. Für alle, die eine Automatischen XML Import benötigen. Die Lösung ist eigentlich perfekt, man kann es über verschiedene Schnittstellen verwenden. Entweder hat man einer direkten DB Zugang auf dem Server oder man richtet sich eine kleine API Schnittstelle ein worüber man die XML Daten an den Server überträgt.
Wir haben auch länger dran getüftelt und da ich die frage auch schon in den Kundenfragen bei YouTube mitbekommen habe, wäre das eine Lösung die sowas benötigen.
Wir haben das schon recht lange im Einsatz, das wir die Aufträge aus einem Web System über die SQL Importieren. Was eigentlich auch immer stabil funktioniert hat, seit der letzten Version haben wir immer wieder mal das Problem, dass die Aufträge aber nicht angelegt werden, aber der XML Import wird, dennoch verarbeitet.
Ich versuche mal mein weg zu beschreiben.
Wir erstellen eine XML die schaut den so aus
XML:
<?xml version="1.0" encoding="UTF-8"?>
<tBestellungen>
<tBestellung cRechnungsNr="" kFirma="2" kBenutzer="3">
<cSprache>ger</cSprache>
<cWaehrung>EUR</cWaehrung>
<cBestellNr/>
<cExterneBestellNr>5117</cExterneBestellNr>
<cVersandartName/>
<cVersandInfo/>
<dVersandDatum/>
<cTracking/>
<dLieferDatum>2022-07-26</dLieferDatum>
<cKommentar/>
<cBemerkung>FRECHEN</cBemerkung>
<cZahlungsartName>Lastschrift</cZahlungsartName>
<dBezahltDatum/>
<twarenkorbpos>
<cName>Leergutabholung 20.000L</cName>
<cArtNr>TSFHKLG</cArtNr>
<cBarcode/>
<cEinheit/>
<fPreisEinzelNetto>0.00</fPreisEinzelNetto>
<fPreis>0.00</fPreis>
<fMwSt>19</fMwSt>
<fAnzahl>1</fAnzahl>
<cPosTyp>standard</cPosTyp>
<fRabatt>0</fRabatt>
<twarenkorbposeigenschaft/>
</twarenkorbpos>
<tkunde>
<cKundenNr>13407623</cKundenNr>
<cAnrede>Herr</cAnrede>
<cTitel/>
<cVorname>Stephan</cVorname>
<cNachname/>
<cFirma>Firmenname (Datenschutz)</cFirma>
<cStrasse>Obertorstr. 132</cStrasse>
<cAdressZusatz>Öffnungszeiten: Mo-Fr 7:00-18:00</cAdressZusatz>
<cPLZ>35410</cPLZ>
<cOrt>Hungen</cOrt>
<cBundesland/>
<cLand>Deutschland</cLand>
<cTel/>
<cMobil/>
<cFax/>
<cMail>info@datenschutz.de</cMail>
<cUSTID/>
<cWWW/>
<cHerkunft/>
</tkunde>
<tlieferadresse>
<cAnrede/>
<cVorname/>
<cNachname/>
<cTitel>-</cTitel>
<cFirma>Firmenname (Datenschutz)</cFirma>
<cStrasse>Obertorstr. 132</cStrasse>
<cAdressZusatz/>
<cPLZ>35410</cPLZ>
<cOrt>Hungen</cOrt>
<cBundesland/>
<cLand>Deutschland</cLand>
<cTel/>
<cMobil/>
<cFax/>
<cMail/>
</tlieferadresse>
<tzahlungsinfo>
<cBankName/>
<cBLZ/>
<cKontoNr/>
<cKartenNr/>
<dGueltigkeit/>
<cCVV/>
<cKartenTyp/>
<cInhaber/>
<cIBAN/>
<cBIC/>
</tzahlungsinfo>
</tBestellung>
</tBestellungen>
Ich Importiere die XML daten über PHP über ein SQL Insert
PHP:
$Data = "Hier der XML Code des Auftrags";
$Plattform = "5"; // XML IMPORT
$Rechnung = "0";
$MSSQLPDO = JTL::getInstanceJTLDB();
$sql = "INSERT INTO dbo.tXMLBestellImport (cText, nPlattform, nRechnung) VALUES (?,?,?)";
$stmt = $MSSQLPDO->prepare($sql);
$stmt->execute([$Data, $Plattform, $Rechnung]);
$lastId = $MSSQLPDO->lastInsertId();
if(!empty($lastId)) {
$status = true;
} else {
$status = true;
}
soweit funktioniert es auch alles, nur das nicht immer der Auftrag übernommen wird, in meinen Tests habe ich die Aufträge die nicht importiert worden sind manuell im XML Import eingetragen was, den auch immer funktioniert hat, ich habe auch beobachtet ob der SQL Insert in der Datenbank angekommen ist, was er jedes Mal auch war, aber es wird immer wieder kein Auftrag dazu angelegt.. Ich habe es bis jetzt nicht verstanden da es willkürlich mal passiert und den funktioniert es wider, es ist auch kein fehler aufgetreten, so wie ich das immer kannte, wenn ich mal eine fehlerhafte XML in die Tabelle geschrieben habe den ist bei v1.5 der Worker abgestürzt was zum Glück bei der 1.6 nicht mehr der Fall ist aber den hat das System die fehlerhaften Importe weiter in der Tabelle belassen, was auch immer noch der Fall ist, fehlerhafte XML Imports werden, den nicht aus der Tabelle gelöscht was auch gut so ist..
Vielleicht ist das Problem bekannt oder ihr könnt mir helfen das Problem zu beheben, es ist auf jeden Fall sehr Spuki das Problem...
PS. Für alle, die eine Automatischen XML Import benötigen. Die Lösung ist eigentlich perfekt, man kann es über verschiedene Schnittstellen verwenden. Entweder hat man einer direkten DB Zugang auf dem Server oder man richtet sich eine kleine API Schnittstelle ein worüber man die XML Daten an den Server überträgt.
Wir haben auch länger dran getüftelt und da ich die frage auch schon in den Kundenfragen bei YouTube mitbekommen habe, wäre das eine Lösung die sowas benötigen.
Zuletzt bearbeitet: