Update-SalesOrderLineItems #
ÜBERSICHT #
Aktualisiert die Auftragspositionen eines vorhandenen Auftrags in EULANDA.
SYNTAX #
Update-SalesOrderLineItems [-XmlFile] <string> [-Conn] <__ComObject> [-ReplaceLineItems]
[-CreateArticle] [<CommonParameters>]
BESCHREIBUNG #
Diese Funktion ersetzt oder ergänzt die Positionen eines bestehenden Auftrags. Sie liest die interne Auftrags-ID automatisch aus der XML-Datei und nutzt dazu zwei mögliche Schlüssel - in dieser Reihenfolge:
(eindeutig, bevorzugt) Falls vorhanden, wird der Auftrag über dbo.Auftrag.KopfNummer ermittelt. Dieser Pfad ist eindeutig und sollte immer verwendet werden, wenn der Auftrag bereits in EULANDA existiert und dessen Nummer bekannt ist (z. B. wenn eine externe App eine vorbereitete Auftrags-XML zurückspielt). (Käuferbestellnummer, Fallback) Nur wenn im XML fehlt oder leer ist. Achtung: die Bestellnummer ist nicht eindeutig - bei mehr als einem Treffer bricht die Funktion mit einer klaren Fehlermeldung ab, statt stillschweigend einen beliebigen Auftrag zu erwischen.
Der Auftrag muss im System existieren, sonst wird eine Exception geworfen.
Die Funktion wurde ursprünglich für eine Integration mit einer externen Auftragserfassung vorgesehen. Diese bekommt einen leeren Auftrag, der am Handy oder Tablet im Außeneinsatz erfasst wird.
POSITIONS-TEXTE: IDENT, LANGTEXT und KURZTEXT1 #
Das XSD-Schema kennt auf Positionsebene zwei Textfelder: IDENT (Pflicht) und LANGTEXT (optional). EULANDA trennt diese auf Positionsebene in zwei Spalten: AuftragPos.Kurztext1 und AuftragPos.Langtext. Sind die Positions-Spalten leer, zieht EULANDA beim Lesen automatisch die entsprechenden Werte aus dem Artikelstammsatz (Artikel.Kurztext1 bzw. Artikel.Langtext). Nur wenn die Position selbst einen Wert trägt, gewinnt dieser gegenüber dem Stammsatz.
Der Import setzt die Positions-Spalten deshalb so:
<LANGTEXT>->AuftragPos.Langtext: Eins-zu-eins übernommen. Fehlt das Element im XML, bleibt die Spalte leer und der Stammsatz-Langtext gewinnt.
<IDENT>->AuftragPos.Kurztext1: Nur wennIDENTsich vonARTNUMMERunterscheidet. Sender dieIDENTaus der gleichen Quelle wieARTNUMMERfüllen (typisch bei simplen CSV-Integrationen) bekommen damit keinen Kurztext1-Override, und der Stammsatz-Kurztext gewinnt. Nur wenn der Sender bewusst einen eigenen Kurztext inIDENTmitliefert, überschreibt er den Stammsatz.
- Artikelneuanlage (
-CreateArticle): Hier wandert<IDENT>überNew-Article -Fieldszusätzlich in den neu angelegten Artikelstammsatz.
Damit bleibt die EULANDA-Stammsatz-Mechanik intakt: wer etwas Abweichendes liefern will, kann das - wer nichts liefert, bekommt automatisch die Stammsatz-Werte.
PARAMETER #
-XmlFile #
Type: string
Pfad zur EULANDA-AUFTRAG-XML-Datei.
-Conn #
Type: __ComObject
Eine aktive COM-Verbindung zur EULANDA-Datenbank.
-ReplaceLineItems #
Type: switch
Wenn gesetzt, werden alle vorhandenen Positionen des Auftrags gelöscht, bevor neue Positionen angelegt werden. Dies kann insbesondere dann sinnvoll sein, wenn beim Außeneinsatz ausschließlich tatsächlich erfasste Leistungen berechnet werden sollen, im System jedoch bereits Vorschlagspositionen vorhanden sind.
In einem solchen Szenario könnten die bestehenden Positionen zuvor als Sichtvorlage (z. B. HTML oder PDF) an den Außendienstmitarbeiter übermittelt werden, damit dieser einen Überblick über die vorgesehenen Aufgaben hat.
Hängt am Auftrag bereits ein Lieferschein, dessen Positionen via afp_id auf Auftragspositionen referenzieren, bricht die Funktion mit einer klaren Meldung ab (statt eine FK-Verletzung beim DELETE auszulösen).
-CreateArticle #
Type: switch
Wenn gesetzt, werden Artikel, die in der Datenbank nicht gefunden werden, automatisch neu angelegt. Ohne diesen Schalter wird eine Exception geworfen, sobald ein Artikel nicht zugeordnet werden kann.
AUSGABEN #
[int[]]
Gibt die IDs der neu angelegten Auftragspositionen zurück.
BEISPIELE #
# Alle Positionen neu anlegen und alte löschen
$xml = 'C:\EulandaXtools\orders.xml'
Update-SalesOrderLineItems -Conn $conn -XmlFile $xml -ReplaceLineItems
# Nur zusätzliche Positionen hinzufügen
$xml = 'C:\EulandaXtools\orders.xml'
Update-SalesOrderLineItems -Conn $conn -XmlFile $xml