THE BODY SHOP · WIKI
Wiki / Status-Änderungen
BESTANDSSTATUS · TBS.ERP

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.

Bereich: tbs.erp Quelle: DACHSER-XML
Hier geht es um den Status von Ware.Die Bestellstatus einer Lagerbestellung werden auf der Seite Lagerbestellung dokumentiert. Diese Seite beschreibt ausschließlich das Sperren und Entsperren von Bestand.

Zwei Arten von Status-Änderungen

Sperrung

Bestand wird in weclapp vom Hauptlager in das Sperrlager umgebucht. Dort bleibt er sichtbar, steht aber getrennt vom verfügbaren Hauptlagerbestand.

Entsperrung

Die Menge wird in weclapp vom Sperrlager zurück ins Hauptlager gebucht.

Sperrung: Hauptlager→Sperrlager
Entsperrung: Sperrlager→Hauptlager

Technischer Ablauf

01

XML von DACHSER empfangen

DACHSER stellt Dateien im Unterordner Statusänderungen bereit. Eine Meldung enthält Artikel, Batch, Menge und die Änderung des Sperrgrunds.

02

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.

03

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.