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.
Auf einem einzelnen Projekt oder einer Liste von Projekten.
#---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()