Das einzige Merkmal, welches in unserem Material bislang enthalten ist, ist das Merkmal Preis.
Oftmals ist es jedoch so, dass der Positionspreis eines Materials aus verschiedenen Anteilen gebildet wird, z.B. Anzahl, Deckungsbeitrag oder Rabatt.
Wir erweitern nun unser Material um die Merkmale
Anzahl
Deckungsbeitrag
Positionspreis
Der Deckungsbeitrag für Materialien beträgt 38%
Somit errechnet sich der Positionspreis zu
Anzahl * Preis * (1 + Deckungsbeitrag / 100)
Wir modifizieren die Klasse Material:
Zunächst wird das Merkmal Anzahl angelegt. Es ist vom Typ Double. Wir initialisieren es mit dem Wert 1
Danach legen wir das Merkmal Deckungsbeitrag an. Auch dieses ist vom Typ Double. Es wird mit 38 initialisiert.
Als nächstes wird das Merkmal Positionspreis angelegt. Es ist vom Typ Currency. Denken Sie an den Schalter Währungsfaktoren verwenden.
Wie wird nun eine Berechnung des Positionspreises angestoßen?
Dazu wird eine Funktion Kalkulation angelegt. Die Funktion soll bei jeder Regelüberprüfung die Berechnung des Positionspreises ausführen. Also erhält die Funktion eine Event-Regel:
In der Funktion wird die Berechnung des Positionspreises durchgeführt.
Positionspreis := Anzahl * Preis * (1 + Deckungsbeitrag / 100)
Natürlich ist die Überprüfung der Berechnung bei jeder Regelprüfung, insbesondere bei sehr vielen Objekten nicht sonderlich performant. Durch geeignete Maßnahmen lässt sich dies jedoch verbessern.
Da nun der aufzusummierende Wert des Materials das Merkmal Positionspreis ist, muss in der Klasse Start der Get-Event des Merkmales Summe angepasst werden:
Auch die Tabelle zur Ausgabe des Materials kann um die Merkmale Anzahl und Positionspreis erweitert werden.