Neu Versanddatenimport / Versanddatenaustausch (automatischer Abgleich aktiv) ... Polling-Dienst

wawi-dl

Sehr aktives Mitglied
29. April 2008
6.801
837
Hallo zusammen,

wir versuchen aktuell einen Prozess bei uns zu automatisieren, daher mal die Frage in die Runde.
Die Frage gab es ja schon oft, hole das Thema aber mal explizit neu hoch, um evtl. eine Lösung zu erarbeiten.

Einen direkten DB-Eingriff wollen wir vermeiden, Rest-API ist ebenfalls keine Option (Kosten/Nutzen).

Seitens JTL gibt es den manuellen Versanddatenimport oder den Versanddatenaustausch den man als Art Polling laufen lassen kann (alle 15s).

Sehe ich das richtig, dass der Versanddatenaustausch aktuell die einzige Option ist, dies zu automatisieren?
Wir verwenden weder Packtisch+ noch WMS, können wir dann den Dienst verwenden oder muss z.B. auf dem Server immer der Packtisch+ geöffnet sein?

Vielen Dank.
 

ple

Sehr aktives Mitglied
20. August 2019
914
196
Moin, ich mache das gleiche wie du. Bei mir läuft aktuell noch der Packtisch, damit die Dropshipping bestellungen den Trackingcode vom Lieferanten erhalten. Er hat ebenfalls ne Wawi, daher konnte ich das recht einfach anbinden. Werde aber demnächst ausweichen auf eine Middleware, der die Versanddaten dann in supabase schreibt, die ich dann mit der Middleware wieder abhole. Ob ich dann direkt in die Datenbank schreibe oder es über den Versandimport des Packtisch mache, das weiß ich noch nicht. Ich glaube aber, ich werde das aber direkt in den SQL schreiben. Problematisch werden dann mehrere Pakete, falls es dazu kommt.
Beachte beim Packtisch, der Versandname muss gleich sein, sonst klappt das mit der Trackingurl nicht. Glaube ich bin dann ausgewichen auf Parcelapp, dann ist der Link immer gleich.

Gruß
 

wawi-dl

Sehr aktives Mitglied
29. April 2008
6.801
837
Danke dir, also muss im Grunde Packtisch+ offen sein, JTL Wawi selbst reicht aber nicht?
Das wollten wir nicht ...

Wir setzen es gerade doch ganz anders um, weil wir sämtliche Prozesse JTL DB intern einhalten wollen.
Ein Test dazu steht gerade kurz bevor, im Grunde haben wir Deutsche Post + DHL API selbst angebunden, alle Infos vorhanden.

Wir legen eine Importvorlage als CSV auf dem Server ab, Labels haben wir ja schon, es werden dann nur noch die Sendungsdaten importiert.

Import erfolgt ganz klassisch über den Worker, wir legen uns dazu einen manuell Workflow an, tragen dann in der Workflow-Queue diese Zeile ein.
Beim nächsten Lauf wird dann in Schritt 1 für den Auftrag der Versand gesetzt ohne Versanddatum, es wird ein Lieferschein erzeugt.
In Schritt 2 werden dann die Sendungsdaten und X Pakete eingetragen und Versanddatum gesetzt, so haben wir alle Pakete je Lieferschein + Sendungsdaten drin.

Teillieferungen haben wir selten, hier wird manuell eine Teillieferung vorab erstellt, damit ein Lieferschein existiert und dann die Daten importiert.

Uns fehlt jetzt nur noch die Validierung, ob die Sendungsdaten auf allen Plattformen ankommen, eBay/AMAZON/Shops etc. ... aktuell scheint der Trigger "Versanddatum" zu sein.
 

mvh

Sehr aktives Mitglied
26. Oktober 2011
1.258
489
Ok. Dann mache es entweder mit Extern-DLL:
Code:
using System;
using System.Collections.Generic;
using jtlCore.Classes.Versand.VersanddatenImport;

namespace JTLwawiExtern.VersanddatenImport
{
    /// <summary>
    /// Collects shipping data entries and applies them to JTL-Wawi via the shipping data import manager.
    /// </summary>
    // Token: 0x02000007 RID: 7
    public class VersanddatenImporter
    {
        /// <summary>
        /// Adds a shipping data entry to the collection to be imported.
        /// </summary>
        /// <param name="id">The identifier of the order or shipment the entry belongs to.</param>
        /// <param name="versandDatum">The shipping date.</param>
        /// <param name="trackingId">The tracking id assigned by the shipping provider.</param>
        /// <param name="versandinfo">Additional shipping information.</param>
        // Token: 0x06000040 RID: 64 RVA: 0x00003811 File Offset: 0x00001A11
        public void Add(string id, DateTime versandDatum, string trackingId, string versandinfo)
        {
            this._daten.Add(new VersandImportdaten
            {
                Id = id,
                TrackingId = trackingId,
                VersandDatum = versandDatum,
                VersandInfo = versandinfo
            });
        }

        /// <summary>
        /// Imports all collected shipping data entries.
        /// </summary>
        // Token: 0x06000041 RID: 65 RVA: 0x00003840 File Offset: 0x00001A40
        public void Apply()
        {
            VersanddatenImportmanager.Instance.Import(this._daten);
        }

        // Token: 0x0400001F RID: 31
        private readonly List<VersandImportdaten> _daten = new List<VersandImportdaten>();
    }
}
 
  • Gefällt mir
Reaktionen: wawi-dl

mvh

Sehr aktives Mitglied
26. Oktober 2011
1.258
489
Oder über Reflection/WaWi:
Über JTL.WaWi.Versanddatentausch.dll
public class VersanddatenImportService in namespace JTL.Wawi.Versanddatenaustausch.Core.Services : IVersanddatenImportService, IDisposable
.StartService()
So macht UI und WMS
 
  • Gefällt mir
Reaktionen: wawi-dl

wawi-dl

Sehr aktives Mitglied
29. April 2008
6.801
837
@mvh
erneut besten Dank für die Tipps, JTLWawiExtern hatten wir zusammen damals getestet, war für uns aber zu unsicher bzw. wollen wir nicht, wenn diese mal abgeschafft wird

wir haben jtlCore verwendet, können damit die Login-Daten abgreifen und es wird tatsächlich ALLES bzgl. Versand ausgelöst 😍

Wir mussten ein kleines Zusatzprogramm kompilieren für die jtlCore, schicken nur den Auftrag dagegen und fertig ... sehr nice ... wir müssen jetzt noch produktiv testen
 
  • Gefällt mir
Reaktionen: mvh

mvh

Sehr aktives Mitglied
26. Oktober 2011
1.258
489
Moin. Immer gerne. Der Code ist übrigens auch in 2.2.2 vorhanden.