pixiDeleteItemSupplier
Löscht die Lieferantenzuordnung (AddItems-Datensatz) eines Artikels für einen Lieferanten, sofern keine offenen Lieferantenbestellungen bestehen.
Entfernt genau einen Artikel-Lieferanten-Datensatz aus AddItems.
ItemKey=0wird alsNULLbehandelt, eine leereItemNrIntalsNULL.- Kandidaten-Artikel sind alle Zeilen in
Items, bei denenItemNrInt=@ItemNrIntoderItemKey=@ItemKeyoderEANUPC=@EANgilt. Die Kriterien sind mit ODER verknüpft, daher können mehrere Artikel Kandidaten werden. - In
AddItemswerden die Datensätze dieser Kandidaten-Artikel zum Lieferanten@SupplNrgesucht. Ist@EANangegeben, muss zusätzlichEanUpcdesAddItems-Datensatzes übereinstimmen. - Wird kein Datensatz gefunden, kommt der Fehler No records found with provided parameters. zurück. Bei mehr als einem Datensatz kommt der Fehler Item could not be uniquely identified. zurück. In beiden Fällen wird nichts geändert.
- Ist einer der Kandidaten-Artikel in einer Lieferantenbestellung dieses Lieferanten enthalten, deren Status als offen gekennzeichnet ist (
IsAllOpen= 1, z. B. NEW, BES, CON), wird ein Fehler geliefert und nichts gelöscht. - Andernfalls wird der
AddItems-Datensatz in einer Transaktion gelöscht (bzw. mit Savepoint, wenn der Aufrufer bereits eine offene Transaktion hat). - Wurde
@EANangegeben, entspricht der Haupt-BarcodeItems.EanUpcdem Wert@EANund trägt keinAddItems-Datensatz der Kandidaten-Artikel diese EAN mehr, wirdItems.EanUpcdurch denEanUpceines der verbleibendenAddItems-Datensätze des Artikels ersetzt. Datensätze anderer Lieferanten alsMGSwerden bevorzugt. - Es wird eine einzelne Statuszeile mit
STATUSundMESSAGEgeliefert.
Hinweise
- Alle Abfragen verwenden
NOLOCK, daher können die Eindeutigkeits- und Bestellprüfungen auch nicht festgeschriebene Daten sehen. - Da die Artikelkriterien mit ODER verknüpft sind, erweitert die Angabe mehrerer Kennungen, die auf verschiedene Artikel zeigen, die Kandidatenmenge. Die Prüfung auf offene Lieferantenbestellungen und die Barcode-Aktualisierung gelten für alle Kandidaten-Artikel, nicht nur für den Artikel, dessen
AddItems-Datensatz gelöscht wurde. - Bleibt beim Ersetzen des Barcodes kein
AddItems-Datensatz für einen Artikel übrig, wirdItems.EanUpcaufNULLgesetzt. - Ein leerer String für
EANwird nicht inNULLumgewandelt, sondern als Filterwert verwendet. - Die Erfolgsmeldung enthält
ItemNrIntnur, wenn dieser Wert übergeben wurde; bei Aufruf nur mitItemKeyoderEANbleibt dieser Teil leer. - Die Erfolgszeile wird erzeugt, bevor die temporären Tabellen über
util.TempTableDrop(nicht beigefügt) gelöscht werden und bevor der Commit erfolgt. Tritt dabei ein Fehler auf, kann zusätzlich eine Fehlerzeile folgen. - Fehler im Lösch-/Update-Block werden abgefangen, die Transaktion (bzw. der Savepoint) wird zurückgerollt und statt eines SQL-Fehlers eine
Error-Zeile geliefert.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
ItemKey
|
int | NULL |
Interner Schlüssel des Artikels. Beispiel: |
ItemNrInt
|
varchar(50) string |
NULL |
Interne Artikelnummer. Ein leerer String gilt als nicht gesetzt. Beispiel: |
SupplNr
Pflicht
|
varchar(4) string |
– |
Lieferantennummer des Lieferanten, dessen Zuordnung gelöscht wird. Beispiel: |
EAN
|
varchar(13) string |
NULL |
EAN/UPC-Barcode. Dient zur Suche des Artikels über Beispiel: |
Antwort
Result-Set 1 · Immer; genau eine Statuszeile (Erfolg oder Fehler).
Statuszeile mit dem Ergebnis des Aufrufs.
| Spalte | Typ | Beschreibung |
|---|---|---|
STATUS
|
varchar(7) string |
|
MESSAGE
Kann leer sein |
varchar(max) string |
Erfolgs- oder Fehlertext. |
Beispielantwort
<SqlRowSet1>
<row>
<STATUS>Success</STATUS>
<MESSAGE>Item with ItemNrInt: ART-10045 and SupplNr: ABC was deleted.</MESSAGE>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| Error | No records found with provided parameters. | Kein `AddItems`-Datensatz passt zu den angegebenen Artikelkennungen, `SupplNr` und (falls gesetzt) `EAN`. Kennungen und Lieferantennummer prüfen. |
| Error | Item could not be uniquely identified. | Mehr als ein `AddItems`-Datensatz passt, z. B. weil die Kennungen auf verschiedene Artikel zeigen oder der Artikel mehrere Datensätze für diesen Lieferanten hat. Suche eingrenzen, etwa durch Angabe von `EAN` oder nur `ItemKey`. |
| Error | Open supplier orders were found connected to the item. Item supplier can not be deleted. | Ein Kandidaten-Artikel ist in einer Lieferantenbestellung dieses Lieferanten mit offenem Status (`IsAllOpen` = 1) enthalten. Zuerst die Lieferantenbestellungen abschließen. |
| Error | Unexpected error: "{error message}" | Beim Löschen des Datensatzes oder beim Aktualisieren des Barcodes ist ein SQL-Fehler aufgetreten; alle Änderungen des Aufrufs wurden 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:pixiDeleteItemSupplier>
<!-- <ItemKey>12345</ItemKey> -->
<!-- <ItemNrInt>ART-10045</ItemNrInt> -->
<SupplNr>ABC</SupplNr>
<!-- <EAN>4006381333931</EAN> -->
</ns1:pixiDeleteItemSupplier>
</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:pixiDeleteItemSupplier>
<!-- <ItemKey>12345</ItemKey> -->
<!-- <ItemNrInt>ART-10045</ItemNrInt> -->
<SupplNr>ABC</SupplNr>
<!-- <EAN>4006381333931</EAN> -->
</ns1:pixiDeleteItemSupplier>
</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 = [
// 'ItemKey' => '12345',
// 'ItemNrInt' => 'ART-10045',
'SupplNr' => 'ABC',
// 'EAN' => '4006381333931',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiDeleteItemSupplier', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiDeleteItemSupplier