A: Derived Attributes

Derived Attributes von Klassen mit "A"

Produktlinie

Standard

|

Expert

Betriebsart

CLOUD ABO

|

ON-PREMISES

Module

Leistung & CRM

Budget & Teilprojekt

Fremdkosten

Ressourcenplanung

Business Intelligence

Erstellt: 24.11.2006
Aktualisiert: 12.12.2022 | An Vertec Version 6.6 angepasst.

Eine Auflistung aller Derived Attributes finden Sie im Artikel Derived Attributes.

AbstractAdresseintrag

AdressText
 VtcString Wird auf der entsprechenden Subklasse (Firma, Person, Kontakt, Paar, EinfacheAdresse) berechnet und beinhaltet die gemäss Adresslayout formatierte Adresse inkl. Zeilenumbrüchen etc.
AuslagenWeiterleiten
boolean Berechnet sich aufgrund von xAuslagenWeiterleiten. Ist der Wert xAuslagenWeiterleiten NULL, gilt false.

AbstractUser

EffRights
VtcBlob Setzt die Liste der Rechte für den User zusammen.

Abwesenheit

Typ
AbwesenheitsArt
  • Wenn typlink gesetzt:
      typ = typlink.art
  • Sonst:
      typ = AbwesenheitsTypFrei
Siehe dazu auch den Hinweis bei Update auf 5.7 im Artikel Abwesenheiten.

Adresseintrag

Dokpfad
VtcString

Wenn xDokPfad gesetzt:

  • ist der Pfad absolut, wird er so verwendet
  • sonst: RootDokPfad (Dokumentenpfad in Systemeinstellungen) + xDokpfad.

Wenn xDokPfad nicht gesetzt:

  • wenn Adress-Dokumentenpfad in Systemeinstellungen gesetzt:
    • ist der Pfad absolut, wird er so verwendet
    • sonst: RootDokPfad + Adress-Dokumentenpfad
  • wenn Adress-Dokumentenpfad nicht gesetzt:
    • RootDokPfad

Illegale Characters werden durch '-' ersetzt.

isMale Boolean

In Versionen vor 6.6 persistent.

True, wenn gender = 'male', in jedem anderen Fall false.

AdressLayout

AdressText
VtcString Setzt den Adresstext aufgrund des hinterlegten Layouts (mit den Variablen in %%) zusammen.

Aktivitaet

Content Blob

In Versionen vor 6.6 persistent.

Lädt den Inhalt aus dem verknüpften DocumentData Objekt.

DokErstellt
DateTime Wenn es eine Pfadangabe hat und dieses Dokument existiert, wird das FileCreated-Datum des Dokuments genommen. Ansonsten CreationDateTime der Aktivität.
DokGeaendert
DateTime Wenn es eine Pfadangabe hat und dieses Dokument existiert, wird das FileChanged-Datum des Dokuments genommen. Ansonsten ModifiedDateTime der Aktivität.
Dokpfad
VtcString
  • Der Dokpfad wird in folgender Reihenfolge berechnet:
    • Falls Projekt vorhanden: Projekt.DokPfad
    • sonst: falls Adresseintrag vorhanden: Adresseintrag.DokPfad
    • sonst: Dokpfad vom ersten Objekt in Eintraege
    • sonst: inherited (geerbt) von UserEintrag.DokPfad
  • Illegale Character werden durch '-' ersetzt
EffPfad
VtcString Berechnet sich aufgrund des Attributes Pfad. Wenn ein absoluter Pfad angegeben ist, wird dieser ohne Bearbeitung übernommen. Ist ein relativer Pfad angegeben, wird der DokPfad vorne angehängt. Ist kein Pfad angegeben, ist EffPfad leer.
Pendent
boolean Berechnet sich wie folgt: (zustaendig <> nil) and not erledigt.AsBoolean
Phasenlookup
ObjectList

Berechnet die Liste der möglichen Phasen, die ausgewählt werden können. Es muss ein Projekt angegeben sein. In der Phasenliste werden diejenigen Phasen dieses Projekts angezeigt, für die der Erfasser der Aktivität berechtigt ist.

Zugriffsbeispiel via OCL: phasenlookup.list.oclAsType(ProjektPhase).code->listToString(',')

AktivitaetenContainer

OrderClause
VtcString
  • bisTermin ist gesetzt: 'termin'
  • bisTermin ist nicht gesetzt: 'bold_id'
WhereClause
VtcString Formatiert die Abfrage gemäss Usereingaben.

Auslage

AuslageTypenLookup
ObjectList Gibt nur die Auslagetypen zurück, die zur angegebenen Phase passen (Lookup mit Phase).
AuslageTypenLookupOpen
ObjectList Gibt alle Auslagetypen zurück, die zum Projekt und zu allen Phasen des Projekts passen (Lookup ohne Phase).
LieferAdresse
ObjectReference
  • xLieferadresse, sonst:
  • Lieferadresse ist unsere eigene Adresse: TProperty.PropertyByName(Firma).
  • wenn bei beidem nichts angegeben: LieferAdresse.BoldObject:=nil.
MWSTBetrag
VtcCurrency
  • Falls Weiterleiten gesetzt, ist externer Wert und auch MWSTBetrag = 0.
  • sonst: wie Basisklasse AuslageBase.
RabattNetto
VtcCurrency
  • Ist die Auslage brutto (isBrutto = true):= RabattBetrag.AsCurrency / (1 + MWSTSatz.AsFloat/100).
  • Ist die Auslage netto (isBrutto = false):= RabattBetrag.AsCurrency;
Rechnungsadresse
ObjectReference
  • xRechnungsadresse, oder:
  • Weiterleiten ist gesetzt: Rechnungsadresse ist Rechnungsadresse des Kunden. Nimmt die Rechnungadresse des Projekts dieser Auslage. Wenn es kein Projekt hat, ist die Rechnungsadresse nil.
  • Weiterverrechnen ist gesetzt: Rechnungsadresse ist unsere eigene Adresse. Nimmt die in den Systemeinstellungen gesetzte Firma (TProperty.PropertyByName(Firma)). Wenn es keine hat, ist die Rechnungsadresse nil.
weiterleiten
boolean
  1. Falls Kreditor zugeordnet und weiterleiten gesetzt, diesen Wert berücksichtigen: Kreditor.xWeiterleiten.AsBoolean.
  2. xWeiterleiten berücksichtigen, falls gesetzt.
  3. Phase: Wenn es eine Phase zugeordnet hat, diesen Wert berücksichtigen: GetPhase.AuslagenWeiterleiten.AsBoolean.
  4. Projekt: Wenn ein Projekt zugeordnet ist, diesen Wert berücksichtigen: GetProjekt.AuslagenWeiterleiten.AsBoolean.
  5. Weiterleiten.AsBoolean:=false.
WertBudget
VtcCurrency
  • weiterleiten ist gesetzt: Es wird der interne Wert (netto) verwendet: WertInt.asCurrency.
  • sonst: Es wird der externe Wert (netto) verwendet: WertExt.AsCurrency.

AuslageBase

AufwandKonto
VtcString
  • Wenn xAufwandKonto gesetzt ist:= xAufwandKonto.AsString
  • Wenn typ zugeordnet und typ.Aufwandkonto gesetzt ist:= typ.AufwandKonto.AsString
    sonst: nehme Default aus Property:
    • if self is TAuslage:= StringProp(AufwandkontoAuslagen)
    • if self is TSpesen:= StringProp(AufwandkontoSpesen)
HasMargin
boolean
  • Gibt an, ob margin NULL ist oder nicht:
    HasMargin.AsBoolean:=not margin.IsNull
  • Kann auch ohne Leserecht auf margin Attribute ausgelesen werden
MWSTBetrag
VtcCurrency

1. Zuerst wird die Phase berücksichtigt, falls es eine hat:

  • Ist die Phase verrechenbar?
  • Ist die Phase pauschal:if self is TSpesen then PauschalSpesen else PauschalAuslagen. Ist die pauschale Phase abgeschlossen? Dann:
    • lege Auslagenbudget gemäss Anteil Wertint auf einzelne Auslage um:
      WertInt.AsCurrency *
      phs.PlanAuslagenWert.AsCurrency /
      phs.SumAuslagenWertInt.AsCurrency *
      (MWSTSatz.AsCurrency / 100)
    • bzw. das selbe für Spesen:
      WertInt.AsCurrency *
      phs.PlanSpesenWert.AsCurrency /
      phs.SumSpesenWertInt.AsCurrency *
      (MWSTSatz.AsCurrency / 100)
  • Phase ist nicht pauschal:
    • wenn phs.SumSpesenWertInt <> 0:
      WertInt.AsCurrency * phs.PlanSpesenWert / phs.SumSpesenWertInt * (MWSTSatz / 100)
    • sonst: 0.

2. Normaler Eintrag, berechne MWSTBetrag aus WertExtEingabe:

  • Wenn isBrutto, dann:
    WertExtEingabe.AsCurrency * (1 - (1 / (1 + (MWSTSatz.AsCurrency/100))))
  • Sonst:
    WertExtEingabe.AsCurrency * (MWSTSatz.AsCurrency/100)
  • Je nach runden Property (PropertyByName(SpesenMWSTRunden) wird der Betrag gerundet:
    • Wenn Ja, runden auf 5 Rappen: RundenCurrency(tempBetrag)
    • sonst: runden auf Rappen: RundenTwoDigits(tempBetrag)
MWSTBetragEK
VtcCurrency Wird umgerechnet von MWSTBetragEKFW:
  • wenn (EingabeWaehrung <> nil) and (Waehrung <> nil), dann wird der Wert von der EingabeWaehrung in die Waehrung umgerechnet.
  • sonst: MWSTBetragEKFW.AsCurrency
MWSTBetragEKFW
VtcCurrency

xWertIntFW oder xWertIntFWBrutto sind angegeben:

  • Beide xWerte sind angegeben, berechne MWST als Differenz::xWertIntFWBrutto.AsCurrency - xWertIntFW.AsCurrency
  • Nur xWertIntFW ist angegeben:Netto Wert ist angegeben. Berechne MWST davon ausgehend:xWertIntFW * (MWSTSatzEK / 100)
  • Nur xWertIntFWBrutto ist angegeben:Brutto Wert ist angegeben:xWertIntFWBrutto * (1 - (1 / (1 + (MWSTSatzEK/100))))

Kein xWert ist angegeben. MWST Betrag aufgrund von Eingabebetrag (anzahl * einheit) berechnen:

  • Wenn IsBrutto gesetzt, dann:
    WertIntFWEingabe * (1 - (1 / (1 + (MWSTSatzEK/100))))
  • sonst:
    WertIntFWEingabe * (MWSTSatzEK/100)

Falls nicht beide xWerte angegeben, je nach Systemeinstellungen MWSTBetrag runden:

  • Wenn Property SpesenMWSTRunden auf JA, Wert auf den Fünfer runden, sonst auf zwei Stellen.
MWSTCodeEK
VtcString
  • Wenn verrechnet, dann:= verrMWSTCodeEK.AsString
  • Wenn MWSTTypEK gesetzt, nehme Code von diesem:= TMWSTTyp(MWSTTypEK.BoldObject).Code.AsString
MWSTSatzEK
VtcCurrency
  • Wenn verrechnet, dann:= verrMWSTSatzEK.AsCurrency
  • Wenn ein Typ gesetzt ist:= TMWSTTyp(MWSTTypEK.BoldObject).Satz.AsCurrency
MWSTTypEK
ObjectReference Einkaufs MWSTTyp bestimmen:
  • 1. xMWSTTypEK ist zugeordnet:= xMWSTTypEK
  • 2. wenn Typ zugeordnet ist und dieser einen MWSTTypEK zugeordnet hat:= TAuslageBaseTyp(Gettyp).MWSTTypEK
  • 3. sonst denselben Typ wie Verkauf nehmen:= MWSTTyp.BoldObject
RabattBetrag
VtcCurrency Wird auf den Subklassen berechnet.
WertExtEingabe
VtcCurrency

Beachte die Projektphasen. Wenn Projektphase nicht verrechenbar, ist Wert 0. Spesen und Leistungen gleich. Falls Phase zugeordnet:

  • wenn nicht 'verrechenbar': 0.
  • wenn 'verrechenbar': Phase ist pauschal:
    • muss abgeschlossen sein.WertExt berechnet sich anteilmässig am PlanWert der Phase. Gewichtung erfolgt über WertInt. Unterscheidung zwischen Spesen und Auslagen:
      • self is TSpesen:Wenn SumSpesenWertInt <> 0, dann:WertInt * phase.PlanSpesenWert / phase.SumSpesenWertIntsonst: 0
      • self is TAuslage:Wenn SumAuslagenWertInt <> 0, dann:WertInt * phase.PlanAuslagenWert / phase.SumAuslagenWertIntsonst: 0

Phase ist nicht pauschal, oder keine Phase ist zugeordnet: Normalfall. Wertext aus xWertExt oder über Anzahl * WertProEinheit berechnen:

  • xWertExt, falls gesetzt (ist in Projektwährung), sonst:
    • Aufgrund von Anzahl mit Faktoren berechnen:
      • falls Anzahl <> 0: Berechnet WertExt aus Anzahl * WertProEinheitExt und Umrechnung von Währung:=Anzahl.AsFloat * WertProEinheitExt.AsCurrency.
      • Falls die EingabeWaehrung <> nil, dann wird dieser Wert noch in die waehrung umgerechnet.
      • Der Wert wird auf zwei Stellen gerundet.
      • Rabatt abziehen: result:=result - RabattBetrag.AsCurrency.
    • Anzahl = 0: Versuche es mit WertInt:
      • if ((not xWertIntFW.IsNull) or (not xWertIntFWBrutto.IsNull)) and (WertProEinheitInt.AsCurrency <> 0):Gehe aus von WertInt (netto, bereits in Projektwährung). Zuerst Umrechnung auf Brutto / Netto:Wenn isBrutto = true:(WertInt + MWSTBetragEK)* WertProEinheitExt / WertProeinheitIntsonst:WertInt * WertProEinheitExt / WertProeinheitIntDer Wert wird auf zwei Stellen gerundet.
      • Wertint = 0, versuche es mit WertKosten:
        • if (not xWertKosten.IsNull) and (WertProEinheitKosten.AsCurrency<>0):Brutto / Netto berücksichtigen:Wenn isBrutto = true:(xWertKosten * (1 + MWSTSatz/100))* WertProEinheitExt / WertProEinheitKostensonst:xWertKosten * WertProEinheitExt / WertProEinheitKosten
        • Der Wert wird auf zwei Stellen gerundet.

Kann keinen Wert berechnen -> 0.

WertInt
VtcCurrency Wird umgerechnet von WertIntFW:
  • if (EingabeWaehrung <> nil) and (Waehrung.BoldObject <> nil), dann wird WertIntFW genommen und von der Eingabewaehrung in die Waehrung umgerechnet.
  • sonst: WertIntFW.AsCurrency
WertIntFW
VtcCurrency
  1. Netto Betrag direkt gesetzt:= xWertIntFW.AsCurrency.
  2. Falls Bruttowert explizit gesetzt, berechne netto aus diesem:= xWertIntFWBrutto.AsCurrency - MWSTBetragEKFW.AsCurrency.
  3. Berechne nettobetrag aus Eingabewert:
    • wenn isBrutto = true, dann:= WertIntFWEingabe.AsCurrency - MWSTBetragEKFW.AsCurrency.
    • sonst:= WertIntFWEingabe.AsCurrency.
WertIntFWBrutto
VtcCurrency
  • Wenn xWertIntFWBrutto gesetzt:= xWertIntFWBrutto.AsCurrency
  • Wenn xWertIntFW gesetzt:= xWertIntFW.AsCurrency + MWSTBetragEKFW.AsCurrency
    • Sonst via eingabebetrag etc. berechnen:
      • isBrutto ist gesetzt->Eingabe ist brutto, nehme direkt eingabeWert:= WertIntFWEingabe.AsCurrency
      • sonst:= WertIntFWEingabe.AsCurrency + MWSTBetragEKFW.AsCurrency
WertIntFWEingabe
VtcCurrency
  1. Wenn Anzahl <> NULL:= Anzahl.AsFloat * WertProEinheitInt.AsCurrency
  2. Anzahl ist null, berechne WertInt aus WertExt:
    • if (not xWertExt.IsNull) and (WertProEinheitExt.AsCurrency <> 0):
      xWertExt * WertProEinheitInt / WertProEinheitExt
      • if (EingabeWaehrung <> nil) and (Waehrung.BoldObject <> nil), wird das ganze in die Eingebewährung umgerechnet.
    • xWertExt nicht gesetzt, versuche es mit WertKosten:
      • if (not xWertKosten.IsNull) and (WertProeinheitKosten.AsCurrency <> 0):WertKosten ist immer Netto, muss Eingabewert entsprechend zurückrechnen:
        • isBrutto ist gesetzt:
          xWertKosten * (1 + MWSTSatzEK/100)* WertProEinheitInt / WertProEinheitKosten
        • sonst:
          xWertKosten * WertProEinheitInt / WertProEinheitKosten
        • if (EingabeWaehrung <> nil) and (Waehrung.BoldObject <> nil), wird das ganze in die Eingebewährung umgerechnet.
  3. Kann keinen Wert ermitteln -> 0
WertKosten
VtcCurrency
  1. xWertKosten ist gesetzt:= xWertKosten.AsCurrency
  2. Falls Anzahl gesetzt:
    • isBrutto ist gesetzt:
      Anzahl * WertProEinheitKosten / (1 + (MWSTSatzEK / 100))
    • sonst:
      Anzahl * WertProEinheitKosten
    • Der Wert wird gerundet. Wenn MWST auf Spesen und Auslagen in den Systemeinstellungen JA, wird der Wert auf 5 Rappen gerundet, sonst auf zwei Stellen.
  3. Anzahl ist null, Kosten aufgrund von WertInt berechnen (falls gesetzt):
    • gehe aus von WertInt (netto, bereits in Projektwährung):
      • if ((not xWertIntFW.IsNull) or (not xWertIntFWBrutto.IsNull)) and (WertProEinheitInt.AsCurrency <> 0):
        WertInt * WertProEinheitKosten / WertProeinheitInt
      • auf zwei Stellen gerundet
    • WertInt auch nicht angegeben, berechne aufgrund von xWertExt (kann nicht WertExt nehmen, da dieser ev. manipuliert):
      • if (not xWertExt.IsNull) and (WertProEinheitExt.AsCurrency <> 0):
        • isBrutto gesetzt:
          xWertExt / (1 + MWSTSatz/100) * WertProEinheitKosten / WertProEinheitExt
        • sonst:
          xWertExt / WertProEinheitKosten / WertProEinheitExt
  4. Kann Wert nicht berechnen -> 0
WertKostenLW
VtcCurrency Rechnet WertKosten in Leitwährung um. Nun muss herausgefunden werden, in welcher Währung WertKosten ist. Das wird dann umgerechnet.
  1. Falls EingabeWaehrung gesetzt, diese nehmen (da wertkosten in Eingabewährung vorliegt).
  2. Falls Waehrung gesetzt, diese nehmen.
  3. Sonst: 0.

AuslageBaseTyp

ArtikelNr
VtcString
  • xArtikelNr, falls gesetzt.
  • sonst: PropertyByName(DefaultArtikelNrSpesen).
  • sonst: Leerstring.

AuslageBaseTypPhaseLink

Name
VtcString Wird auf den einzelnen Subklassen berechnet.
SumKosten
VtcCurrency
  • self is TAuslageTypPhaseLink:
    • hole die Liste der Auslagen (phase.Auslagen) von der zugeordneten Phase und summiere den WertKosten von allen, die denselben Typ haben.
  • sonst: hole die Liste der Spesen (phase.Spesen) von der zugeordneten Phase und summiere den WertKosten von allen, die denselben Typ haben.
  • wenn nichts vorhanden: 0
SumWertExt
VtcCurrency
  • self is TAuslageTypPhaseLink:
    • hole die Liste der Auslagen (phase.Auslagen) von der zugeordneten Phase und summiere den WertExt von allen, die denselben Typ haben.
  • sonst:hole die Liste der Spesen (phase.Spesen) von der zugeordneten Phase und summiere den WertExt von allen, die denselben Typ haben.
  • wenn nichts vorhanden: 0
SumWertInt
VtcCurrency
  • self is TAuslageTypPhaseLink:
    • hole die Liste der Auslagen (phase.Auslagen) von der zugeordneten Phase und summiere den WertInt von allen, die denselben Typ haben.
  • sonst:hole die Liste der Spesen (phase.Spesen) von der zugeordneten Phase und summiere den WertInt von allen, die denselben Typ haben.
  • wenn nichts vorhanden: 0

AuswertBase

DoCalculate
boolean Dummy-Attribut, um Calculate über OCL oder COM aufrufen zu können. Resultat gibt an, ob Calculate notwendig war:
  • wenn calculated = true:
    • DoCalculate = false
  • wenn calculated = false, wird die Methode Calculate aufgerufen und DoCalculate = true gesetzt.

AuswertMaster

Auswertungen
ObjectList Berechnet alle Benchmarking Auswertungen für die dazugehörige Periode neu und gibt sie als Liste zurück.

AuswertMulti

Details
ObjectList Details = xDetails
Bitte wählen Sie Ihren Standort