Bestand sperren & entsperren
DACHSER meldet per XML, wenn Ware gesperrt oder wieder freigegeben wird. tbs.erp speichert die Meldungen zunächst intern und überträgt sie gesammelt als Lagerbewegungen an weclapp.
Zwei Arten von Status-Änderungen
Bestand wird in weclapp vom Hauptlager in das Sperrlager umgebucht. Dort bleibt er sichtbar, steht aber getrennt vom verfügbaren Hauptlagerbestand.
Die Menge wird in weclapp vom Sperrlager zurück ins Hauptlager gebucht.
Technischer Ablauf
XML von DACHSER empfangen
DACHSER stellt Dateien im Unterordner Statusänderungen bereit. Eine Meldung enthält Artikel, Batch, Menge und die Änderung des Sperrgrunds.
In tbs.erp speichern
Die Meldung wird zunächst in der internen Datenbank gespeichert. Das Feld art unterscheidet sperrung und entsperrung; fk_sperrgrund_id referenziert bei Bedarf den Sperrgrund.
Gesammelt an weclapp übertragen
Die gespeicherten Änderungen werden gesammelt verarbeitet. Bei einer Sperrung wird die Menge vom Hauptlager ins Sperrlager bewegt, bei einer Entsperrung in die Gegenrichtung. Dadurch ist der gesperrte Bestand in weclapp über das Sperrlager erkennbar.
Beispiel einer Status-XML
Die Beispielmeldung betrifft Artikel 1016635, Batch XV301MF und QuantityIMU 6.000. Unter Change type="001" Desc="Blocking Reason" wechselt der Wert von 000 auf 092. Die genaue Zuordnung dieser DACHSER-Codes zum internen Sperrgrund wird hier nicht aus dem Beispiel abgeleitet.
<?xml version="1.0" encoding="UTF-8"?>
<PackageStatusChange>
<DocumentHeader>
<EDISender>
<PartnerInformation>
<PartnerGLN>4023083000008</PartnerGLN>
</PartnerInformation>
</EDISender>
<EDIReceiver>
<PartnerInformation>
<PartnerID>47195745</PartnerID>
</PartnerInformation>
</EDIReceiver>
<DocumentID>81473-0000001</DocumentID>
<DocumentDate>
<Date>2025-02-11T08:08:33</Date>
</DocumentDate>
</DocumentHeader>
<StatusReport>
<Branch>
<PartnerInformation>
<PartnerID>00000183</PartnerID>
</PartnerInformation>
</Branch>
<Customer>
<PartnerInformation>
<PartnerID>47195745</PartnerID>
</PartnerInformation>
</Customer>
<StatusReportContent>
<SequentialNumberOfPackage>0000001</SequentialNumberOfPackage>
<ArticleNumber>1016635</ArticleNumber>
<BatchNumber>XV301MF</BatchNumber>
<SSCC>00940221279041552124</SSCC>
<QuantityIMU>6.000</QuantityIMU>
<QuantityUnit>ST</QuantityUnit>
<VoucherType>000</VoucherType>
<Change type="001" Desc="Blocking Reason">
<ValueOld>000</ValueOld>
<ValueNew>092</ValueNew>
<DateChange>
<Date>2025-02-10T13:22:00Z</Date>
</DateChange>
</Change>
</StatusReportContent>
</StatusReport>
</PackageStatusChange>Interne Datenbankstruktur
Der Screenshot zeigt die Felder, in denen tbs.erp die eingehende Status-Änderung vor der gesammelten weclapp-Buchung ablegt.
| Feld | Typ | Zweck |
|---|---|---|
| id | int(11) | Interne ID |
| fk_sperrgrund_id | int(11), NULL möglich | Verweis auf Sperrgrund |
| erstellt_am | datetime | Erstellung |
| importiert_am | datetime | Import |
| filename | varchar(100) | Quelldatei |
| dokument_id | varchar(100) | Dokumentkennung |
| artikel_id | varchar(255) | Artikelkennung |
| sku | varchar(255) | SKU |
| anzahl | int(11) | Menge |
| art | enum('sperrung', 'entsperrung') | Richtung der Buchung |
| batch_nummer | varchar(255) | Batch |
| gebucht_am | datetime, NULL möglich | Buchungszeitpunkt |
| status | enum('offen', 'sku_nicht_gefunden', 'gebucht') | Interner Verarbeitungsstatus |
Der Datenbankwert status bezeichnet die Verarbeitung der Meldung in tbs.erp. Er ist vom Sperrstatus der Ware zu unterscheiden.