Script: Show level hourly rate

The script shows in a message box at which level the hourly rate of the up-to-date service was calculated

Product line

Standard

|

Expert

Operating mode

CLOUD ABO

|

ON-PREMISES

Modules

Services & CRM

Budget & Phases

Purchases

Resource Planning

Business Intelligence

Created: 22.09.2014
Machine translated
Updated: 10.10.2024 | New script for selectedobjects from Vertec 6.7.0.12.

 Displays in a message box at which level the hourly rate of the up-to-date service was calculated. Based on the priority list according to article .

version description Scripting
6.6 Script for Vertec versions before 6.7.0.12 and for running in Script Editor  for all versions. Showlevelhour rateargobject.py
6.7.0.12 Used selectedobjects . Showlevelhourrate.py

Execute

On a single service (open or charged)

Script text

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