TbeCbCostVector
Diese Klasse wurde speziell für das Codeblock Package “Lagerbuchführung” entwickelt.
Voraussetzung für die korrekte Verwendung der des TbeCbCostVector ist die Pflege der Tabellen DabLBK (LBF - Bewertungskreise) und DabLKA (LBF - Kostenarten)
TbeCostTypeValue
Die Klasse TbeCostTypeValue beschreibt die Objekte die in TbeCbCostVector gehalten werden. Diese Objekte beinhalten immer jeweils eine Kostenart und einen dazugehörigen Wert.
Eigenschaften | |
---|---|
CostType:N | ID der Kostenart (Nur lesend) |
Value:N | Wertbetrag (Nur lesen) |
TbeCbCostVector
Die Klasse TbeCbCostVector beschreibt einen Sonderfall eines Variablentyps zur Darstellung von Kostenvektoren.
Ein Kostenvektor besteht dabei aus einem Bewertungskreis und beliebig vielen Kostenarten. Der Bewertungskreis ist die Organisationsebene auf dem eine Bewertung durchgeführt wird.
Im Gegensatz zu anderen Codeblockklassen muss TbeCbCostVector nicht erzeugt werden.
Das geschieht durch die Deklaration als Kostenvektor < | vKostenVektor:CV | >
Eigenschaften | |
---|---|
ValuationID:N | ID des Bewertungskreises setzen oder lesen. |
Decimals:N | Gibt die Anzahl der Nachkommastellen der Beträge zurück (Nur lesend) |
UseCustomValuation:L | Gibt zurück, ob es sich um einen Individuellen Bewertungskreis handelt (Nur lesend) |
Funktionen / Methoden | |
---|---|
Count():N | Gibt die Anzahl aller hinterlegter Elemente zurück. |
ItemByIndex():O | Gibt das jeweilige TbeCostTypeValue Objekt anhand des Index zurück. Parameter
|
ItemByCostType():O | Gibt das jeweilige TbeCostTypeValue Objekt anhand der Kostenart zurück. Parameter
|
ToJSONString():O | Wandelt das Objekt in einen JSON String um. |
ToString():C | Wandelt das Objekt in eine Stringschreibweise um. Parameter
|
FromJSONString():C | Wandelt einen JSON String in ein TbeCbCostVector Objekt um. |
Add() | Fügt eine Kostenart und einen entsprechenden Wert hinzu. Parameter
|
Subtract() | Subtrahiert einer Kostenart einen gewissen Betrag. Parameter
|
Multiply() | Multipliziert die Beträge der Kostenarten mit dem übergebenen Faktor. Parameter nFactor:N Faktor mit dem multipliziert wird |
Divide() | Dividiert die Beträge der Kostenarten mit dem übergebenen Dividend. Parameter nFactor:N Dividend |
ToggleSign() | Dreht das Vorzeichen aller Werte der Kostenarten um. |
RemoveNullValues() | Entfernt dem Kostenvektor alle Kostenarten mit einem Betrag von 0. |
Sum():N | Summiert alle Werte eines Kostenvektors auf und gibt die Summe zurück. Rückgabe: Numerisch |
RatedSum():N | Summiert alle Beträge von Kostenarten die in dem zugehörigen Bewertungskreis als “Für die Bewertung relevant” gekennzeichnet sind auf und gibt die Summe zurück. Rückgabe: Numerisch |
IsRatedCostType():L | Prüft ob Kostenart für die Bewertung relevant ist. Rückgabe: Logisch |
Beispiel
//##############################################################################
// Codeblockbeispiel zur Verwendung des Typs TbeCbCostVector
// Alternativ kann die Deklaration der Varialble über die Schreibweise
// | vCostVector:CV:='<Bewertungskreis-ID>' |
// erfolgen.
//##############################################################################
| vCostVector:CV, vCostVector2:CV, oItem, nDabLbkID, i, cJSONString |
// ValuationID (ID des Bewertungskreises) aus der DabLBK ermitteln
nDabLbkID := LookUP(waDabLBK, 'ID', {{1}}, 'ID'),
// Intitialisierung des Kostenvektors durch Zusweisung einer ValuationID
vCostVector.ValuationID := nDabLbkID,
// Hinzufügen von Kostenarten
vCostVector.Add(koaMEK, 100.10),
vCostVector.Add(koaEEK, -200.20),
vCostVector.Add(koaEGK, 300.30),
vCostVector.Add(koaFEK, -400.40),
writeln(vCostVector), // Ausgabe: {"MEK": 100.1,"EEK": -200.2,"EGK": 300.3,"FEK": -400.4}
// Zweiten Kostenvektorn mit gleichem Bewertungskreis initialisieren
vCostVector2.ValuationID := vCostVector.ValuationId,
// Kopieren aller Kostenarten und Werte in den neuen Kostenvektor
for i := 0 to vCostVector.Count() - 1 do
oItem := vCostVector.ItemByIndex(i),
vCostVector2.Add(oItem.CostType, oItem.Value),
end,
writeln(vCostVector2), // Ausgabe: {"MEK": 100.1,"EEK": -200.2,"EGK": 300.3,"FEK": -400.4}
// Kostenvektor Leeren
vCostVector.Clear(),
writeln(vCostVector), // Ausgabe: {}
writeln(vCostVector.ValuationId), // Ausgabe: 1 <- Bewertungskreis wird nicht gelöscht
nDabLbkID := 2,
vCostVector.ValuationId := nDabLbkID,
vCostVector.Add(koaFEK_F, 10),
vCostVector.Add(koaMGK, 20),
vCostVector.Add(koaFEK_V, 30),
oItem := vCostVector.ItemByCostType(koaMGK),
writeln(oItem.Value), // Ausgabe: 20
cJSONString := vCostVector.ToJSONString(), // String des Objektes zum Speichern in die DB: {"FEK_F": 10,"MGK": 20,"FEK_V": 30}
vCostVector2.Clear(), // Ausgabe: {}
vCostVector2.FromJSONString(cJSONString),
writeln(vCostVector2), // Ausgabe: {"FEK_F": 10,"MGK": 20,"FEK_V": 30}
// Es wird die Kostenart von oItem hinzugefügt (MGK: 20)
vCostVector.Add(oItem.CostType, oItem.Value),
writeln(vCostVector), // Ausgabe: {"FEK_F": 10,"MGK": 40,"FEK_V": 30}
vCostVector.Subtract(koaFEK_F, 10),
writeln(vCostVector), // Ausgabe: {"FEK_F": 0,"MGK": 40,"FEK_V": 30}
// Entfernen von Beträgen mit Wert = 0
vCostVector.RemoveNullValues(), // Ausgabe: {"MGK": 40,"FEK_V": 30}
vCostVector.Multiply(2),
writeln(vCostVector), // Ausgabe: {"MGK": 80,"FEK_V": 60}
vCostVector.Divide(2),
writeln(vCostVector), // Ausgabe: {"MGK": 40,"FEK_V": 30}
vCostVector.Subtract(koaFEK_V, 60), // Ausgabe: {"MGK": 40,"FEK_V": -30}
// Umkehren der Vorzeichen
vCostVector.ToggleSign(),
writeln(vCostVector), // Ausgabe: {"MGK": -40,"FEK_V": 30}
vCostVector.Sum(), // Ausgabe: -10
vCostVector.RatedSum(), // Ausgabe: -40 (Ist abhänig vom jeweiligen Bewertungskreis!)
// Gibt alle Informationen des Kostenvektors und des Bewertungskreises in einem String zurück
vCostVector.ToString(true),
/*
Ausgabe:
'ValuationArea: 2
Decimals: 3
Rated: EEK, EGK, FEK_F, MEK, MGK, FEK, FEK_EX, FEK_SONS, FGK, FGK_EX, FGK_SONS
MGK: -40,000
FEK_V: 30,000'
*/
// Gibt alle Informationen des Kostenvektors, ohne Bewertungskreis, in einem String zurück
vCostVector.ToString(false)
/*
Ausgabe:
'MGK: -40,000
FEK_V: 30,000'
*/