Script: Ebene Stundensatz anzeigen

Das Script zeigt in einer Messagebox an, auf welcher Ebene der Stundensatz der aktuellen Leistung berechnet wurde

Produktlinie

Standard

|

Expert

Betriebsart

CLOUD ABO

|

ON-PREMISES

Module

Leistung & CRM

Budget & Teilprojekt

Fremdkosten

Ressourcenplanung

Business Intelligence

Erstellt: 22.09.2014
Aktualisiert: 10.10.2024 | Neues Script für selectedobjects ab Vertec 6.7.0.12.

Zeigt in einer Messagebox an, auf welcher Ebene der Stundensatz der aktuellen Leistung berechnet wurde. Basiert auf der Prioritätenliste gemäss Artikel Das Tarifsystem.

Version Beschreibung Script
6.6 Script für Vertec Versionen vor 6.7.0.12 sowie zur Ausführung im Script Editor  für alle Versionen. ShowLevelStundensatzArgobject.py
6.7.0.12 Verwendet selectedobjects . ShowLevelStundensatz.py

Ausführen

Auf einer einzelnen Leistung (offen oder verrechnet)

Scripttext

 # coding: windows-1252
#
#---Bezeichnung: Ebene Stundensatz anzeigen
#   Klassen: Leistung
#   Selectedobjectsscript: Yes
#   Condexpression: self->size = 1
#   EventType: Kein
#   EventClass:
#   EventMembers:
#   ExtendedRights: N
#---Zeigt in einer MessageBox an, auf welcher Ebene der Stundensatz
#   der aktuellen Leistung berechnet wird.
#---2014-09-18, FG: erstellt.
#   2014-09-22, FG: Formatierung angepasst(Leerschläge bei der Aufzählung).
#   2014-10-29, FG: bei der Tariftabelle ansatzKosten geändert in ansatzExt.
#   10.10.2024, sth: An selectedobjects ab Vertec 6.7.0.12 angepasst.


def showPriority(stufe):
    msg = "1. Priorität: Tätigkeit auf Phase"
    if stufe == 1:
        msg += "\t\t<----"
    msg += "\n2. Priorität: Bearbeiter auf Phase"
    msg += "\n\t1. Explizit gesetzter Ansatz"
    if stufe == 2:
        msg += "\t\t<----"
    msg += "\n\t2. Gesetzte Stufe"
    if stufe == 3:
        msg += "\t\t<----"
    msg += "\n3. Priorität: Vorgabe auf Phase"
    if stufe == 4:
        msg += "\t\t<----"
    msg += "\n4. Priorität: Bearbeiter auf Projekt"
    msg += "\n\t1. Explizit gesetzter Ansatz"
    if stufe == 5:
        msg += "\t\t<----"
    msg += "\n\t2. Gesetzte Stufe"
    if stufe == 6:
        msg += "\t\t<----"
    msg += "\n5. Priorität: Vorgabe auf Projekt"
    if stufe == 7:
        msg += "\t\t<----"
    msg += "\n6. Priorität: Vorgabe auf Projekttyp"
    if stufe == 8:
        msg += "\t\t<----"
    msg += "\n7. Priorität: Tariftabelle"
    if stufe == 9:
        msg += "\t\t<----"
    msg += "\n8. Priorität: Vorgabe auf Bearbeiter"
    if stufe == 10:
        msg += "\t\t<----"
    msg += "\n 9.Priorität: 0.00"
    if stufe == 11:
        msg += "\t\t<----"
    vtcapp.msgbox(msg)

# gibt die Tariftabelle einer Leistung zurück
def getTariftabelle(leistung):
    if leistung.typ:
        for obj in leistung.typ.tarife:
            if obj.waehrung == leistung.waehrung:
                # Tariftabelle gefunden
                return obj

    for obj in leistung.waehrung.tarife:
        if not obj.taetigkeit:
            # Tariftabelle gefunden
            return obj

    return None

def main(leistlist):
    
    for leistung in leistlist:
        # Wenn eine Phase zugewiesen ist
        if leistung.phase:
            # 1. Priorität: Tätigkeit auf Phase
            if leistung.typ and leistung.eval("phase.taetigkeitphaselink->select(name=self.typ.code).ansatzExt->first"):
                showPriority(1)
                continue

            # 2.1 Priorität: Bearbeiter auf Phase -> Explizit gesetzter Ansatz
            if leistung.eval("phase.bearbeiterPhasen->select(aktiv)->select(bearbeiter=self.bearbeiter).ansatzext->first"):
                showPriority(2)
                continue
                
             # 2.2 Priorität: Bearbeiter auf Phase -> Gesetzte Stufe
            if leistung.eval("phase.bearbeiterPhasen->select(aktiv)->select(bearbeiter=self.bearbeiter).bearbeiterstufe->first"):
                showPriority(3)
                continue

            # 3. Priorität: Vorgabe auf Phase
            if leistung.phase.ansatzext:
                showPriority(4)
                continue

        # Wenn ein Projekt zugewiesen ist
        if leistung.projekt:
            # 4.1 Priorität: Bearbeiter auf Projekt -> Explizit gesetzter Ansatz
            if leistung.eval("projekt.bearbeiterlinks->select(bearbeiter=self.bearbeiter).ansatzext->first"):
                showPriority(5)
                continue
                
            # 4.2 Priorität: Bearbeiter auf Projekt -> Gesetzte Stufe
            if leistung.eval("projekt.bearbeiterlinks->select(bearbeiter=self.bearbeiter).bearbeiterstufe->first"):
                showPriority(6)
                continue

            # 5. Priorität: Vorgabe auf Projekt
            if leistung.projekt.ansatzext:
                showPriority(7)
                continue

            # 6. Priorität: Vorgabe auf Projekttyp
            if leistung.projekt.typ.ansatzext:
                showPriority(8)
                continue

            # 7. Priorität: Tariftabelle
            # Tariftabelle finden via Typ
            tariftabelle = getTariftabelle(leistung)

            if tariftabelle:
            # Ansatz in Tariftabelle suchen
                for obj in tariftabelle.ansaetze:
                    if (obj.tarifstufe == leistung.projekt.tarifstufe) and (obj.bearbeiterstufe == leistung.bearbeiter.stufe):
                        # Ansatz gefunden
                        if obj.ansatzext:
                            showPriority(9)
                            continue

            # 8. Priorität: Vorgabe auf Bearbeiter
            if leistung.bearbeiter.ansatzext:
                showPriority(10)
                continue

            # 9. Priorität: 0.00
            showPriority(11)

main(selectedobjects)
Bitte wählen Sie Ihren Standort