Script: Neuberechnung der Ansätze von Leistungen ab Datum

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

Berechnet die Stundensätze aller Leistungen von allen aktiven Mitarbeitern neu, unter Angabe eines von Datums bis heute.

Bei offenen Leistungen werden dabei alle Sätze angepasst, bei verrechneten Leistungen nur die Kostensätze.

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

Möchten Sie stattdessen nur die Leistungen eines einzelnen Projekts neu berechnen, verwenden Sie dafür folgendes Script: Neuberechnung offene Leistungen eines Projekts.

Version

Version Beschreibung Script
Versionen vor 5.8   RecalcStundensatz.txt
ab 5.8 Verwendet anstelle der VB Standardfunktionen die Vertec-Funktionen msgbox und inputbox (siehe dazu msgbox/inputbox: Beschreibung der Parameter) RecalcStundensatz58.txt
ab 6.1.0.14 Verwendet vtcapp.currentdate() RecalcStundensatz.py

Ausführen

Irgendwo in Vertec

Scripttext

#---Bezeichnung: Neuberechnung Stundensatz
#   Klassen: keine
#   ObjectScript: No
#   ContainerScript: No
#   EventType: Kein
#   EventClass:
#   EventMembers:
#   ExtendedRights: No
#---Berechnet die Stundensätze aller Leistungen von allen
#   aktiven Mitarbeitern neu, unter Angabe eines ab Datum bis heute.
#   Bei offenen Leistungen werden dabei alle Sätze angepasst,
#   bei verrechneten Leistungen nur die Kostensätze.
#---Achtung: Dieser Vorgang kann nicht rückgängig gemacht werden!
#---17.02.2004, Vertec AG: erstellt.
#---20.04.2009, sr: Header eingefügt.
#---06.11.2012, cp: ergänzt um verrechnete Leistungen.
#---29.10.2013, sr: msgbox und inputbox auf vertec aufrufen.
#---25.04.2018, sth: In Python erstellt. Ab Version 6.1.0.14.

def main():

    # 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"]
        bearblist = vtcapp.eval("projektbearbeiter->select(aktiv)")
        for bearb in bearblist:
            leistlist = bearb.eval("offeneleistungen->union(verrechneteleistungen)->select(datum>=%s)" % vtcapp.ocldate(fromDate))
            for leistung in leistlist:
                leistung.updatesatz()
        vtcapp.updatedatabase()
main()