Invoke-ProcessTracking #
ÜBERSICHT #
Verarbeitet Tracking-Informationen aus einer Dachser-XML-Bestätigung und aktualisiert die Lieferdaten in der Datenbank.
SYNTAX #
Invoke-ProcessTracking [-Xml] <xml> [[-DeliveryNo] <int>] [-TestMode]
BESCHREIBUNG #
Diese Funktion liest die Tracking-Informationen aus dem übergebenen XML-Dokument. Je nach Versandart (ShippingRoute) wird die passende Logik angewendet:
- UPS : Trackingnummern werden in
über SSCC-Verweise gefunden. Es müssen gültige 1Z-Nummern vorhanden sein. - FEE : (FedEx Economy) Trackingnummern stehen direkt in
, dürfen aber keine 1Z-Nummern sein. - SPE : Spedition/Palette, keine Trackingnummern vorgesehen.
- ABH : Abholung, keine Trackingnummern vorgesehen.
Für Transportarten ohne Tracking (SPE, ABH) wird lediglich ein Hinweis ausgegeben, aber es werden keine Datenbankeinträge erzeugt.
Anschließend wird – falls zutreffend – die Datenbank mit den Trackingnummern aktualisiert, der Lieferstatus (vollständig, teilweise, komplett fehlend) in die Eigenschaften-Baumstruktur der Lieferungen eingetragen und ein HTML-Block für Warnungen erzeugt.
PARAMETER #
-Xml #
Type: xml
Mandatory: True
Das XML-Dokument (DeliveryOrderConfirmation) mit den Trackingdaten.
-DeliveryNo #
Type: int
Lieferscheinnummer in EULANDA, auf die die Trackingdaten angewendet werden sollen.
-TestMode #
Type: switch
Wenn gesetzt, werden vorhandene Tracking-Eigenschaften vorher gelöscht, damit Testläufe nicht kumuliert werden.
AUSGABEN #
Gibt einen HTML-String zurück, der bei Warnungen (fehlende Tracking-
Nummern) in E-Mails eingebunden werden kann.
BEISPIELE #
# Trackingdaten einer Dachser-XML einlesen und verarbeiten
$xml = [xml](Get-Content 'RUCK_20250918.xml')
Invoke-ProcessTracking -Xml $xml -DeliveryNo 4711 -Verbose
HINWEISE #
- Im Kontext der Spezialanwendung ist ‘ArticleNo’ eigentlich der BARCODE in der ERP EULANDA.
- In Standardsystemen ist ‘ArticleNo’ das native Feld ‘ARTNUMMER’ gemeint.
- Diese abweichende Bedeutung ist bei allen Abgleichen zu berücksichtigen.
$udlFile = “C:\ProcosSystem\Eulanda_1 ProcosUSA.udl”
$conn = new-object -comObject ADODB.Connection $conn.CursorLocation = $adUseClient $conn.ConnectionString = “File Name=$Script:udlFile” $conn.CommandTimeout = $adTimeout $conn.Open()
UPS #
$xmlFile = “C:\ProcosSystem\clients\US\DACHSER_US\inbox\finished\RUCKP2A6_371_2025.07.31-17-00-20.XML” [xml]$xml = Get-Content -Path $xmlFile -Raw $deliveryNo = 439059 Invoke-ProcessTracking -xml $xml -DeliveryNo $deliveryNo -Verbose -WhatIf
FEDEX #
$xmlFile = “C:\ProcosSystem\clients\US\DACHSER_US\inbox\finished\RUCKP2BR_606_2025.09.17-22-16-50.XML” [xml]$xml = Get-Content -Path $xmlFile -Raw $deliveryNo = 439623 Invoke-ProcessTracking -xml $xml -DeliveryNo $deliveryNo -Verbose -WhatIf
SPE #
$xmlFile = “C:\ProcosSystem\clients\US\DACHSER_US\inbox\error\RUCKP2BK_525_2025.09.11-16-52-34.XML” [xml]$xml = Get-Content -Path $xmlFile -Raw $deliveryNo = 439442 Invoke-ProcessTracking -xml $xml -DeliveryNo $deliveryNo -Verbose -WhatIf
#BUG UPS ohne Tracking $xmlFile = “C:\ProcosSystem\clients\US\DACHSER_US\inbox\error\RUCKP2A1_352_2025.07.28-17-54-59.XML” [xml]$xml = Get-Content -Path $xmlFile -Raw $deliveryNo = 438383 Invoke-ProcessTracking -xml $xml -DeliveryNo $deliveryNo -Verbose -WhatIf
Bug UPD #
$xmlFile = “C:\ProcosSystem\clients\US\DACHSER_US\inbox\error\RUCKP283_120_2025.05.08-21-40-42.XML” [xml]$xml = Get-Content -Path $xmlFile -Raw $deliveryNo = 438166 Invoke-ProcessTracking -xml $xml -DeliveryNo $deliveryNo -Verbose -WhatIf
Suchnummer #
$searchNumber = ‘68175-00000263651-9’
Startordner #
$basePath = ‘C:\ProcosSystem’
Rekursiv alle passenden Dateien durchsuchen #
Get-ChildItem -Path $basePath -Recurse -Filter ‘RUCK*.xml’ -File | Select-String -Pattern $searchNumber | ForEach-Object { [PSCustomObject]@{ File = $.Path Line = $.LineNumber Text = $_.Line.Trim() } }