Script: Neuberechnung offene Leistungen eines Projekts

Produktlinien: Standard, Expert
Module: Leistung & CRM
Erstellt: 02.07.2010, Änderung:
Script in Python erstellt.
Mehr ansehen

Berechnet die Stundensätze der offenen Leistungen der Projekte neu, unter Angabe eines von-Datums bis heute.

Achtung: Dieser Vorgang kann nicht rückgängig gemacht werden!

Möchten Sie stattdessen alle offenen Leistungen von allen aktiven Mitarbeitern neu berechnen, verwenden Sie dafür folgendes Script: Script: Neuberechnung der Ansätze von offenen Leistungen ab Datum.

Version

Version Beschreibung Script
ab 5.0 Verwendet die Variablen Vertec und argobject. RecalcStundensatzProjekt.txt
ab 5.8 Verwendet anstelle der VB Standardfunktion die Vertec-Funktion msgbox (siehe dazu msgbox/inputbox: Beschreibung der Parameter). RecalcStundensatzProjekt58.txt
ab 6.1.0.14 Verwendet vtcapp.currentdate(). RecalcStundensatzProjekt.py

Ausführen

Auf einem einzelnen Projekt oder einer Liste von Projekten.

Scripttext

#---Bezeichnung: Neuberechnung Stundensatz
#   Klassen: Projekt
#   ObjectScript: Yes
#   ContainerScript: Yes
#   EventType: Kein
#   EventClass:
#   EventMembers:
#   ExtendedRights: No
#---Berechnet die Stundensätze aller offenen Leistungen des aktuell
#---markierten Projekts unter Angabe eines ab Datum bis heute.
#---Achtung: Dieser Vorgang kann nicht rückgängig gemacht werden!
#---17.02.2004, Vertec AG: erstellt.
#---20.04.2009, sr: Header eingefügt.
#---22.05.2012, rs: Script so erweitert das es auch auf einem Container
#                   mit Projekten ausgeführt werden kann.
#---01.11.2013, sr: msgbox und inputbox werden neu auf vertec aufgerufen.
#---25.04.2018, sth: In Python erstellt. Ab Version 6.1.0.14.

def main():

    if argobject.eval("self.oclIsKindOf(Container)"):
        projektlist = vtcapp.createlist("Projekt", argobject.eval("eintraege"))
    else:
        projektlist = vtcapp.createlist("Projekt", [argobject])
    if not all(projektlist.evalocl("self->oclisKindOf(Projekt)")):
        vtcapp.msgbox("Dieses Script kann nur auf Projekten ausgeführt werden.")
        return

    # Python Script für Custom Dialog
    dlgDefinition="""
    <Dialog Title="Neuberechnung Stundensatz">
        <TextBlock Text="Ab welchem Datum sollen die Leistungen angepasst werden?" Appearance="Info"/>
        <DatePicker Name="Von" Label="Datum" LabelWidth="40" />
        <Dialog.Buttons>
            <Button Text="OK" IsAccept="True" Command="{Binding OkCommand}" />
            <Button Text="Cancel" IsCancel="True" Command="{Binding CancelCommand}" />
        </Dialog.Buttons>
    </Dialog>
    """

    initValues = {}
    initValues["Von"] = vtcapp.firstdayofmonth(vtcapp.currentdate())
    ok, values = vtcapp.showcustomdialog(dlgDefinition, initValues)
    if ok:
        fromDate = values["Von"]
        for projekt in projektlist:
            leistlist = projekt.eval("offeneleistungen->select(datum>=%s)" % vtcapp.ocldate(fromDate))
            for leistung in leistlist:
                leistung.updatesatz()
        vtcapp.updatedatabase()
main()