Script: Projekt kopieren V53
Inhalt
Erstellt ein neues Projekt und übernimmt die Werte eines bestehenden Projektes.
Als Projektleiter wird der Benutzer eingefügt, der das Script ausführt.
Es werden alle Werte ausser Leistungen, Spesen und Vorschüsse übernommen. Auch inhaltliche Angaben wie Ordnerreferenzen und GenericLinks werden nicht übernommen.
Übernimmt die Phasen in der richtigen Reihenfolge sowie die verschiedenen Zuordnungen und Berechtigungen.
Der Name des neuen Projektes kann eingegeben werden. Das neue Projekt wird inaktiv gesetzt.
Version
Ab Version 5.3
Version 3: Projekt kopieren V3
Ab Version 4.0: Projekt kopieren V4
Ab Version 4.3: Projekt kopieren V43
Ab Version 5.0: Projekt kopieren V50
Ab Version 5.2: Projekt kopieren V52
Ab Version 5.2.6: Projekt kopieren V526
Ab Version 5.5: Projekt kopieren V55
Ab Version 5.6: Projekt kopieren V56
Ausführen
Auf dem Projekt, das kopiert werden soll.
Script
Scripttext
'---Bezeichnung: Projekt kopieren (V 53)
' Klassen: Projekt
' ObjectScript: Yes
' ContainerScript: No
'---Dieses Script erstellt ein neues Projekt und übernimmt
' die Werte des aktuellen Projektes. Als Projektleiter
' wird der Benutzer eingefügt, der das Script ausführt.
' Es werden alle Werte ausser Leistungen, Spesen, Auslagen
' und Vorschüsse übernommen. Auch inhaltliche Angaben wie
' Ordnerreferenzen und GenericLinks werden nicht übernommen.
' Übernimmt die Phasen in der richtigen Reihenfolge sowie die
' verschiedenen Zuordnungen und Berechtigungen.
' Der Name des neuen Projektes kann eingegeben werden.
' Das neue Projekt wird inaktiv gesetzt.
'---11.02.2008, ds: erstellt.
option explicit
Sub CopyBoolean (Target, Source, Member)
if cstr(Source.member(member))<>"" then
target.member(Member) = source.Member(Member)
end if
end sub
Sub CopyZusatzfelder (oldphase, newphase, classname)
dim zusatzfeldlist
dim zusatzfeldname
dim i
'Suche alle Zusatzfelder einer bestimmten Klasse
set zusatzfeldlist = Vertec.eval("zusatzfeldklasse->select(klassen->select(x|x->sqllike('"_
+classname+"') or x->sqllike('"+classname+",%') or x->sqllike('%,"_
+classname+",%') or x->sqllike('%,"+classname+"'))->size > 0)")
for i = 0 to zusatzfeldlist.count-1
zusatzfeldname = _
zusatzfeldlist.objects(i).eval("fieldname")
newphase.zusatzfeldasvariant(zusatzfeldname) = _
oldphase.zusatzfeldasvariant(zusatzfeldname)
Next
end sub
Sub CopyPhasenMembers (oldphase, newphase)
newphase.member("code") = _
oldphase.member("code")
newphase.member("verantwortlicher") = _
oldphase.member("verantwortlicher")
newphase.member("xAktiv") = _
oldphase.member("xAktiv")
newphase.member("verrechenbar") = _
oldphase.member("verrechenbar")
newphase.member("Beschreibung") = _
oldphase.member("Beschreibung")
newphase.member("Bemerkung") = _
oldphase.member("Bemerkung")
newphase.member("xEndDatum") = _
oldphase.member("xEndDatum")
newphase.member("xStartDatum") = _
oldphase.member("xStartDatum")
newphase.member("xPlanWertExt") = _
oldphase.member("xPlanWertExt")
newphase.member("xPlanWertInt") = _
oldphase.member("xPlanWertInt")
newphase.member("xPlanMinutenInt") = _
oldphase.member("xPlanMinutenInt")
newphase.member("xPlanSpesenWert") = _
oldphase.member("xPlanSpesenWert")
newphase.member("AnsatzBearbeiter") = _
oldphase.member("AnsatzBearbeiter")
newphase.member("AnsatzExt") = _
oldphase.member("AnsatzExt")
newphase.member("ErtragskontoSpesen") = _
oldphase.member("ErtragskontoSpesen")
newphase.member("Status") = _
oldphase.member("Status")
newphase.member("ErtragskontoAuslagen") = _
oldphase.member("ErtragskontoAuslagen")
newphase.member("PauschalAuslagen") = _
oldphase.member("PauschalAuslagen")
CopyBoolean newphase, oldphase, "xAuslagenWeiterleiten"
newphase.member("KostenstelleSpesen") = _
oldphase.member("KostenstelleSpesen")
newphase.member("xPlanKostenAuslagen") = _
oldphase.member("xPlanKostenAuslagen")
newphase.member("pauschal") = _
oldphase.member("pauschal")
newphase.member("TagesPauschaleExt") = _
oldphase.member("TagesPauschaleExt")
newphase.member("PauschalSpesen") = _
oldphase.member("PauschalSpesen")
newphase.member("KostenstelleAuslagen") = _
oldphase.member("KostenstelleAuslagen")
newphase.member("AnsatzKosten") = _
oldphase.member("AnsatzKosten")
newphase.member("KostenstelleLeistungen") = _
oldphase.member("KostenstelleLeistungen")
newphase.member("ErtragskontoLeistungen") = _
oldphase.member("ErtragskontoLeistungen")
newphase.member("xMinPlanWertLeist") = _
oldphase.member("xMinPlanWertLeist")
newphase.member("xMinPlanWertSpesen") = _
oldphase.member("xMinPlanWertSpesen")
newphase.member("xPlanKostenLeistung") = _
oldphase.member("xPlanKostenLeistung")
newphase.member("xMaxPlanWertLeist") = _
oldphase.member("xMaxPlanWertLeist")
newphase.member("xPlanKostenSpesen") = _
oldphase.member("xPlanKostenSpesen")
newphase.member("xMaxPlanWertSpesen") = _
oldphase.member("xMaxPlanWertSpesen")
newphase.member("xPlanAuslagenWert") = _
oldphase.member("xPlanAuslagenWert")
newphase.member("bearbeiterzuordnung") = _
oldphase.member("bearbeiterzuordnung")
newphase.member("taetigkeitenZuordnung") = _
oldphase.member("taetigkeitenZuordnung")
newphase.member("spesentypenZuordnung") = _
oldphase.member("spesentypenZuordnung")
newphase.member("auslagetypenZuordnung") = _
oldphase.member("auslagetypenZuordnung")
End Sub
sub AddSubphasen (oldphase, newphase)
dim oldsubphase
dim newsubphase
dim sublist
dim k
set sublist = oldphase.eval("subphasen")
for k = 0 to sublist.count-1
set oldsubphase = sublist.objects(k)
set newsubphase = Vertec.createobject("Projektphase")
newsubphase.member("parentphase") = newphase
CopyPhasenMembers oldsubphase, newsubphase
CopyZusatzfelder oldsubphase, newsubphase, "Projektphase"
call CopyPhasenBearbeiter _
(oldsubphase, newsubphase)
call CopyPhasenTaetigkeiten _
(oldsubphase, newsubphase)
call CopyPhasenSpesentypen _
(oldsubphase, newsubphase)
call CopyPhasenAuslagentypen _
(oldsubphase, newsubphase)
AddSubphasen oldsubphase, newsubphase
next
end sub
sub CopyPhasenSpesentypen (oldphase, newphase)
dim srcList
dim trgList
dim ii
set srcList = _
oldphase.eval("self.spesentypphaselink")
for ii=0 to srcList.count - 1
set trgList = _
Vertec.CreateObject("SpesenTypPhaseLink")
trgList.member("minPlanWertSpesen") = _
srcList.Objects(ii).member("minPlanWertSpesen")
trgList.member("maxPlanWertSpesen") = _
srcList.Objects(ii).member("maxPlanWertSpesen")
trgList.member("planKostenSpesen") = _
srcList.Objects(ii).member("planKostenSpesen")
trgList.member("planWertSpesen") = _
srcList.Objects(ii).member("planWertSpesen")
trgList.member("wertproeinheitext") = _
srcList.Objects(ii).member("wertproeinheitext")
trgList.member("wertproeinheitint") = _
srcList.Objects(ii).member("wertproeinheitint")
trgList.member("wertproeinheitkosten") = _
srcList.Objects(ii).member("wertproeinheitkosten")
trgList.member("bezeichnung") = _
srcList.Objects(ii).member("bezeichnung")
trgList.member("offertText") = _
srcList.Objects(ii).Member("offertText")
set trgList.member("phasen") = newphase
set trgList.member("spesentypen") = _
srcList.objects(ii).member("spesentypen")
next
end sub
sub CopyPhasenAuslagentypen (oldphase, newphase)
dim srcList
dim trgList
dim ii
set srcList = _
oldphase.eval("self.auslagetypphaselink")
for ii=0 to srcList.count - 1
set trgList = _
Vertec.CreateObject("AuslageTypPhaseLink")
trgList.member("minPlanWertAuslagen") = _
srcList.Objects(ii).member("minPlanWertAuslagen")
trgList.member("PlanWertAuslagen") = _
srcList.Objects(ii).member("PlanWertAuslagen")
trgList.member("maxPlanWertAuslagen") = _
srcList.Objects(ii).member("maxPlanWertAuslagen")
trgList.member("PlanKostenAuslagen") = _
srcList.Objects(ii).member("PlanKostenAuslagen")
trgList.member("maxPlanKostenAuslagen") = _
srcList.Objects(ii).member("maxPlanKostenAuslagen")
trgList.member("minPlanKostenAuslagen") = _
srcList.Objects(ii).member("minPlanKostenAuslagen")
trgList.member("wertproeinheitext") = _
srcList.Objects(ii).member("wertproeinheitext")
trgList.member("wertproeinheitint") = _
srcList.Objects(ii).member("wertproeinheitint")
trgList.member("wertproeinheitkosten") = _
srcList.Objects(ii).member("wertproeinheitkosten")
trgList.member("bezeichnung") = _
srcList.Objects(ii).member("bezeichnung")
trgList.member("offertText") = _
srcList.Objects(ii).Member("offertText")
set trgList.member("phasen") = newphase
set trgList.member("auslagetypen") = _
srcList.objects(ii).member("auslagetypen")
next
end sub
sub CopyPhasenBearbeiter (oldphase, newphase)
dim srcList
dim trgList
dim ii
set srcList = oldphase.eval("bearbeiterphasen")
for ii=0 to srcList.count - 1
set trgList = _
Vertec.CreateObject("BearbeiterPhaseLink")
trgList.member("Ansatzkosten") = _
srcList.Objects(ii).Member("Ansatzkosten")
trgList.member("AnsatzBearbeiter") = _
srcList.Objects(ii).Member("AnsatzBearbeiter")
trgList.member("TagesPauschaleExt") = _
srcList.Objects(ii).Member("TagesPauschaleExt")
trgList.member("AnsatzExt") = _
srcList.Objects(ii).Member("AnsatzExt")
trgList.member("xPlanMinutenInt") = _
srcList.Objects(ii).Member("xPlanMinutenInt")
trgList.member("xplanwertext") = _
srcList.Objects(ii).Member("xplanwertext")
trgList.member("xplanwertint") = _
srcList.Objects(ii).Member("xplanwertint")
trgList.member("xplanKostenLeistung") = _
srcList.Objects(ii).Member("xplanKostenLeistung")
trgList.member("xPlanSpesenWert") = _
srcList.Objects(ii).Member("xPlanSpesenWert")
trgList.member("xPlanKostenSpesen") = _
srcList.Objects(ii).Member("xPlanKostenSpesen")
trgList.member("Bearbeiter") = _
srcList.Objects(ii).Member("Bearbeiter")
trgList.member("bearbeiterstufe") = _
srcList.Objects(ii).Member("bearbeiterstufe")
newphase.member("Bearbeiterphasen").Add(trgList)
next
end sub
sub CopyPhasenTaetigkeiten (oldphase, newphase)
dim srcList
dim trgList
dim ii
set srcList = oldphase.eval("taetigkeitphaselink")
for ii=0 to srcList.count - 1
set trgList = _
Vertec.CreateObject("TaetigkeitPhaseLink")
trgList.member("planWertLeist") = _
srcList.Objects(ii).Member("planWertLeist")
trgList.member("minPlanWertLeist") = _
srcList.Objects(ii).Member("minPlanWertLeist")
trgList.member("stueckwert") = _
srcList.Objects(ii).Member("stueckwert")
trgList.member("aktiv") = _
srcList.Objects(ii).Member("aktiv")
trgList.member("planWertLeist") = _
srcList.Objects(ii).Member("planWertLeist")
trgList.member("tagesPauschaleExt") = _
srcList.Objects(ii).Member("tagesPauschaleExt")
trgList.member("bezeichnung") = _
srcList.Objects(ii).Member("bezeichnung")
trgList.member("ansatzExt") = _
srcList.Objects(ii).Member("ansatzExt")
trgList.member("planMinutenInt") = _
srcList.Objects(ii).Member("planMinutenInt")
trgList.member("maxPlanWertLeist") = _
srcList.Objects(ii).Member("maxPlanWertLeist")
trgList.member("ansatzKosten") = _
srcList.Objects(ii).Member("ansatzKosten")
trgList.member("ansatzBearbeiter") = _
srcList.Objects(ii).Member("ansatzBearbeiter")
trgList.member("offertText") = _
srcList.Objects(ii).Member("offertText")
set trgList.member("phasen") = newphase
set trgList.member("taetigkeiten") = _
srcList.objects(ii).member("taetigkeiten")
next
end sub
sub CopyBerichte (oldprojekt, newprojekt)
dim srclist
dim trgList
dim ii
dim berichtlink
set srcList = oldprojekt.eval("projektberichtlink")
for ii=0 to srcList.count - 1
set trgList = Vertec.CreateObject("ProjektberichtLink")
trgList.member("adresse") = _
srcList.Objects(ii).member("adresse")
trgList.member("projekte") = newprojekt
trgList.member("berichte") = _
srcList.Objects(ii).member("berichte")
newprojekt.eval("projektberichtlink").Add(trgList)
next
end sub
sub main
Dim Name
Dim source, target
Dim adrlist1, adrlist2
Dim i
Dim srcList, trgList
Dim phasenlist
Dim oldphase, newphase
Name = inputbox ("Name des neuen Projektes:")
if Name = "" then exit sub
'Überprüfe das aktuelle Objekt
set source = Vertec.argobject
if not source.IsOfType("Projekt") then
Msgbox "Sie müssen dieses Script auf einem"_
&" einzelnen Projekt ausführen"
else
'Erzeuge das Projekt und übernehme alle Werte
set target = Vertec.createObject("Projekt")
target.member("aktiv") = false
target.Member("code") = Name
target.member("sprache") = _
source.Member("sprache")
CopyZusatzfelder source, target, "Projekt"
target.member("xkostenstellespesen") = _
source.Member("xkostenstellespesen")
target.member("xkostenstelleauslagen") = _
source.Member("xkostenstelleauslagen")
target.member("xErtragskontoLeistungen") = _
source.Member("xErtragskontoLeistungen")
target.member("xErtragskontoSpesen") = _
source.Member("xErtragskontoSpesen")
target.member("xErtragskontoAuslagen") = _
source.Member("xErtragskontoAuslagen")
target.member("xDatenbankFibu") = _
source.member("xDatenbankFibu")
target.member("xLoginFibu") = _
source.member("xLoginFibu")
target.member("xPasswordFibu") = _
source.member("xPasswordFibu")
target.member("xpersonenKonto") = _
source.Member("xpersonenKonto")
target.member("xDebitorKonto") = _
source.Member("xDebitorKonto")
target.member("xVorschussKonto") = _
source.Member("xVorschussKonto")
target.member("xPlanMinutenInt") = _
source.Member("xPlanMinutenInt")
target.member("xPlanWertExt") = _
source.Member("xPlanWertExt")
target.member("xPlanWertint") = _
source.Member("xPlanWertint")
target.member("xPlanKostenLeistung") = _
source.Member("xPlanKostenLeistung")
target.member("xPlanSpesenWert") = _
source.Member("xPlanSpesenWert")
target.member("xPlanKostenSpesen") = _
source.Member("xPlanKostenSpesen")
target.member("xPlanAuslagenWert") = _
source.Member("xPlanAuslagenWert")
target.member("xPlanKostenAuslagen") = _
source.Member("xPlanKostenAuslagen")
target.member("kontaktPerson") = _
source.Member("kontaktPerson")
target.member("autoRechnungDrucken") = _
source.Member("autoRechnungDrucken")
target.member("autoRechnungBuchen") = _
source.Member("autoRechnungBuchen")
target.member("autoRechnungErstellen") = _
source.Member("autoRechnungErstellen")
target.member("Typ") = _
source.Member("Typ")
target.member("rechnungsintervall") = _
source.Member("rechnungsintervall")
target.member("bemerkung") = _
source.Member("bemerkung")
target.member("xmwsttyp") = source.Member("xmwsttyp")
target.member("betreffend") = _
source.Member("betreffend")
target.member("xkostenstelleleistungen") = _
source.Member("kostenstelleleistungen")
target.member("projektleiter") = Vertec.user
target.member("hb") = source.Member("hb")
target.member("hbstv") = _
source.Member("hbstv")
target.member("sekr") = source.Member("sekr")
target.member("kunde") = _
source.Member("kunde")
target.member("xrechnungsadresse") = _
source.Member("xrechnungsadresse")
target.member("auftraggeber") = _
source.Member("auftraggeber")
target.member("beschrieb") = _
source.Member("beschrieb")
target.member("waehrung") = _
source.Member("waehrung")
target.member("tarifstufe") = _
source.member("tarifstufe")
target.member("verflechtungen1") = _
source.member("verflechtungen1")
target.member("verflechtungen2") = _
source.member("verflechtungen2")
target.member("gegenverflechtungen1") = _
source.member("gegenverflechtungen1")
target.member("gegenverflechtungen2") = _
source.member("gegenverflechtungen2")
'Die Rechnungsvorgaben auf dem Projekt:
target.member("rechRabatt") = _
source.member("rechRabatt")
target.member("rechPauschal") = _
source.member("rechPauschal")
target.member("rechRabattProzent") = _
source.member("rechRabattProzent")
target.member("rechPauschalSpesenProzent") = _
source.member("rechPauschalSpesenProzent")
target.member("rechPauschalBetrag") = _
source.member("rechPauschalBetrag")
target.member("rechPauschalSpesen") = _
source.member("rechPauschalSpesen")
target.member("rechPauschalSpesenBetrag") = _
source.member("rechPauschalSpesenBetrag")
'hänge noch die gleichen Gegenparteien an...
set adrlist1 = source.member("gegenparteien")
set adrlist2 = target.member("gegenparteien")
for i = 0 to adrlist1.count-1
adrlist2.add adrlist1.objects(i)
next
' angehängte bearbeiter kopieren
' zuerst eigentliche liste der bearbeiter
set srcList = source.member("bearbeiter")
set trgList = target.member("bearbeiter")
' muss zuerst die bearbeiterliste löschen
' da beim erzeugen automatisch der aktuelle
' Bearbeiter zugeordnet wird
for i = trgList.count-1 to 0 step-1
trglist.remove trglist.objects(i)
next
for i=0 to srcList.count-1
trgList.Add srcList.Objects(i)
next
' im zweiten Schritt die Linkobjektangaben
set srcList = source.eval("bearbeiterlink")
set trgList = target.eval("bearbeiterlink")
for i=0 to srclist.count-1
trgList.Objects(i).Member("ansatzbearbeiter") = _
srcList.Objects(i).Member("ansatzbearbeiter")
trgList.Objects(i).Member("ansatzkosten") = _
srcList.Objects(i).Member("ansatzkosten")
trgList.Objects(i).Member("ansatzext") = _
srcList.Objects(i).Member("ansatzext")
trgList.Objects(i).Member("tagespauschaleExt") = _
srcList.Objects(i).Member("tagespauschaleExt")
trgList.Objects(i).Member("bezeichnung") = _
srcList.Objects(i).Member("bezeichnung")
trgList.Objects(i).Member("bearbeiterstufe") = _
srcList.Objects(i).Member("bearbeiterstufe")
next
'Nun kommen die Projektphasen dran
set phasenlist = source.eval("phasen")
for i = 0 to phasenlist.count-1
set oldphase = phasenlist.objects(i)
set newphase = Vertec.createObject("Projektphase")
newphase.member("projekt") = target
call CopyPhasenBearbeiter (oldphase, newphase)
call CopyPhasenTaetigkeiten (oldphase, newphase)
call CopyPhasenSpesentypen (oldphase, newphase)
call CopyPhasenAuslagentypen (oldphase, newphase)
CopyPhasenMembers oldphase, newphase
CopyZusatzfelder oldphase, newphase, "ProjektPhase"
AddSubphasen oldphase, newphase
next
'Angehängte Berichte werden ebenfalls kopiert
call CopyBerichte (source, target)
end if
end sub
call main
| erstellt: | 21.11.2007 |
|---|---|
| geändert: | 12.04.2010 |
| Produktlinien: | Expert |
| Module: | Leistung & CRM |
