Berechne aggregierte Anzahl Packstücke
Ereignisaktion - Kurzfassung
Zweck: Befüllt in einem Allgemeines Geschäftsobjekt die Felder für "Aggregierte Anzahl Packstücke" über Positionsebenen von allen oder ausgewählten Positionstypen und summiert wahlweise (zusätzlich) die "Anzahl Packstücke" der direkten Positionen als auf der Kopfebene.
Siehe auch: Berechne aggregierte Anzahl Packstücke (Bestellung), Berechne aggregierte Anzahl Packstücke (Sendung)
Die Ereignisaktion Berechne aggregierte Anzahl Packstücke führt für alle oder ausgewählte Positionstypen (s. Positionstyp) in einem Bezugsobjekt vom Typ Allgemeines Geschäftsobjekt folgende Schritte aus:
Innerhalb der Positionshierarchie für jeden relevanten Positionstyp wird für jede Position dem Feld "Anzahl Packstücke" (numberOfPackages) der Wert 1 zugewiesen, sofern es leer oder mit 0 gefüllt ist.
Innerhalb der Positionshierarchie für jeden relevanten Positionstyp wird für jede Position das Feld "Aggregierte Anzahl Packstücke" (aggregateNumberOfPackages) nach dem im Abschnitt "Berechnungslogik" beschriebenen Verfahren befüllt.
Ist die Option Gesamtsumme berechnen ausgewählt (Standard), dann wird zusätzlich die Summe über das Feld "Anzahl Packstücke" (numberOfPackages) in allen direkten Positionen für alle relevanten Positionstypen berechnet.
Diese Gesamtanzahl wird dem Feld "Anzahl Packstücke" (numberOfPackages) des Bezugsobjekts zugewiesen.
Laufzeitbeispiel:
Der folgende Screenshot zeigt anhand einer einfachen Erfassungsmaske für ein fiktives Allgemeines Geschäftsobjekt vom Typ "Aktionspaket" (PACKAGE_DEAL) schematisch die Auswirkung je Schritt innerhalb einer mehrstufigen Positionshierarchie:
In Schritt 1 wird für "unvollständige" Positionen der Standardwert 1 für die Anzahl Packstücke ergänzt, um die nachfolgenden Schritte vorzubereiten.
In Schritt 2 wird die Aggregierte Anzahl Packstücke für jede relevante Position berechnet und zugewiesen.
In Schritt 3 wird für die direkten Positionen die Anzahl Packstücke aufsummiert.
In Schritt 4 wird die "Gesamtsumme" aus Schritt 3 der Anzahl Packstücke in den Kopfdaten des Bezugsobjekts zugewiesen.
►HINWEIS◄ Die visualisierten Berechnungen und Zuweisungen finden natürlich völlig unabhängig von der Darstellung der betreffenden Elemente in einer Erfassungsmaske statt. Sie betreffen direkt die volatilen Daten des Bezugsobjekts, das durch die Ereignisaktion nicht gespeichert wird.
Berechnungslogik
Innerhalb der Positionshierarchie für jeden der ausgewählten Positionstypen wird dabei die "Anzahl Packstücke" (numberOfPackages) jeder übergeordneten Position als Skalar für die "Anzahl Packstücke" jeder direkten oder indirekten Unterposition gewertet.
Für Positionen der obersten Ebene wird die "Aggregierte Anzahl Packstücke" (aggregateNumberOfPackages) direkt aus der "Anzahl Packstücke" (numberOfPackages) übernommen.
Für eine Unterposition wird die "Aggregierte Anzahl Packstücke" (aggregateNumberOfPackages) als Produkt von "Anzahl Packstücke" (numberOfPackages) der Unterposition mit "Aggregierte Anzahl Packstücke" (aggregateNumberOfPackages) der übergeordneten Position berechnet.
Dieses Schema wird innerhalb einer mehrstufigen Hierarchie von oben nach unten über alle Stufen angewendet, so dass mit jedem Schritt in die Tiefe der Hierachie ein zusätzlicher Skalar als Faktor in der Multiplikation hinzukommt.
Beispiel:
Positionshierarchie |
Warenbeschreibung |
Anzahl Packstücke |
Berechnung |
Aggregierte Anzahl Packstücke |
||
1 |
Mischpalette Bier |
2 |
= |
2 Packstücke (Paletten) |
||
└ |
1.1 |
Kiste Bier (Lager) |
30 |
2 x 30 = |
60 Packstücke (Kisten) |
|
└ |
1.1.1 |
Flasche Bier (Lager) |
20 |
(2 x 30) x 20 = |
1200 Packstücke (Flaschen) |
|
└ |
1.2 |
Kiste Bier (Celebr8or) |
6 |
2 x 6 = |
12 Packstücke (Kisten) |
|
└ |
1.2.1 |
Flasche Bier (Celebr8or) |
24 |
(2 x 6) x 24 = |
288 Packstücke (Flaschen) |
|
└ |
1.1.2 |
Badetuch "Celebr8or" |
1 |
(2 x 6) x 1 = |
24 Packstücke (Badetuch) |
|
2 |
Badeinsel "Celebr8or" |
3 |
= |
3 Packstücke (Badeinsel) |
||
Kopfebene im Bezugsobjekt |
||||||
Gesamtsumme berechnen (optional) |
5 Packstücke |
∑ = 2 + 3 |
Konfiguration
Die Ereignisaktion Berechne aggregierte Anzahl Packstücke erwartet als Bezugsobjekt ein Allgemeines Geschäftsobjekt. Im Kontext eines anderen Objekttyps ist die Ereignisaktion wirkungslos, ohne dass zur Laufzeit ein Fehler auftritt.
Die Option Gesamtsumme berechnen (per Standard gesetzt) steuert, ob das Feld "Anzahl Packstücke" in den Kopfdaten des Bezugsobjekts anhand der Angaben für Direkte Positionen der relevanten Positionstypen aktualisiert werden soll.
Ohne diese Option entfallen Schritt 3 und Schritt 4 (s. Ablaufschema/Laufzeitbeispiel oben) ersatzlos.
Die Mehrfachauswahl für Positionstypen kann verwendet werden, um eine Positivliste für relevante Positionstypen (s. Positionstyp) zu definieren.
Sind keine Positionstypen ausgewählt, werden unabhängig vom Positionstyp alle Positionen im Bezugsobjekt ausgewertet.
Beispiel
Passend zum Laufzeitbeispiel (oben) soll innerhalb einer Erfassungsmaske für ein fiktives Allgemeines Geschäftsobjekt vom Typ "Aktionspaket" (PACKAGE_DEAL) per Klick auf einen Button die Ereignisaktion Berechne aggregierte Anzahl Packstücke für das angezeigte Bezugsobjekt ausgeführt werden.
Für den Button wird ein Verhalten mit einer Verhaltensweise Client Workflow eingerichtet, die wie rechts abgebildet konfiguriert wird:
►ANMERKUNG◄ Sofern die Berechnungen nicht nur manuell sondern z. B. auch automatisch beim Speichern ausgelöst werde sollen, kann statt dem Client Workflow auch eine Ereignisbehandlung konfiguriert werden, die dann vom Button über ein Eigenes Aktionsevent adressiert werden muss. |
|
Laufzeitbeispiel:
Auf der Basis der im vorherigen Laufzeitbeispiel (oben) gezeigten Eingaben in der Erfassungsmaske ergibt sich nach einem Klick auf den Button folgendes Bild:
In den Positionen 2.1 und 3 wurde der Wert 1 für Anzahl Packstücke ergänzt.
Die Aggregierte Anzahl Packstücke wurde für alle Positionen berechnet und zugewiesen.
Die Anzahl Packstücke in den Kopfdaten wurde berechnet und zugewiesen.