pixiUpdateDelivery
Aktualisiert den Kopf einer Lieferantenlieferung (Notiz, externe Nummern, Status, Picco-/Mobix-Sperre) per Liefer-ID oder Liefernummer.
Aktualisiert einen Datensatz in SDelHeader (Kopf einer Lieferantenlieferung) und liefert immer genau eine Zeile mit der Spalte ReturnMSG.
Ermittlung der Lieferung
SDelHkeyundDeliveryNumbergelten bei0als nicht angegeben. Mindestens einer der Werte ist erforderlich.- Ist
SDelHkeyangegeben, wird dieser verwendet undDeliveryNumberignoriert. - Andernfalls wird die Lieferung mit
SDelHNr = DeliveryNumberund dem kleinsten Schlüssel verwendet.
Prüfungen
StatusmussNEW,INVoderCLSsein oder weggelassen werden (NULL); dann bleibt der aktuelle Status erhalten. Ein Leerstring wird abgelehnt.- Ist
ExternalReceiptNrangegeben, darf keine andere Lieferung desselben Lieferanten diese externe Belegnummer bereits besitzen. - Ohne
PiccoUser: Die Lieferung muss existieren und darf nicht durch Picco gesperrt sein (LockedByPiccoungleichY). - Mit
PiccoUser(Mobix-/Picco-Client): Die Lieferung muss existieren und entweder diesemPiccoUserzugeordnet oder nicht durch Picco gesperrt sein.
Behandlung der Felder
Note,extInvoiceNrundextOrderNrwerden getrimmt. Leere oder fehlende Werte behalten den gespeicherten Wert.ExternalReceiptNrundStatus: Fehlende oder leere Werte behalten den gespeicherten Wert.UserNameist standardmäßigAPIund wird als letzter Bearbeiter gespeichert; das Änderungsdatum wird auf die aktuelle Zeit gesetzt.- Die Picco-Informationen werden immer neu geschrieben:
- Ohne
PiccoUserwerdenPiccoUserundLockedByPiccoder Lieferung geleert. - Mit
PiccoUserwird der Benutzer gespeichert;LockedByPiccowird aufYgesetzt, wennLockDelivery = 1. BeiStatus = CLSwerden Picco-Benutzer und Sperre entfernt.
- Ohne
SupplNrist veraltet. Der Lieferant wird nie geändert.
Ändert sich der Status tatsächlich, wird ein Ereignis „Lieferstatus geändert“ veröffentlicht.
Hinweise
Note,extInvoiceNr,extOrderNrundExternalReceiptNrlassen sich mit diesem Aufruf nicht leeren. Leere Werte behalten den bestehenden Inhalt.extOrderNrist alsvarchar(8000)deklariert, die interne Update-Prozedur nimmt aber nurvarchar(1000)an. Längere Werte werden abgeschnitten.- Ein Aufruf ohne
PiccoUserentfernt eine bestehende Picco-Benutzerzuordnung der Lieferung. - Bei einer durch Picco gesperrten Lieferung schlägt ein Aufruf ohne
PiccoUsermitDelivery header does not existfehl, obwohl die Lieferung existiert. - Findet
DeliveryNumberkeine Lieferung, erscheint dieselbe Meldung. - Die Prozedur gibt bei Fehlern den Rückgabewert
-1zurück. Fehler werden nur alsReturnMSG-Zeile gemeldet, nicht als SQL-Fehler. - Die Existenzprüfungen lesen
SDelHeadermitNOLOCK. Eine explizite Transaktion wird nicht verwendet. - Bei einer Statusänderung wird
pixi_MQ_DeliveryStatusChanged_EventPublishausgeführt. Die Definition liegt nicht vor, daher ist der Inhalt der veröffentlichten Nachricht unbekannt. - Die genaue fachliche Bedeutung des Status
INVist im Code nicht ersichtlich.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
SDelHkey
|
int | NULL |
Interner Schlüssel der Lieferung ( Beispiel: |
SupplNr
|
varchar(4) string |
NULL |
Veraltet. Wird ignoriert; der Lieferant wird aus dem Lieferkopf gelesen und nie geändert. |
DeliveryNumber
|
int | NULL |
Liefernummer ( Beispiel: |
Note
|
varchar(8000) string |
NULL |
Neue Notiz der Lieferung. Wird getrimmt; leer oder fehlend behält die gespeicherte Notiz. Beispiel: |
extInvoiceNr
|
varchar(25) string |
NULL |
Externe Rechnungsnummer des Lieferanten. Wird getrimmt; leer oder fehlend behält den gespeicherten Wert. Beispiel: |
extOrderNr
|
varchar(8000) string |
NULL |
Externe Bestellnummer(n). Wird getrimmt; leer oder fehlend behält den gespeicherten Wert. Effektiv auf 1000 Zeichen begrenzt. Beispiel: |
UserName
|
varchar(50) string |
NULL |
Als letzter Bearbeiter gespeicherter Benutzer. Standard ist Beispiel: |
PiccoUser
|
varchar(59) string |
NULL |
Picco-/Mobix-Benutzer, der die Lieferung bearbeitet. Leer gilt als nicht angegeben. Fehlt der Wert, werden Picco-Zuordnung und Sperre entfernt. Beispiel: |
Status
|
varchar(3) string |
NULL |
Neuer Lieferstatus. Fehlend behält den aktuellen Status; ein Leerstring wird abgelehnt. Erlaubte Werte
Beispiel: |
LockDelivery
|
bit boolean |
0 |
Nur mit Erlaubte Werte
Beispiel: |
ExternalReceiptNr
|
varchar(50) string |
NULL |
Externe Belegnummer. Muss je Lieferant eindeutig sein; leer oder fehlend behält den gespeicherten Wert. Beispiel: |
Antwort
Result-Set 1 · Immer (eine Zeile; Erfolgs- oder Fehlermeldung)
Statusmeldung des Aufrufs.
| Spalte | Typ | Beschreibung |
|---|---|---|
ReturnMSG
|
varchar string |
|
Beispielantwort
<SqlRowSet1>
<row>
<ReturnMSG>Update successful</ReturnMSG>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| -1 | Delivery ID or Delivery number must be provided. | Weder `SDelHkey` noch `DeliveryNumber` angegeben (oder beide 0). |
| -1 | Wrong status code provided. | `Status` ist nicht `NEW`, `INV` oder `CLS` (auch Leerstring). Zum Beibehalten des Status den Parameter weglassen. |
| -1 | For given External Receipt Number already exists an delivery. | Eine andere Lieferung desselben Lieferanten besitzt bereits diese `ExternalReceiptNr`. |
| -1 | Delivery header does not exist | Keine Lieferung zu Schlüssel oder Nummer gefunden. Auch ohne `PiccoUser` bei durch Picco gesperrter Lieferung sowie mit `PiccoUser`, wenn ein anderer Picco-Benutzer die Lieferung gesperrt hat. |
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:pixiUpdateDelivery>
<!-- <SDelHkey>15872</SDelHkey> -->
<!-- <SupplNr>?</SupplNr> -->
<!-- <DeliveryNumber>4711</DeliveryNumber> -->
<!-- <Note>Pallet damaged on arrival</Note> -->
<!-- <extInvoiceNr>RE-2024-00815</extInvoiceNr> -->
<!-- <extOrderNr>PO-55102</extOrderNr> -->
<!-- <UserName>shopsync</UserName> -->
<!-- <PiccoUser>mobix01</PiccoUser> -->
<!-- <Status>CLS</Status> -->
<!-- <LockDelivery>1</LockDelivery> -->
<!-- <ExternalReceiptNr>WE-778812</ExternalReceiptNr> -->
</ns1:pixiUpdateDelivery>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
curl -X POST 'https://apigateway.descartes.com/tms/pixi/' \
--user 'USERNAME:PASSWORD' \
--header 'Content-Type: text/xml; charset=utf-8' \
--data-binary @- <<'XML'
<?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:pixiUpdateDelivery>
<!-- <SDelHkey>15872</SDelHkey> -->
<!-- <SupplNr>?</SupplNr> -->
<!-- <DeliveryNumber>4711</DeliveryNumber> -->
<!-- <Note>Pallet damaged on arrival</Note> -->
<!-- <extInvoiceNr>RE-2024-00815</extInvoiceNr> -->
<!-- <extOrderNr>PO-55102</extOrderNr> -->
<!-- <UserName>shopsync</UserName> -->
<!-- <PiccoUser>mobix01</PiccoUser> -->
<!-- <Status>CLS</Status> -->
<!-- <LockDelivery>1</LockDelivery> -->
<!-- <ExternalReceiptNr>WE-778812</ExternalReceiptNr> -->
</ns1:pixiUpdateDelivery>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
XML
<?php
$soapClient = new SoapClient(null, [
'login' => 'USERNAME',
'password' => 'PASSWORD',
'location' => 'https://apigateway.descartes.com/tms/pixi/',
'uri' => 'https://apigateway.descartes.com/tms/pixi/',
]);
$arguments = [
// 'SDelHkey' => '15872',
// 'SupplNr' => '?',
// 'DeliveryNumber' => '4711',
// 'Note' => 'Pallet damaged on arrival',
// 'extInvoiceNr' => 'RE-2024-00815',
// 'extOrderNr' => 'PO-55102',
// 'UserName' => 'shopsync',
// 'PiccoUser' => 'mobix01',
// 'Status' => 'CLS',
// 'LockDelivery' => '1',
// 'ExternalReceiptNr' => 'WE-778812',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiUpdateDelivery', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiUpdateDelivery