pixiCreateDeliveryItem
Legt eine neue Artikelposition in einer offenen Lieferantenlieferung an, die über Lieferungs-Key oder -Nummer bestimmt wird, und liefert die angelegte Position zurück.
Legt eine neue Position (SDelDetail) in einer Lieferantenlieferung (SDelHeader) an.
- Normalisierung: Leere Werte gelten als nicht übergeben. Bei den numerischen Parametern zählt dadurch auch
0als leer:SDelHKey = 0undSDelHNr = 0werden zuNULL. Nicht übergebene Mengen und Preise werden zu0. - Pflichtangaben: Es muss entweder
SDelHKeyoderSDelHNrsowie entwederEANUPCoderItemNrInternalgesetzt sein. - Artikelsuche: Der Artikel wird über
COALESCE(EANUPC, ItemNrInternal)unter den scanbaren Artikelcodes gesucht (pixi.ItemCodeverknüpft mitItemCodeType,Scannable = 1). IstEANUPCgesetzt, wirdItemNrInternalignoriert. - Lieferungssuche: Ist
SDelHKeyleer, wird der Key der ersten Lieferung mitSDelHNrverwendet. Sind beide angegeben, hatSDelHKeyVorrang. - Prüfungen:
- Die Lieferung muss existieren und darf nicht den Status
CLS(abgeschlossen) oderINV(berechnet) haben. - Die Lieferung darf nicht durch Picco gesperrt sein (
LockedByPicco = 'Y'). LocIDmuss leer sein, oder es muss mindestens eine Lieferantenlieferung mitSDelHLocationID = LocIDexistieren.
- Die Lieferung muss existieren und darf nicht den Status
- Anlage: Der Artikelname wird aus
itemsübernommen, der Lieferant aus dem Lieferungskopf. Es wird immer eine neue Position eingefügt, mit bestellter und gelieferter Menge, Einkaufspreis, Endpreis, Charge und Mindesthaltbarkeitsdatum. Ein Bestellpositionsbezug wird nicht gesetzt. Rabatte und Mittelpreis werden auf0gesetzt. - Preis-Fallback: Ist
SupplPrice0oder nicht übergeben und hat die Lieferung einen Lieferanten, wird der Einkaufspreis aus dem Lieferantenartikel (AddItems.SupplPrice) übernommen. Dieser Wert gilt für Preis, Mittelpreis und Endpreis. Ein übergebenerSupplFinalPricewird in diesem Fall ebenfalls überschrieben. - Ergebnis: Die neu angelegte Lieferposition wird mit Zusatzinformationen zurückgegeben:
- auf Lieferantenbestellpositionen zugeordnete Menge
- offene Kunden, offene Aufträge und offene Menge zum Artikel im Lager der Lieferung
- Lieferanten-Artikelnummer und interne Artikelnummer aus dem Lieferantenartikel
Alle Fehler werden per RAISERROR (Schweregrad 16) ausgelöst. In diesem Fall wird keine Position angelegt.
Hinweise
SDelHSupplNrundPiccoUserwerden angenommen, aber nicht verwendet;SDelHSupplNrist im Code als ungenutzt markiert (DEV-4203). Der Lieferant stammt immer aus dem Lieferungskopf.- Lagerprüfung: Die Prüfung von
LocIDvergleicht nicht mit dem Lager der Ziel-Lieferung. Es wird nur geprüft, ob irgendeine Lieferantenlieferung mit dieser Lager-ID existiert. - Doppelte Positionen: Ein erneuter Aufruf für denselben Artikel legt eine weitere Position an. Bestehende Positionen werden nie aktualisiert; der Fehlertext verweist für Änderungen auf
pixiUpdateDeliveryItem. - Anlage von Lieferantenartikeln: Ist die Einstellung
InsertAddItemOnSOrdersDragDropauf1und existiert für Lieferant und Artikel kein Lieferantenartikel (AddItems), wird die interne ProzedurPixi_InsertAddItemOnDeliveryaufgerufen. Diese Prozedur liegt nicht vor, daher sind ihre genauen Auswirkungen hier nicht dokumentiert; vermutlich legt sie einen solchen Eintrag an. - Preis kann NULL sein: Beim Preis-Fallback wird der Preis
NULL, wenn für den Artikel beim Lieferanten kein Lieferantenartikel existiert. - Doppelter Fehlertext: Fehlt nur die Lieferungsreferenz, verkettet die Prüflogik die Meldung doppelt, sodass der Fehlertext zweimal erscheint.
- Benutzername: Wird
UserNameals leerer String übergeben, wird er zuNULLund alsNULLfür Anleger/Bearbeiter gespeichert. - Lesezugriffe erfolgen mit
NOLOCK. Es wird keine explizite Transaktion verwendet.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
SDelHKey
|
int | NULL |
Interner Key der Lieferantenlieferung. Hat Vorrang vor Beispiel: |
SDelHNr
|
int | NULL |
Lieferungsnummer. Wird nur verwendet, wenn Beispiel: |
UserName
|
varchar(50) string |
API |
Benutzername, der als Anleger und letzter Bearbeiter der Position gespeichert wird. Beispiel: |
ItemNrInternal
|
varchar(50) string |
NULL |
Artikelcode für die Suche, falls Beispiel: |
EANUPC
|
varchar(13) string |
NULL |
EAN/UPC des Artikels, die unter den scanbaren Artikelcodes gesucht wird. Hat Vorrang vor Beispiel: |
SupplPrice
|
money decimal |
NULL |
Einkaufspreis der Position. Bei Beispiel: |
SupplFinalPrice
|
money decimal |
NULL |
Endpreis im Einkauf. Er wird durch den Fallback-Preis überschrieben, wenn Beispiel: |
SDelHSupplNr
|
varchar(4) string |
NULL |
Wird nicht verwendet (DEV-4203). Der Lieferant wird aus dem Lieferungskopf übernommen. |
OrderdQty
|
money decimal |
0 |
Bestellte Menge der Position. Beispiel: |
DeliverdQty
|
money decimal |
0 |
Gelieferte Menge der Position. Beispiel: |
LocID
|
varchar(255) string |
NULL |
Optionale Lager-ID. Ist sie gesetzt, muss mindestens eine Lieferantenlieferung mit dieser Lager-ID existieren, sonst wird ein Fehler ausgelöst. Beispiel: |
PiccoUser
|
varchar(59) string |
NULL |
Wird im Code nicht verwendet. |
BatchNumber
|
varchar(50) string |
NULL |
Charge, die an der Lieferposition gespeichert wird. Beispiel: |
BestBeforeDate
|
datetime dateTime |
NULL |
Mindesthaltbarkeitsdatum, das an der Lieferposition gespeichert wird. Beispiel: |
Antwort
Result-Set 1 · Bei Erfolg (alle Prüfungen bestanden, Position angelegt)
Die neu angelegte Lieferantenlieferposition mit Zusatzinformationen.
| Spalte | Typ | Beschreibung |
|---|---|---|
SDelDkey
|
int |
Key der neuen Lieferposition. |
SDelDHref
|
int |
Key der Lieferantenlieferung. |
SDelDItemRef
|
int |
Artikel-Key. |
SDelDItemName
Kann leer sein |
string |
Artikelname aus dem Artikelstamm. |
SDelDqtyDelivered
Kann leer sein |
money decimal |
Gelieferte Menge. |
SDelDqtyOrdered
Kann leer sein |
money decimal |
Bestellte Menge. |
SDelDsorderlineRef
Kann leer sein |
int |
Bezug zu einer Lieferantenbestellposition; bei über diesen Aufruf angelegten Positionen immer |
SDelDsPrice
Kann leer sein |
money decimal |
Einkaufspreis. |
SDelDsDiscount
Kann leer sein |
money decimal |
Rabatt (immer 0). |
SDelDsFinalPrice
Kann leer sein |
money decimal |
Endpreis im Einkauf. |
SDelDcreateDate
Kann leer sein |
datetime dateTime |
Anlagedatum. |
SDelDcreateEmp
Kann leer sein |
varchar(50) string |
Anlegender Benutzer. |
SDelDupdateDate
Kann leer sein |
datetime dateTime |
Datum der letzten Änderung. |
SDelDupdateEmp
Kann leer sein |
varchar(50) string |
Benutzer der letzten Änderung. |
SDelDsAddDiscount
Kann leer sein |
money decimal |
Zusatzrabatt (immer 0). |
SDelDsMidPrice
Kann leer sein |
money decimal |
Mittelpreis: 0, oder der Preis des Lieferantenartikels, wenn der Preis-Fallback greift. |
BatchNumber
Kann leer sein |
varchar(50) string |
Charge. |
BestBeforeDate
Kann leer sein |
datetime dateTime |
Mindesthaltbarkeitsdatum. |
BuyingMatchQty
|
decimal |
Summe der dieser Position zugeordneten Mengen zu Lieferantenbestellpositionen ( |
OpenCustomersCountForItem
|
int |
Anzahl der Kunden mit aktiven Auftragspositionen für den Artikel im Lager der Lieferung. |
OpenOrdersCountForItem
|
int |
Anzahl der Aufträge mit aktiven Auftragspositionen für den Artikel im Lager der Lieferung. |
OpenQTYSforItem
Kann leer sein |
decimal |
Summe der Mengen aktiver Auftragspositionen für den Artikel im Lager der Lieferung; |
ItemNrSuppl
Kann leer sein |
string |
Lieferanten-Artikelnummer aus |
ItemNrInt
Kann leer sein |
string |
Interne Artikelnummer aus |
EANUPC
Kann leer sein |
string |
EAN/UPC aus dem Lieferantenartikel des Lieferanten der Lieferung, zugeordnet über |
Beispielantwort
<SqlRowSet1>
<row>
<SDelDkey>88412</SDelDkey>
<SDelDHref>5321</SDelDHref>
<SDelDItemRef>10045</SDelDItemRef>
<SDelDItemName>Kaffeebecher Steingut 300ml</SDelDItemName>
<SDelDqtyDelivered>10.0000</SDelDqtyDelivered>
<SDelDqtyOrdered>10.0000</SDelDqtyOrdered>
<SDelDsPrice>12.5000</SDelDsPrice>
<SDelDsDiscount>0.0000</SDelDsDiscount>
<SDelDsFinalPrice>12.5000</SDelDsFinalPrice>
<SDelDcreateDate>2024-05-14T09:32:11.237</SDelDcreateDate>
<SDelDcreateEmp>API</SDelDcreateEmp>
<SDelDupdateDate>2024-05-14T09:32:11.237</SDelDupdateDate>
<SDelDupdateEmp>API</SDelDupdateEmp>
<SDelDsAddDiscount>0.0000</SDelDsAddDiscount>
<SDelDsMidPrice>0.0000</SDelDsMidPrice>
<BatchNumber>CH-2024-0815</BatchNumber>
<BestBeforeDate>2025-12-31T00:00:00</BestBeforeDate>
<BuyingMatchQty>0.0000</BuyingMatchQty>
<OpenCustomersCountForItem>3</OpenCustomersCountForItem>
<OpenOrdersCountForItem>3</OpenOrdersCountForItem>
<OpenQTYSforItem>5.0000</OpenQTYSforItem>
<ItemNrSuppl>LF-77812</ItemNrSuppl>
<ItemNrInt>ART-10045</ItemNrInt>
<EANUPC>4006381333931</EANUPC>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| RAISERROR | You must provide Delivery reference or Delivery number. | Weder `SDelHKey` noch `SDelHNr` ist angegeben (oder beide sind 0/leer). Einen der beiden Werte übergeben. Der Text kann wegen der Verkettung doppelt erscheinen. |
| RAISERROR | You must provide item EAN or ItemNrInternal. | Weder `EANUPC` noch `ItemNrInternal` ist angegeben. Einen der beiden Werte übergeben. |
| RAISERROR | Item with EANUPC {EANUPC} does not exist. | Kein scanbarer Artikelcode entspricht der übergebenen `EANUPC`. |
| RAISERROR | Item with ItemNrInternal {ItemNrInternal} does not exist. | `EANUPC` ist leer und kein scanbarer Artikelcode entspricht `ItemNrInternal`. |
| RAISERROR | You cant add items to closed or invoiced deliveries. | Die Lieferung existiert nicht (z. B. unbekannte `SDelHNr`) oder hat den Status `CLS` oder `INV`. |
| RAISERROR | Delivery is locked! | Die Lieferung ist durch Picco gesperrt (`LockedByPicco = 'Y'`). Nach Aufhebung der Sperre erneut versuchen. |
| RAISERROR | Error: You cant add the item to the delivery, you have enter an invalid Location ID. For Updating use pixiUpdateDeliveryItem. | `LocID` ist gesetzt, aber es existiert keine Lieferantenlieferung mit dieser Lager-ID. `LocID` leer lassen oder eine gültige Lager-ID übergeben. |
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:pixiCreateDeliveryItem>
<!-- <SDelHKey>5321</SDelHKey> -->
<!-- <SDelHNr>10452</SDelHNr> -->
<!-- <UserName>API</UserName> -->
<!-- <ItemNrInternal>ART-10045</ItemNrInternal> -->
<!-- <EANUPC>4006381333931</EANUPC> -->
<!-- <SupplPrice>12.50</SupplPrice> -->
<!-- <SupplFinalPrice>12.50</SupplFinalPrice> -->
<!-- <SDelHSupplNr>?</SDelHSupplNr> -->
<!-- <OrderdQty>10</OrderdQty> -->
<!-- <DeliverdQty>10</DeliverdQty> -->
<!-- <LocID>001</LocID> -->
<!-- <PiccoUser>?</PiccoUser> -->
<!-- <BatchNumber>CH-2024-0815</BatchNumber> -->
<!-- <BestBeforeDate>2025-12-31T00:00:00</BestBeforeDate> -->
</ns1:pixiCreateDeliveryItem>
</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:pixiCreateDeliveryItem>
<!-- <SDelHKey>5321</SDelHKey> -->
<!-- <SDelHNr>10452</SDelHNr> -->
<!-- <UserName>API</UserName> -->
<!-- <ItemNrInternal>ART-10045</ItemNrInternal> -->
<!-- <EANUPC>4006381333931</EANUPC> -->
<!-- <SupplPrice>12.50</SupplPrice> -->
<!-- <SupplFinalPrice>12.50</SupplFinalPrice> -->
<!-- <SDelHSupplNr>?</SDelHSupplNr> -->
<!-- <OrderdQty>10</OrderdQty> -->
<!-- <DeliverdQty>10</DeliverdQty> -->
<!-- <LocID>001</LocID> -->
<!-- <PiccoUser>?</PiccoUser> -->
<!-- <BatchNumber>CH-2024-0815</BatchNumber> -->
<!-- <BestBeforeDate>2025-12-31T00:00:00</BestBeforeDate> -->
</ns1:pixiCreateDeliveryItem>
</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' => '5321',
// 'SDelHNr' => '10452',
// 'UserName' => 'API',
// 'ItemNrInternal' => 'ART-10045',
// 'EANUPC' => '4006381333931',
// 'SupplPrice' => '12.50',
// 'SupplFinalPrice' => '12.50',
// 'SDelHSupplNr' => '?',
// 'OrderdQty' => '10',
// 'DeliverdQty' => '10',
// 'LocID' => '001',
// 'PiccoUser' => '?',
// 'BatchNumber' => 'CH-2024-0815',
// 'BestBeforeDate' => '2025-12-31T00:00:00',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiCreateDeliveryItem', $soapArguments);
Verwandte Calls
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiCreateDeliveryItem