Buchungseintrag aus Sendung erzeugen

Siehe auch: Zeitfenstermanagement (Ereignisse)

Ereignisaktion - Kurzfassung

Zweck: Erzeugt ausgehend von einer Sendung eine Zeitfensterbuchung, der optional statische Werte für spezifische Felder und Attributwerte aus der Sendung zugewiesen werden können.


images/download/attachments/177913538/image-2024-9-24_14-38-23-version-1-modificationdate-1727181502303-api-v2.png

Die Ereignisaktion Buchungseintrag aus Sendung erzeugen soll ausgehend von einer Entität vom Typ "Sendung" (s. Sendungen) eine Entität vom Typ "Zeitfensterbuchung" erzeugen.

Die zu erstellende Zeitfensterbuchung kann dabei über statische Zuweisungen für Auswahlfelder nach spezifischen Kriterien für das Zeitfenstermanagement klassifiziert werden.

Außerdem können über den Tab-Reiter Kopierattribute die Werte von ausgewählten typisierten Attributen von der Sendung auf die neu angelegte Zeitfensterbuchung übertragen werden.
HINWEIS◄ Das "Kopieren" funktioniert nur für Attributtypen, die für die Entität "Zeitfensterbuchung" auch unterstützt werden (s. Auflistung unter Zeitfensterbuchung-Masken). Weitere Einschränkungen beschreibt der Abschnitt "Konfiguration".

Die Ereignisaktion Buchungseintrag aus Sendung erzeugen wird typischerweise einer Ereignisbehandlung ausgeführt, die auf den Auslöser "Erzeuge Buchungseintrag aus Sendung" (s. Zeitfenstermanagement (Ereignisse)) reagiert. Dieses Ereignis wird durch den Ribbonmakro-Befehl "Zeitfensterbuchung / Erzeugen" (s. Verfügbare Befehle) ausgelöst, der den folgenden Workflow für die Anlage einer Zeitfensterbuchung zu einer bestehenden Sendung vorsieht:

  1. Eine Einfachauswahl innerhalb einer Übersicht oder die geöffnete Erfassungsmaske identifiziert genau eine Sendung für die eine Zeitfensterbuchung erzeugt werden soll.

  2. Der Befehl "Zeitfensterbuchung / Erzeugen" wird innerhalb eines Ribbonmakros (als per Klick auf einen Ribbon-Button) ausgeführt und löst das Ereignis "Erzeuge Buchungseintrag aus Sendung" aus.

  3. Eine Ereignisbehandlung reagiert auf das Ereignis "Erzeuge Buchungseintrag aus Sendung" und führt die Ereignisaktion Buchungseintrag aus Sendung erzeugen aus.

  4. Sofern die Ereignisaktion erfolgreich eine Zeitfensterbuchung erzeugen kann, wird mit den volatilen Daten der neuen Zeitfensterbuchung eine Buchungsübersicht geöffnet.

  5. Der Benutzer kann die angelegte Zeitfensterbuchung dort bearbeiten und per "Speichern" erstellen oder verwerfen.

Die eigentliche "Buchung", also das Einplanen der erzeugten Zeitfensterbuchung an einem Termin für eine konkrete Ladestelle erfolgt in einem separaten Schritt innerhalb der Buchungsübersicht.

Konfiguration

Die Ereignisaktion Buchungseintrag aus Sendung erzeugen erwartet eine Entität vom Typ "Sendung" (s. Sendungen), für die eine andere Entität vom Typ "Zeitfensterbuchung" erzeugt werden soll.

  • Im typischen Einsatzfall (s. o.) der Ereignisaktion liegt die Sendung als Bezugsobjekt und Eingabewert der umgebenden Ereignisbehandlung vor.

  • Allerdings greift die Ereignisaktion nicht direkt auf das Bezugsobjekt (in der Variable entity) zu. Vielmehr erwartet sie eine Liste von Sendungen als Wert der Variablen shipments.

  • Die Variable shipments enthält im typischen Einsatzfall genau ein Element, nämlich die Sendung, die auch als Bezugsobjekt anliegt.

  • Die Vorbelegung der Variablen shipments ist aber nur gewährleistet, wenn die Ereignisbehandlung durch das Ereignis "Erzeuge Buchungseintrag aus Sendung" (s. Zeitfenstermanagement (Ereignisse)) ausgelöst wurde.

Sofern die Ereignisaktion unabhängig vom Ereignis "Erzeuge Buchungseintrag aus Sendung" eingesetzt werden soll, kann der Variable shipments auch anderweitig eine existierende Sendung als Element einer Liste zugewiesen werden.

  • Dann muss aber auch die Variable header mit einem (leeren) Liste-Objekt initialisiert Dieser Liste fügt die Ereignisaktion (im Erfolgsfall) die neu erzeugte Zeitfensterbuchung-Instanz hinzu.

  • Die Variable header ermöglicht bei Bedarf auch "Nachbearbeitungen" oder das Speichern der erzeugten Entität (per Änderungen später speichern).

Sind die Variablen shipments und header im Kontext der Ereignisaktion Buchungseintrag aus Sendung erzeugen nicht "geeignet" vorbereitet, kommt es zur Laufzeit zu einem Fehler mit Rollback.

Der Tab-Reiter Buchungseintrag aus Sendung erzeugen enthält je ein Auswahlfeld für die spezifischen Dynamischen Aufzählungen, die das Zeitfenstermanagement-Modul für die Klassifikation von Zeitfensterbuchungen vorsieht.

Jedem Parameter entspricht ein Feld im Datenmodell der "Zeitfensterbuchung", für das optional eine statische Zuweisung festgelegt werden kann:

images/download/attachments/177913538/image-2024-9-24_14-38-54-version-1-modificationdate-1727181533535-api-v2.png

Parameter / Aufzählung / Feld

Feldname (intern)

Verpackungstyp (ZFMT)

packageType

Fahrzeugtyp

typeOfVehicle

Warentyp

kindOfGoods

Transporttyp

modeOfTransport

Im zweiten Tab-Reiter Kopierattribute ermöglicht ein Wiederholendes Element optional die Konfiguration von mehreren Wertauflösern für Attribute deren Wert von der Sendung auf die neue Zeitfensterbuchung kopiert werden soll.

WICHTIG◄ Ungeeignete Konfigurationen für Kopierattribute führen zur Laufzeit zu einem Fehler mit Rollback. Dabei sind folgende Regeln zu beachten:

  1. Der Attributtyp muss für den Entitätstyp "Zeitfensterbuchung" anwendbar sein (s. Zeitfensterbuchung-Masken für anwendbare Attributtypen).

  2. Plurale Attribute können auch dann nicht kopiert werden, wenn sie dem Typ nach für eine "Zeitfensterbuchung" anwendbar sind. Das "Beispiel" (unten) zeigt wie sie trotzdem übertragen werden können.

  3. Der Wertauflöser für Alle Attribute eines Typs kann nicht verwendet werden, um Attribute eines Typs pauschal zu kopieren.

images/download/attachments/177913538/image-2024-9-24_14-42-47-version-1-modificationdate-1727181766363-api-v2.png

Über die Symbole images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/add.svg und images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/forbidden.svg können Konfigurationen für Kopierattribute hinzugefügt oder entfernt werden. Innerhalb jeder angelegten Instanz muss ein Wertauflöser verwendet werden, der ein vollständiges, einzelnes Attribut der Sendung zurückgibt, das dem Typ nach für die Zeitfensterbuchung anwendbar ist. Typischerweise kommt dabei ein Typisiertes-Attribut (Wertauflöser) zum Einsatz.

Beispiel

Das Zeitfenstermanagement wird für das Scheduling von Annahmeprozessen für "Giftmüll" an diskreten (Ent-)Ladestellen in einem Entsorgungsbetrieb eingesetzt. Für geplante Sendungen mit dem Sendungstyp "Giftmüll-Entsorgung" soll dabei per Knopfdruck eine "Zeitfensterbuchung" angelegt werden können. Aus den so angelegten Zeitfensterbuchungen ergibt sich ein "Arbeitsvorrat", aus dem der für die Entladung zuständige Disponent eine Belegungsplanung für die Ladestellen zusammenstellt. Für diese Feinplanung relevante Merkmale der Sendung sollen automatisch für die Zeitfensterbuchung übernommen werden.

Laufzeitbeispiel:

Rechts ist eine Erfassungsmaske für Sendungen mit dem Sendungstyp "Giftmüll-Entsorgung" mit den folgenden Merkmalen dargestellt:

  • Da es sich bei einer "Giftmüll"-Sendung in unserem Fall immer um "Schüttgut" handeln soll, sind nur zwei numerische Attribute "Volumen Brutto" und "Gewicht Brutto" vorgesehen. Für die Planung der Entladung ist nur das "Volumen Brutto" in der verbindlich voreingestellten Volumeneinheit "Kubikmeter" ausschlaggebend.

  • Das Datumsattribut "Ankunftszeit geplant" informiert über den planmäßigen Zeitpunkt der Anlieferung.

  • Das Firmenattribut "Frachtführer" verweist auf die Firma, die für den Transport verantwortlich ist.

  • Die folgenden "Referenzattribute" qualifizieren diverse Merkmale der Sendung, die jeweils entweder einfach oder mehrfach vorkommen können.

  • Unterhalb folgt eine Auflistung von Kennungen von Containern im pluralen Textattribut "Container No", über die bei Bedarf eine Rückverfolgung der Herkunft des versendeten Mülls möglich sein soll.

Soweit für die Entladung relevant, sollen diese Informationen auch in einer "Zeitfensterbuchung" ersichtlich sein. Aus der Sicht des Disponenten sollen diese Daten in der Buchungsübersicht wie unten gezeigt erscheinen:

images/download/attachments/177913538/image2021-8-27_16-25-43-version-1-modificationdate-1727181487751-api-v2.png

images/download/attachments/177913538/image2021-8-27_16-48-47-version-1-modificationdate-1727181487744-api-v2.png

Konfiguration:

Die folgende Konfiguration bezieht sich grundsätzlich auf das typische Einsatzszenario, nämlich eine Auslösung der Ereignisbehandlung über den Ribbonmakro-Befehl "Zeitfensterbuchung / Erzeugen" (s. Verfügbare Befehle).

Im Aktionsteil der Ereignisbehandlung werden allerdings auch Gestaltungsmöglichkeiten aufgezeigt, die nicht Bestandteil der typischen Vorgehensweise sind.

Eine Ereignisbehandlung für das Auslösende Ereignis "Erzeuge Buchungseintrag aus Sendung" (s. Zeitfenstermanagement (Ereignisse) wird angelegt und wie folgt konfiguriert:

  • Die Prüfende kombiniert hier eine Typprüfung für den Entitätstyp "Sendung" mit einer Objekt-Feld-Regel, die prüft, ob für diese der Sendungstyp "Giftmüll-Entsorgung" angegeben ist. Auf Details hierzu sei verzichtet.

    HINWEIS◄ Das Auslösende Ereignis stellt dieselbe Sendung als einziges Element einer Liste in der Variablen shipments bereit. Nur die wird von der Ereignisaktion Buchungseintrag aus Sendung erzeugen unmittelbar verarbeitet.

Die Aktionen bei bestandener Regel werden hier zunächst im Überblick gezeigt und in den folgenden Abschnitten detaillierter beleuchtet:

  • Im ersten Schritt wird die Ereignisaktion Buchungseintrag aus Sendung erzeugen ausgeführt, um eine Zeitfensterbuchung für die Sendung anzulegen und mit den Mitteln der Ereignisaktion zu initialisieren.

  • Die nachfolgende Ausführen mit-Ereignisaktion greift über die Variable header auf die erzeugte Zeitfensterbuchung zu, die darin als einziges Element einer Liste vorliegen sollte, nachdem die Ereignisaktion Buchungseintrag aus Sendung erzeugen ausgeführt wurde. Neben Anpassungen an der Zeitfensterbuchung, die über die Standardfunktionen nicht direkt möglich sind, wird dabei auch in den Daten der Sendung eine Referenz auf die neu angelegte Zeitfensterbuchung eingerichtet.

  • Die abschließend muss die Ereignisaktion Änderungen später speichern für mit der Sendung als Bezugsobjekt ausgeführt werden, damit die angelegte Referenz gespeichert wird.

images/download/attachments/177913538/image2021-8-27_16-53-35-version-1-modificationdate-1727181487741-api-v2.png

Die Ereignisaktion Buchungseintrag aus Sendung erzeugen wird wie rechts abgebildet konfiguriert:

  • Im Tab-Reiter Buchungseintrag aus Sendung erzeugen werden über einige der optionalen Parameter statische Zuordnungen für Felder der neuen Zeitfensterbuchung festgelegt. Offenbar soll für alle Sendungen, für die die Prüfende Regel (s. o.) zutrifft, folgende Klassifikation gelten:

ANMERKUNG◄ Der Verpackungstyp wird hier nicht statisch gesetzt. In der Nachbehandlung der Zeitfensterbuchung könnte eine Zuordnung für das Feld ausgehend von Daten der Sendung erfolgt. Allerdings ist das nicht erforderlich.

Im zweiten Tab-Reiter Kopierattribute wurden wird hier der Typisiertes-Attribut (Wertauflöser) vier Mal eingesetzt, um Attribute der Sendung als Kopierattribute zu spezifizieren:

  • Datumsattribut für den Datumstyp "Ankunftsdatum geplant"

  • Firmenattribut für den Firmentyp "Frachtführer"

  • Numerisches Attribut für den Nummerntyp "Volumen Brutto"

  • Numerisches Attribut für den Nummerntyp "Gewicht Brutto"

Zur Laufzeit bewirkt diese Konfiguration, dass in den Daten der neuen Zeitfensterbuchung entsprechende Typisierte Attribute angelegt werden, sofern die Sendung entsprechende Daten enthält.

ANMERKUNG◄ Ob in der Buchungsübersicht Elemente für die Anzeige entsprechender Details enthalten sind (s. Zeitfensterbuchung-Masken) spielt für die Anlage der Attribute keine Rolle. Entscheidend ist aber, dass nur Attributtypen verwendet werden, die für die Entität "Zeitfensterbuchung" grundsätzlich unterstützt werden. Im vorliegenden Beispiel sind vor diesem Hintergrund einerseits die "Referenzattribute" der Sendung problematisch, da dieser Attributtyp in Zeitfensterbuchungen grundsätzlich nicht anwendbar ist. Andererseits kann das plurale Textattribut "Container No" nicht mit der Standard-Methodik kopiert werden.

images/download/attachments/177913538/image-2024-9-24_15-6-10-version-1-modificationdate-1727183169891-api-v2.png

Tab-Reiter Kopierattribute:

images/download/attachments/177913538/image-2024-9-24_16-30-51-version-1-modificationdate-1727188250415-api-v2.png

Da nicht immer alle Daten aus der Sendung mit der Standardmethodik in die neu erzeugte Zeitfensterbuchung überführt werden können, werden hier einige Optionen für eine spezfische "Nachbehandlung" der Entität aufgezeigt:

  • Innerhalb der rechts abgebildeten Ausführen mit-Ereignisaktion wird zunächst die Zeitfensterbuchung als abweichendes Bezugsobjekt für die nachfolgenden Ereignisaktionen definiert. Die Ereignisaktion Buchungseintrag aus Sendung erzeugen gibt die Zeitfensterbuchung über die Variable header als einziges Element einer Liste zurück, die zuvor beim Ausführen des Ereignisses (leer) initialisiert wurde. Der mit dem Variable-Wertauflöser verkettete Listenwert-Wertauflöser mit dem Offset-Wert von 0 definiert erste (hier: einzige) Element der Liste.

  • Die folgende Setze Wert-Ereignisaktion weist dem Feld Bemerkungen (remarks) eine Zeichenfolge zu, die aus einer Liste aller Referenzattribute (s. Alle Attribute eines Typs) per Sammle Werte als Textverkettung von Referenztyp und dem Wert der "Referenz" (reference) je Attribut erzeugt wird. Die Ausgabe ist im obigen Laufzeitbeispiel ersichtlich. Auf Details dazu sei verzichtet.

    ANMERKUNG◄ Die "Referenzen" werden durch die Verkettung nur informativ wiedergegeben. Ein systematischer Zugriff auf Einzelwerte ist danach nur bedingt gewährleistet. Für den planenden Disponenten sollte die Spiegelung der Sendungsdaten in dieser Form ausreichen.

  • Die folgende Setze Wert-Ereignisaktion überträgt die "Container No"-Liste aus dem pluralen Textattribut der Sendung direkt in das entsprechende Attribut der Zeitfensterbuchung. Hier kann bei Quelle und Ziel der Typisierte plurale Attribute (Wertauflöser)-Wertauflöser erfolgreich eingesetzt werden - anders als im Tab-Reiter Kopierattribute der Ereignisaktion Buchungseintrag aus Sendung erzeugen.

  • Per Änderungen später speichern wird die neue Zeitfensterbuchung anschließend zum Speichern am Ende der Transaktion vorgemerkt. Dadurch wird ihr sofort eine ID zugewiesen. Die für den nächsten Schritt benötigt wird.

  • Per Setze Wert wird die ID der neuen Zeitfensterbuchung als "ID der verknüpften Entität" in einem für diesen Zweck vorgesehenen Verknüpfte-Entitäts-Attribut (mit dem Typ "Zeitfensterbuchung" - SHIPMENT_TO_BOOKING) in der Sendung vermerkt.


images/download/attachments/177913538/image2021-8-27_17-37-35-version-1-modificationdate-1727181487732-api-v2.png

ANMERKUNG◄ In einer Erfassungmaske für "Giftmüll"-Sendungen kann dann ein Element für das Verknüpfte-Entitäts-Attribut eingebunden werden, in dem nicht nur die Referenz auf die Zeitfensterbuchung, sondern z. B. auch deren Arbeitsstatus ersichtlich ist:

images/download/attachments/177913538/image2021-8-27_18-2-58-version-1-modificationdate-1727181487726-api-v2.png

  • Über einen Button (ganz recht oben) kann im Beispiel außerdem noch die Buchungsübersicht mit den Daten der referenzierten Zeitfensterbuchung geöffnet werden.