Postman-Collection
Shipping Schreiben

pixiSetOrderlinesInBoxToAUS

Bucht einen Auftrag aus, der allein in genau einer Box liegt: setzt die Auftragspositionen der Box auf Status AUS und leert die Box.

Führt das Ausbuchen (Scan-Out) eines in einer Box gesammelten Auftrags durch und leert die Box.

Ablauf:

  1. Ermittelt alle Boxen, die Auftragspositionen von OrderNr enthalten (über boxitems), sowie alle Aufträge, die in diesen Boxen liegen.
  2. Prüft, ob mindestens eine der Einstellungen Premium_API oder Centralized_Ship_Out aktiviert ist. Andernfalls wird ein Fehler zurückgegeben.
  3. Prüft, ob der Auftrag in genau einer Box liegt. Wird keine Box gefunden oder ist der Auftrag auf mehrere Boxen verteilt, wird ein Fehler zurückgegeben.
  4. Prüft, ob die Box keinen weiteren Auftrag enthält. Ist das der Fall, wird ein Fehler zurückgegeben.
  5. Liest die Lieferadresse der Box (boxes.SAddrRef) und prüft die Liefersperre. Geprüft werden das Kundenkennzeichen Customers.SLocked und das Adresskennzeichen Addresses.ASLocked. Steht eines davon auf Y, wird ein Fehler zurückgegeben.
  6. Sind alle Prüfungen bestanden, laufen drei interne Prozeduren:
    • GOSScanOutOrderline mit Status AUS. Sie setzt die Auftragspositionen der Box mit Status EIN auf AUS. Ebenso setzt sie Positionen derselben Rechnungen auf AUS, die den Status MIN oder einen in der Einstellung PutThisStatusesOnInvoice genannten Status haben. Für diese Positionen setzt sie ShipDate, aktualisiert den Auftragskopfstatus, schreibt die Auftragshistorie, löscht Reservierungen, aktualisiert Bundle-Positionen und schließt zugehörige Retourenpositionen und Retourenfälle.
    • GOSDeleteAllItemsForBox entfernt alle boxitems der Box.
    • GOSEmptyBox setzt die Box zurück: Kunde, Adressen und Auftrag werden auf 0 gesetzt, BoxEndDate auf das aktuelle Datum, und die Warte- und Sperrkennzeichen werden zurückgesetzt.

Der Aufruf liefert immer genau eine Zeile mit Status (SUCCESS oder ERROR) und Info. UserName wird als ändernder Mitarbeiter in den geänderten Datensätzen gespeichert.

Hinweise

  • Die gesamte Verarbeitung läuft in der benannten Transaktion OrderToAUS. Bei einem Fehler in der Hauptprozedur wird sie zurückgerollt. Die zurückgegebene Zeile enthält dann Status = ERROR und den SQL-Fehlertext in Info. Info wird auf 150 Zeichen gekürzt.
  • Die aufgerufenen GOS…-Prozeduren fangen eigene Fehler ab und protokollieren sie über log.InsertError, ohne sie weiterzureichen. Ein Fehler darin kann daher (vollständig oder bis zu einem Savepoint) zurückgerollt werden, während der Aufruf trotzdem SUCCESS meldet. Im Zweifel die Daten prüfen.
  • Die Box- und Auftragszählungen stammen aus gruppierten Abfragen. Verwendet wird der Wert der zuletzt verarbeiteten Gruppe. In gemischten Fällen (z. B. mehrere Boxen mit mehreren Aufträgen) kann die konkret zurückgegebene Fehlermeldung variieren. Abgelehnt wird der Aufruf dennoch, solange der Auftrag nicht allein in einer einzigen Box liegt.
  • Lesezugriffe verwenden NOLOCK. Updates in den Unterprozeduren verwenden ROWLOCK. GOSScanOutOrderline unterdrückt den Update-Trigger auf Orderlines über CONTEXT_INFO und schreibt OrderHistory selbst.
  • Auch bei Prüfungsfehlern wird ein Commit ausgeführt; zu diesem Zeitpunkt wurde jedoch nichts geschrieben.

Parameter

Parameter Typ Standardwert Beschreibung
OrderNr
Pflicht
int –

Nummer des Auftrags, dessen Box ausgebucht und geleert werden soll.

Beispiel: 104523

UserName
varchar(50)
string
API

Benutzername, der als ändernder Mitarbeiter in Auftragspositionen, Historie und Retourenfällen gespeichert wird.

Beispiel: WarehouseApp

Antwort

Result-Set 1 · Immer

Eine Statuszeile mit dem Ergebnis des Aufrufs.

Spalte Typ Beschreibung
Status varchar(50)
string

SUCCESS, wenn die Box ausgebucht und geleert wurde, sonst ERROR.dein

Info
Kann leer sein
varchar(150)
string

Erfolgsmeldung oder Fehlertext.e

Fehlermeldungen

Status Meldung Ursache
ERROR Setting "Centralized_Ship_Out" or "Premium_API" is not enabled. Weder die Einstellung `Centralized_Ship_Out` noch `Premium_API` ist aktiviert. Eine davon aktivieren.
ERROR No box exists for order: {OrderNr} Keine Auftragsposition des Auftrags liegt in einer Box.
ERROR More than 1 box found for order: {OrderNr} Der Auftrag ist auf mehrere Boxen verteilt. Zuerst in einer Box zusammenführen.
ERROR There is more than 1 order in the box: {BoxNr} Die Box enthält auch Auftragspositionen anderer Aufträge.
ERROR Customer has SHIPPING LOCK flag set! Der Kunde der Lieferadresse der Box hat `SLocked` = `Y`. Zuerst die Liefersperre aufheben.
ERROR Order has SHIPPING LOCK flag set! Die Lieferadresse der Box hat `ASLocked` = `Y`. Zuerst die Liefersperre aufheben.
ERROR {ERROR_MESSAGE()} In der Hauptprozedur ist ein SQL-Fehler aufgetreten. Die Transaktion wurde zurückgerollt.

Beispiele

POST https://apigateway.descartes.com/tms/pixi/
Content-Type: text/xml; charset=utf-8
Authorization: Basic BASE64(USERNAME:PASSWORD)

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="https://apigateway.descartes.com/tms/pixi/">
  <SOAP-ENV:Body>
    <ns1:pixiSetOrderlinesInBoxToAUS>
      <OrderNr>104523</OrderNr>
      <!-- <UserName>WarehouseApp</UserName> -->
    </ns1:pixiSetOrderlinesInBoxToAUS>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Verwendete Tabellen

Orderlines · Schreiben boxitems · Schreiben boxes · Schreiben Customers · Lesen Addresses · Lesen Settings · Lesen Invlines · Lesen OrderHeader · Schreiben OrderHistory · Schreiben Reservation · Schreiben BundleOrderlines · Schreiben RET_CASE_LINES · Schreiben RET_CASES · Schreiben RET_CASES_HISTORY · Schreiben
SQL-Objekt:
dbo.pipiSetOrderlinesInBoxToAUS
Prozedur zuletzt geändert am 2026-10-05
Dokumentation von claude-opus-5-5 am 2026-10-30 geschrieben