Script: Neuberechnung offene Leistungen eines Projekts

Inhalt

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

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

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.
'---01.07.2010, rb: Script angepasst, so dass es auf Projekten aus-
'                   geführt werden kann.
'---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.

option explicit

dim projektlist
dim proj
dim leistung
dim leistlist
dim dat, i, k

dat = Vertec.InputBox("Vertec","Ab welchem Datum sollen die Leistungen angepasst werden?","")
if IsDate(dat) then
if vertec.argobject.eval("oclIsKindOf(Container)") then
set projektlist = vertec.currentobject.eval("eintraege")
for i=0 to projektlist.count-1
set proj = projektlist.objects(i)
if proj.eval("oclIsKindOf(Projekt)") then
set leistlist = proj.eval("offeneleistungen->select(datum>=" & ocldate(dat) &")")
for k = 0 to leistlist.count-1
set leistung = leistlist.Objects(k)
leistung.UpdateSatz
next
vertec.updatedatabase
else
MsgBox "Das Script kann nur auf einem Projekt ausgeführt werden."
end if
next  
else
set proj = vertec.argobject
if proj.eval("oclIsKindOf(Projekt)") then
set leistlist = proj.eval("offeneleistungen->select(datum>=" & ocldate(dat) &")")
for k = 0 to leistlist.count-1
set leistung = leistlist.Objects(k)
leistung.UpdateSatz
next
vertec.updatedatabase
else
MsgBox "Das Script kann nur auf einem Projekt ausgeführt werden."
end if
end if            
else
MsgBox "Ungültiges Datum"
end if

Public Function OclDate(d)
OclDate = "encodeDate(" & Year(d) & "," & Month(d) & "," & Day(d) & ")"
End Function

02.07.2010 | 01.11.2013: msgbox und inputbox durch vertec.msgbox und vertec.inputbox ersetzt.
Produktlinien: Standard, Expert
Module: Leistung & CRM