pixiEstimatedDeliveryUpdates
Berechnet die voraussichtlichen Liefertermine von Auftragspositionen und Artikeln für einen Auftrag, eine Shop-Bestellnummer oder einen Artikel neu und stellt geänderte Artikel zum Export ein.
Wrapper um die interne Prozedur Pixi_EstimatedDeliveryUpdates.
OrderNr = 0,ShopOrderNr = ''undItemRef = 0werden als NULL behandelt.- Sind alle drei Parameter NULL, endet der Aufruf sofort ohne jede Änderung. Eine vollständige Neuberechnung aller Artikel ist über diesen Aufruf nicht möglich.
- Andernfalls wird die interne Prozedur mit den übergebenen Werten ausgeführt.
Auswahl der Artikel
OrderNr: Artikel der Auftragspositionen dieses Auftrags (nicht gelöscht,OrderNr <> 0) mit StatusANGoderHALsowie Positionen, die zu einer Bundle-Position gehören.ShopOrderNr: ebenso, abgeglichen überOrderlines.OrderNrExternal.ItemRef: der Artikel selbst. Ist er ein Bundle, werden seine Bestandteile ergänzt und das Bundle wird ebenfalls neu berechnet.- Direkt berechnet werden nur Artikel, die keine Bundles sind. Wird kein Artikel gefunden, endet die Prozedur ohne Änderungen.
Berechnung (Einstellung EstimatedDeliveryCalcUsesFIFO)
1(FIFO): Bestandseinheiten in Lagern mitParticipateInEstDelivery = 1und offene Mengen bestätigter Lieferantenbestellpositionen (IsOrderedConfirmed = 1, mit voraussichtlichem Liefertermin, in teilnehmenden Lagern) werden Stück für Stück den offenen Auftragspositionen mit StatusANG/HALzugeordnet. Die Positionen werden nachAutoReservationDoneabsteigend, Auftragsdatum und Positionsschlüssel sortiert. Jede Auftragsposition erhält den Termin ihrer zuletzt zugeordneten Einheit und die verwendete Lieferantenbestellposition (RealSorderlineRef). Bestand und Termine in der Vergangenheit ergeben das heutige Datum. Der Artikel erhält den Termin der nächsten Einheit, die nach allen offenen Positionen noch frei ist, oder NULL.0(MAX) /2(MIN): der späteste bzw. früheste voraussichtliche Liefertermin bestätigter Lieferantenbestellpositionen mit teilnehmendem Lieferlager. Er wird nur verwendet, wenn er nach dem heutigen Datum liegt und noch offene Menge besteht. Alle Auftragspositionen des Artikels und der Artikel selbst erhalten diesen Termin.- Jeder andere Wert berechnet nichts.
Bereinigung und Bundles
- Sofern nicht alle drei Parameter gefüllt sind, werden vorhandene Einträge in
Orderline_EstimatedDeliveryundItem_EstimatedDelivery(Artikel ohne Bundles), die nicht neu berechnet wurden, auf NULL gesetzt und damit gelöscht. - Bundles erhalten den spätesten Termin ihrer Bestandteile. Hat ein Bestandteil keinen Termin, erhält das Bundle keinen Termin.
Speichern
Item_EstimatedDeliveryundOrderline_EstimatedDeliverywerden per MERGE aktualisiert. Ein NULL-Ergebnis löscht die Zeile, ein geänderter Wert wird mit neuem Änderungsdatum aktualisiert, ein neuer Artikel bzw. eine neue Position wird eingefügt.- Geänderte Bundles sowie geänderte Artikel, die bereits einen Eintrag in
InvBinItemLoghaben, werden mitForceToExport = 1inpixi.ItemRecalculateStockQueueeingestellt. - Geänderte Artikel ohne Eintrag in
InvBinItemLogerhalten eine Log-Zeile mit Menge 0 undUpdateEmp = 'AutoEstDelExp', damit sie exportiert werden.
Der Aufruf liefert keine Ergebnismenge.
Hinweise
- Fallstrick: Der Bereinigungsschritt ist nicht auf den ausgewählten Auftrag oder Artikel beschränkt. Sofern nicht
OrderNr,ShopOrderNrundItemRefalle gefüllt sind, wird jeder Eintrag inOrderline_EstimatedDeliveryundItem_EstimatedDelivery(Artikel ohne Bundles), der in diesem Lauf nicht neu berechnet wurde, systemweit gelöscht. - Ist an der Auswahl kein Bundle beteiligt, werden alle Bundles im System anhand der aktuellen Ergebnisse neu berechnet.
- Im Modus MAX/MIN erhalten alle Auftragspositionen des Artikels den Termin, unabhängig von ihrem Status. Im FIFO-Modus werden nur offene Positionen mit Status
ANG/HALberücksichtigt. - Der Berechnungsmodus stammt aus der Einstellung
EstimatedDeliveryCalcUsesFIFO, die zur Laufzeit überfpixi_GetSettinggelesen wird. Deren Definition liegt nicht vor. - Die Prozedur gibt 0 zurück, wenn nichts getan wurde, sonst 1. Die SOAP-Antwort enthält diesen Rückgabewert nicht als Zeile.
- Es gibt keine explizite Transaktion. Lesezugriffe verwenden
NOLOCK. - Der FIFO-Modus zerlegt Mengen über
dbo.Numbersin einzelne Einheiten. Bei großen Mengen kann das langsam sein.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
OrderNr
|
int | NULL |
Pixi-Auftragsnummer. Die Artikel der offenen Auftragspositionen dieses Auftrags werden neu berechnet. 0 wird als NULL behandelt. Beispiel: |
ShopOrderNr
|
varchar(50) string |
NULL |
Externe Shop-Bestellnummer, abgeglichen über Beispiel: |
ItemRef
|
int | NULL |
Artikelschlüssel ( Beispiel: |
Antwort
Dieser Call liefert kein Result-Set.
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:pixiEstimatedDeliveryUpdates>
<!-- <OrderNr>104523</OrderNr> -->
<!-- <ShopOrderNr>SHOP-2024-000815</ShopOrderNr> -->
<!-- <ItemRef>5871</ItemRef> -->
</ns1:pixiEstimatedDeliveryUpdates>
</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:pixiEstimatedDeliveryUpdates>
<!-- <OrderNr>104523</OrderNr> -->
<!-- <ShopOrderNr>SHOP-2024-000815</ShopOrderNr> -->
<!-- <ItemRef>5871</ItemRef> -->
</ns1:pixiEstimatedDeliveryUpdates>
</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 = [
// 'OrderNr' => '104523',
// 'ShopOrderNr' => 'SHOP-2024-000815',
// 'ItemRef' => '5871',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiEstimatedDeliveryUpdates', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiEstimatedDeliveryUpdates