Script: Provisorische Rechnung für alle Projektphasen erzeugen

Inhalt

Erstellt für jede Phase eine provisorische (nicht verrechnete) Rechnung mit Leistungen und Spesen der Phase

Version

Ab Version 4.0.2.10

Ausführen

Wird auf Projektphase oder Container mit Phasen ausgeführt

Script

CreatePhasenRechnung.txt

Scripttext

'---Bezeichnung: Provisorische Rechnung für Projektphasen erzeugen
'   Klassen: Projektphase
'   ObjectScript: Yes
'   ContainerScript: No
'   EventType: Kein
'---Erstellt für jede Phase eine provisorische (nicht verrechnete)
'   Rechnung mit Leistungen und Spesen der Phase.Das Script wird auf
'   einer einzelnen Phase oder einer Liste von Phasen ausgeführt.
'---Ab Version 4.0.2.10
'---06.02.2004, Vertec AG: erstellt.
'---31.11.2006, Vertec und Argobject angepasst.
'---02.06.2008, sr: Auslagen behandeln

option explicit

sub makeRechnung(ph)

dim rech
dim proj
dim p_ph
dim list
dim eintr
dim i

set proj = ph.member("projekt")
set p_ph = ph

' projekt bestimmen (subphasen unterstützen)
do while proj is nothing
set p_ph = ph.member("parentphase")
if p_ph is nothing then
exit do
else
set proj = p_ph.member("projekt")
end if
loop

' rechnung erzeugen
set rech = Vertec.CreateObject("Rechnung")
' projekt setzen, dies nimmt alle leistungen, spesen und auslagen drauf
set rech.member("projekt") = proj
' alle, die nicht auf dieser phase sind, wieder entfernen
set list = rech.member("leistungen")
for i= list.count-1 to 0 step -1
set eintr = list.objects(i)
if not (eintr.member("phase") is ph) then
set eintr.member("rechnung") = nothing
end if  
next
set list = rech.member("spesen")
for i= list.count-1 to 0 step -1
set eintr = list.objects(i)
if not (eintr.member("phase") is ph) then
set eintr.member("rechnung") = nothing
end if  
next
set list = rech.member("auslagen")
for i= list.count-1 to 0 step -1
set eintr = list.objects(i)
if not (eintr.member("phase") is ph) then
set eintr.member("rechnung") = nothing
end if  
next
end sub


sub Main()

dim phaslist
dim phase
dim k

if Vertec.argObject.IsOfType("Container") then
set phaslist = Vertec.argobject.eval("eintraege")
for k=0 to phaslist.count - 1
set phase = phaslist.objects(k)
if phase.IsOfType("ProjektPhase") then
makeRechnung phase
end if
next
elseif Vertec.argObject.IsOfType("ProjektPhase") then
makeRechnung Vertec.argObject
end if   

end sub

call Main()

06.02.2004 | 02.06.2008