Script: Ebene Stundensatz anzeigen

Inhalt

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

Alle Vertec Versionen

Ausführen

Auf einer einzelnen Leistung (offen oder verrechnet)

Script

ShowLevelStundensatz.py

Scripttext

# coding: windows-1252
#
#---Bezeichnung: Ebene Stundensatz anzeigen
#   Klassen: Leistung
#   CondExpression:
#   ObjectScript: Y
#   ContainerScript: N
#   EventType: Kein
#   EventClass:
#   EventMembers:
#   ExtendedRights: N
#---Zeigt an auf welcher Ebene der Stundensatz
#---einer 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
#   Version = 102
#
import vtcapp


# zeigt eine MessageBox mit Kennzeichnung auf der
# Prioritätsstufe
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():
    leistung = argobject

    # 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)
            return

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

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

    # 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)
            return
            
        # 4.2 Priorität: Bearbeiter auf Projekt -> Gesetzte Stufe
        if leistung.eval("projekt.bearbeiterlinks->select(bearbeiter=self.bearbeiter).bearbeiterstufe->first"):
            showPriority(6)
            return

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

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

        # 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)
                        return

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

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

main()


22.09.2014 | 29.10.2014: Bei Tariftabelle ansatzkosten geändert in ansatzext im Script.
Produktlinien: Expert
Module: Leistung & CRM