Postman-Collection
Invoices Schreiben

pixiCreateDirectInv

Legt eine Direktrechnung für einen Auftrag an, entweder für alle offenen Auftragspositionen oder für eine kommagetrennte Liste von Positionsschlüsseln.

Der Aufruf ist ein schlanker Wrapper um die interne Prozedur Pixi_CreateDirectInvInvoices. Übergeben werden LocID, CreateEmp, OrderNr und OrderlineRefs; alle anderen Werte sind fest: keine Prüfung "alle Artikel auf Lager", keine Lagerplatz-Einschränkung, kein 1SS-Modus (One-Step-Shipping), Ergebniszeile aktiv, eigene Transaktion, Erstellungsmodus Manual, Sprache 1.

Vorprüfungen (keine Ergebnismenge, keine Rechnung):

  • Hat der Auftrag keine Position in einem der offenen Status RAS, OPA, NAO, ANG, BES, BOR, NAS, OPH, NAD, endet der Aufruf ohne Meldung.
  • Ist OrderlineRefs leer und liegt eine Position des Auftrags auf einer aktiven (nicht abgelaufenen) Pickliste, endet der Aufruf ohne Meldung.

Auswahl der Positionen:

  • OrderlineRefs wird an Kommas getrennt; nur numerische Schlüssel > 0 werden verwendet. Bei leerem Wert werden alle Positionen des Auftrags verwendet.
  • Berechnet werden nur Positionen von OrderNr in den oben genannten offenen Status sowie MIN, und nur, wenn sie noch nicht auf einer Rechnungsposition stehen.
  • Der Kunde darf nicht gesperrt sein (SLocked) und die Lieferadresse nicht gesperrt (ASlocked); sonst wird nichts angelegt.

Rechnungserstellung:

  1. Abhängig von der Einstellung DoNotReleaseStockOnDirectInvoiceScanOut (Wert 0) wird intern eine Pickliste für die gewählten Positionen erzeugt (Teillieferung und Teilmengen erlaubt) und mit dem Kommentar DirectInvStockRelease markiert.
  2. In einer Transaktion wird der Rechnungskopf angelegt (MwSt-Typ I, oder N, wenn die Rechnungsadresse eine USt-IdNr. hat oder der Kunde TaxOnInvoice = 'N' hat), Wechselkurs und Retouren-Tracking-ID werden ermittelt und SEPA-Daten ergänzt.
  3. Rechnungspositionen werden aus den Auftragspositionen übernommen (Menge, Preis, Rabatt, MwSt, Versandkosten, Währung, Seriennummer).
  4. Die Rechnung erhält die nächste Rechnungsnummer des Shops und ein Paket-Bruttogewicht (Einstellung DefaultShippingWeight oder aus Artikelgewichten berechnet, wenn CalculateWeightFromItems = 1).
  5. Berechnete offene Positionen erhalten Status EIN und die Rechnungsreferenz; MIN-Positionen erhalten nur die Rechnungsreferenz.
  6. Bei Invoice_CancelPartialDelivery = 1 werden verbleibende ANG/HAL/BOR-Positionen von Aufträgen mit erzwungener Teillieferung und Stornierung auf STO gesetzt.
  7. Verlangt der Versanddienstleister (DoScanOutOnInvoiceCreate) oder die Zahlungsart (AutoScanOutInvoice) es, wird eine Kiste angelegt und ausgescannt sowie ein Job zur Bestandsfreigabe eingereiht.
  8. Das Ereignis InvoiceCreated wird veröffentlicht.

Am Ende wird eine Statuszeile zurückgegeben (siehe Ergebnismengen).

Hinweise

  • OrderlineRefs hat keinen Standardwert und muss übergeben werden; ein Leerstring (oder NULL) bedeutet "alle zulässigen Positionen". Das dokumentierte Format ist ,1234,1235,.
  • Stille Abbrüche: In den beiden Vorprüfungsfällen wird gar keine Zeile zurückgegeben. Ist Kunde oder Lieferadresse gesperrt, meldet die Abschlusszeile Success = 1, aber InvoiceKey = 0 und CreatedInv = 0; daher CreatedInv/InvoiceKey prüfen, nicht nur Success.
  • Bei einem Fehler in der Rechnungstransaktion wird alles zurückgerollt, die interne Pickliste gelöscht, der Fehler protokolliert (LOG.InsertError), eine Zeile mit vier Spalten geliefert und der Fehler über sp_Exception_ReRaise (nicht beigefügt) erneut ausgelöst, sodass der Client zusätzlich eine SqlMessage erhält.
  • Ein Fehler beim Erzeugen der internen Pickliste wird nicht erneut ausgelöst, sondern in ErrorMessage der Abschlusszeile mit Success = 0 gemeldet.
  • LocID wird für Picklisten- und Kistenverarbeitung verwendet; der Rechnungsstandort stammt aus den Auftragspositionen.
  • Das Verhalten hängt von den Einstellungen DoNotReleaseStockOnDirectInvoiceScanOut, DefaultShippingWeight, CalculateWeightFromItems, PutThisStatusesOnInvoice, Invoice_CancelPartialDelivery und 1SS_ForceAutoScanOut ab.
  • Nebeneffekte: MQ-Ereignis InvoiceCreated, ein eingereihter Eintrag Pixi_ReleaseStockFrominvoicePicklist in ExecQueries beim Ausscannen, Laufzeitprotokoll über LOG.EventDurationInsert. Viele Lesezugriffe verwenden NOLOCK.

Parameter

Parameter Typ Standardwert Beschreibung
LocID
varchar(3)
string
001

Standort-ID für die interne Pickliste sowie Kisten- und Ausscan-Verarbeitung.

Beispiel: 001

CreateEmp
varchar(50)
string
API

Benutzername, der als Ersteller der Rechnung und als Bearbeiter der Auftragspositionen gespeichert wird.

Beispiel: API

OrderNr
Pflicht
int –

Nummer des zu berechnenden Auftrags.

Beispiel: 100245

OrderlineRefs
Pflicht
varchar(2000)
string
–

Kommagetrennte Positionsschlüssel, die berechnet werden sollen, z. B. ,1234,1235,. Leerstring bedeutet alle zulässigen Positionen des Auftrags. Schlüssel, die nicht zum Auftrag gehören, werden ignoriert.

Beispiel: ,1234,1235,

Antwort

Result-Set 1 · Am Ende der Verarbeitung, sofern keine Vorprüfung den Aufruf beendet hat und kein Fehler in der Rechnungstransaktion auftrat.

Abschließende Statuszeile der Direktrechnungserstellung.

Spalte Typ Beschreibung
ErrorMessage
Kann leer sein
varchar(4000)
string

Fehlertext aus der Picklistenerstellung; NULL bei Erfolg.Ensure.Fehlertext aus der Picklistenerstellung; NULL bei Erfolg.

Success int

1, wenn ErrorMessage NULL ist, sonst 0. Auch 1, wenn mangels zulässiger Positionen keine Rechnung angelegt wurde.

InvoiceKey
Kann leer sein
int

Schlüssel der angelegten Rechnung; 0, wenn keine angelegt wurde.

ScanOutDone
Kann leer sein
bit
boolean

1, wenn die Kiste automatisch ausgescannt und gelöscht wurde.

CreatedInv
Kann leer sein
int

Schlüssel der angelegten Rechnung; 0, wenn keine angelegt wurde.

InvoicePackageId
Kann leer sein
int

ID des Rechnungspakets der neuen Rechnung; NULL, wenn keine Rechnung angelegt wurde.

Result-Set 2 · Bei einem Fehler in der Rechnungstransaktion; danach folgt der erneut ausgelöste SQL-Fehler.

Fehlerzeile, die vor dem erneuten Auslösen des Fehlers geliefert wird.

Spalte Typ Beschreibung
ErrorMessage
Kann leer sein
varchar(4000)
string

Fehlermeldung des fehlgeschlagenen Schritts.

Success int

Immer 0.

InvoiceKey int

Immer 0.

ScanOutDone
Kann leer sein
bit
boolean

Ausscan-Kennzeichen zum Zeitpunkt des Fehlers.

Fehlermeldungen

Status Meldung Ursache
RAISERROR Invlines problem... Für die neue Rechnung wurden keine Rechnungspositionen angelegt (z. B. alle gewählten Positionen sind bereits berechnet). Die Transaktion wird zurückgerollt; Rückgabe als Fehlerzeile und erneut ausgelöster Fehler.
RAISERROR Invoice Problem - ID and InvoiceNr do not match... Die vergebene Rechnungsnummer konnte am Rechnungsdatensatz nicht bestätigt werden. Die Transaktion wird zurückgerollt.
RAISERROR ERROR: {Info} Das automatische Ausscannen der Kiste ist fehlgeschlagen; `{Info}` ist die Meldung der Ausscan-Routine. Die Transaktion wird 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:pixiCreateDirectInv>
      <!-- <LocID>001</LocID> -->
      <!-- <CreateEmp>API</CreateEmp> -->
      <OrderNr>100245</OrderNr>
      <OrderlineRefs>,1234,1235,</OrderlineRefs>
    </ns1:pixiCreateDirectInv>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Verwendete Tabellen

Orderlines · Schreiben OrderHeader · Lesen ShipVendor · Lesen Addresses · Lesen Customers · Lesen PLitem · Schreiben PLheader · Schreiben InvLines · Schreiben Invoices · Schreiben Currency · Lesen items · Lesen InvoicePackage · Schreiben Payments · Lesen ExecQueries · Schreiben boxes · Schreiben
SQL-Objekt:
dbo.pipiCreateDirectInv
Prozedur zuletzt geändert am 2026-10-05
Dokumentation von claude-opus-5-5 am 2026-10-30 geschrieben