Support vertec.com

Script: Ebene Stundensatz anzeigen

Das Script zeigt in einer Messagebox an, auf welcher Ebene der Stundensatz der aktuellen Leistung berechnet wurde
Produktlinien: Expert
Module: Leistung & CRM
Created: 22.09.2014
Updated: 14.07.2020
Script ersetzt. Berücksichtigt nur noch aktive BearbeiterPhaseLinks analog Businesslogik.

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(aktiv)->select(bearbeiter=self.bearbeiter).ansatzext->first"):
            showPriority(2)
            return
            
         # 2.2 Priorität: Bearbeiter auf Phase -> Gesetzte Stufe
        if leistung.eval("phase.bearbeiterPhasen->select(aktiv)->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()