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 werden nicht übernommen.
Übernimmt die Phasen in der richtigen Reihenfolge sowie die verschiedenen Zuordnungen und Berechtigungen. Ausserdem werden Phasenbudgets übernommen (ohne BudgetChange-Objekte).
Der Name des neuen Projektes kann eingegeben werden. Das neue Projekt wird inaktiv gesetzt.
Auf dem Projekt, das kopiert werden soll. Bitte verwenden Sie jeweils das Script, welches zu Ihrer aktuellen Vertec Version passt.
Vertec Version | Besonderheiten Version | Script |
---|---|---|
Version 3.1.7.x - 3.1.8.x | GenericLinks werden nicht übernommen. Der Projektcode wird kopiert und mit "(Kopie)" versehen. Es kann noch kein Name angegeben werden. | ProjektKopieren30.txt |
Version 4.0 bis Version 4.3. | Übernimmt die Phasen in der richtigen Reihenfolge sowie die Bearbeiterzuordnungen und zugeordneten Tätigkeiten. Der Name des neuen Projektes kann eingegeben werden. Das neue Projekt wird inaktiv gesetzt. | ProjektKopieren40.txt |
Ab Version 4.3 | Das Feld privDocPfad gibt es nicht mehr | ProjektKopieren43.txt |
Ab Version 5.0 | Berücksichtigt die Zuordnung von Auslagen- und Spesentypen zu Phasen | ProjektKopieren50.txt |
Ab Version 5.2 | Berücksichtigt die neue Zuordnung von Tätigkeiten zu Phasen. Kopiert neu Zusatzfelder. | ProjektKopieren52.txt |
Ab Version 5.2.6 | Berücksichtigt das Member xMwstTyp | ProjektKopieren526.txt |
Ab Version 5.3 | Berücksichtigt planWertInt (Budgetwert internes Honorar) | ProjektKopieren53.txt |
Ab Version 5.5 | Kopiert neu auch GenericLinks. | ProjektKopieren55.txt |
Ab Version 5.6 | Berücksichtigt Bearbeiterstufe auf BearbeiterPhaseLink und die Zuordnung Bearbeiter auf ProjekteintragstypPhaseLink. Das Kopieren von CustomLinks ist zur Zeit noch nicht möglich. | ProjektKopieren56.txt |
Ab Version 5.8 | BearbeiterLink (neu als UserEintrag), ProjektberichtLink kopiert auch berichtName und automatischDrucken. Ruft die Funktionen msgbox und inputbox direkt auf dem Vertec Objekt auf. Kopiert auch CustomLinks. | ProjektKopieren58.txt |
Ab Version 6.0 | Member der automatischen Rechnungsstellung entfernt, Verflechtungen 1 und 2 sowie Gegenverflechtungen 1 und 2 zusammengeführt; Berichte und Projektberichtlinks entfernt. | ProjektKopieren60.txt ProjektKopieren60.py |
Ein Scripttext wird hier dargestellt, um die Volltextsuche zu ermöglichen. Es handelt sich dabei um den neusten Scripttext, aktuell Python Script ab Version 6.0.
# coding: windows-1252 # #---Bezeichnung: Projekt kopieren # Klassen: Projekt # CondExpression: # ObjectScript: Yes # ContainerScript: N # EventType: - # EventClass: - # EventMembers: - # ExtendedRights: N # #---Erstellt ein neues Projekt und kopiert die Einstellungen vom Quellen-Projekt #---2017-12-17, UOS: Aus Vorlage erstellt from vtcapp import msgbox, createobject, beginsystemcontext, endsystemcontext def main(Vprojekt): def copySubPhasen(phase, parentPhase): subPhasen = phase.subphasen if len(subPhasen) > 0: for subPhase in subPhasen: newPhase = copyPhase(subPhase, parentPhase, projekt) copySubPhasen(subPhase, newPhase) def copyPhase(vorlagePhase, parentPhase, projekt): newPhase = createobject("Projektphase") newPhase.projekt = projekt # Phasen unterhalb des Projektes haben keine Parentphase. if parentPhase != None: newPhase.parentphase = parentPhase newPhase.code = vorlagePhase.code newPhase.xAktiv = vorlagePhase.Aktiv newPhase.verrechenbar = vorlagePhase.verrechenbar newPhase.status = vorlagePhase.status newPhase.Beschreibung = vorlagePhase.Beschreibung newPhase.bemerkung = vorlagePhase.bemerkung newPhase.pauschal = vorlagePhase.pauschal newPhase.pauschalspesen = vorlagePhase.pauschalspesen newPhase.pauschalauslagen = vorlagePhase.pauschalauslagen newPhase.orderidx = vorlagePhase.orderidx # Vorgaben newPhase.ansatzext = vorlagePhase.ansatzext newPhase.ansatzkosten = vorlagePhase.ansatzkosten newPhase.ansatzbearbeiter = vorlagePhase.ansatzbearbeiter newPhase.tagespauschaleext = vorlagePhase.tagespauschaleext newPhase.bearbeiterzuordnung = vorlagePhase.bearbeiterzuordnung newPhase.taetigkeitenzuordnung = vorlagePhase.taetigkeitenzuordnung newPhase.spesentypenzuordnung = vorlagePhase.spesentypenzuordnung newPhase.auslagetypenzuordnung = vorlagePhase.auslagetypenzuordnung # Buchhaltung newPhase.ertragskontoleistungen = vorlagePhase.ertragskontoleistungen newPhase.ertragskontospesen = vorlagePhase.ertragskontospesen newPhase.ertragskontoauslagen = vorlagePhase.ertragskontoauslagen newPhase.kostenstelleleistungen = vorlagePhase.kostenstelleleistungen newPhase.kostenstellespesen = vorlagePhase.kostenstellespesen newPhase.kostenstelleauslagen = vorlagePhase.kostenstelleauslagen #Links CopyPhasenBearbeiter(vorlagePhase, newPhase) CopyPhasenTaetigkeiten(vorlagePhase, newPhase) CopyPhasenSpesentypen(vorlagePhase, newPhase) CopyPhasenAuslagentypen(vorlagePhase, newPhase) # Zusatzfelder CopyZusatzfelder(vorlagePhase, newPhase) return newPhase def CopyPhasenSpesentypen(oldphase, newphase): PhaseSpesentypenListe = oldphase.eval("self.spesentypphaselink") for oldPhasenSpesentyp in PhaseSpesentypenListe: newPhasenSpesentyp = createobject("SpesenTypPhaseLink") newPhasenSpesentyp.minPlanWertSpesen = oldPhasenSpesentyp.minPlanWertSpesen newPhasenSpesentyp.maxPlanWertSpesen = oldPhasenSpesentyp.maxPlanWertSpesen newPhasenSpesentyp.planKostenSpesen = oldPhasenSpesentyp.planKostenSpesen newPhasenSpesentyp.planWertSpesen = oldPhasenSpesentyp.planWertSpesen newPhasenSpesentyp.wertproeinheitext = oldPhasenSpesentyp.wertproeinheitext newPhasenSpesentyp.wertproeinheitint = oldPhasenSpesentyp.wertproeinheitint newPhasenSpesentyp.wertproeinheitkosten = oldPhasenSpesentyp.wertproeinheitkosten newPhasenSpesentyp.bezeichnung = oldPhasenSpesentyp.bezeichnung newPhasenSpesentyp.offertText = oldPhasenSpesentyp.offertText newPhasenSpesentyp.phasen = newphase newPhasenSpesentyp.spesentypen = oldPhasenSpesentyp.spesentypen newPhasenSpesentyp.bearbeiter = oldPhasenSpesentyp.bearbeiter def CopyPhasenAuslagentypen(oldphase, newphase): PhaseAuslagentypenListe = oldphase.eval("self.auslagetypphaselink") for oldPhasenAuslagentyp in PhaseAuslagentypenListe: newPhasenAuslagentyp = createobject("AuslageTypPhaseLink") newPhasenAuslagentyp.minPlanWertAuslagen = oldPhasenAuslagentyp.minPlanWertAuslagen newPhasenAuslagentyp.PlanWertAuslagen = oldPhasenAuslagentyp.PlanWertAuslagen newPhasenAuslagentyp.maxPlanWertAuslagen = oldPhasenAuslagentyp.maxPlanWertAuslagen newPhasenAuslagentyp.PlanKostenAuslagen = oldPhasenAuslagentyp.PlanKostenAuslagen newPhasenAuslagentyp.maxPlanKostenAuslagen = oldPhasenAuslagentyp.maxPlanKostenAuslagen newPhasenAuslagentyp.minPlanKostenAuslagen = oldPhasenAuslagentyp.minPlanKostenAuslagen newPhasenAuslagentyp.wertproeinheitext = oldPhasenAuslagentyp.wertproeinheitext newPhasenAuslagentyp.wertproeinheitint = oldPhasenAuslagentyp.wertproeinheitint newPhasenAuslagentyp.wertproeinheitkosten = oldPhasenAuslagentyp.wertproeinheitkosten newPhasenAuslagentyp.bezeichnung = oldPhasenAuslagentyp.bezeichnung newPhasenAuslagentyp.offertText = oldPhasenAuslagentyp.offertText newPhasenAuslagentyp.phasen = newphase newPhasenAuslagentyp.auslagetypen = oldPhasenAuslagentyp.auslagetypen newPhasenAuslagentyp.bearbeiter = oldPhasenAuslagentyp.bearbeiter def CopyPhasenBearbeiter(oldphase, newphase): PhaseBearbeiterListe = oldphase.eval("bearbeiterphasen") for oldPhasenBearbeiter in PhaseBearbeiterListe: newPhasenBearbeiter = createobject("BearbeiterPhaseLink") newPhasenBearbeiter.Ansatzkosten = oldPhasenBearbeiter.Ansatzkosten newPhasenBearbeiter.AnsatzBearbeiter = oldPhasenBearbeiter.AnsatzBearbeiter newPhasenBearbeiter.TagesPauschaleExt = oldPhasenBearbeiter.TagesPauschaleExt newPhasenBearbeiter.AnsatzExt = oldPhasenBearbeiter.AnsatzExt newPhasenBearbeiter.Bearbeiter = oldPhasenBearbeiter.Bearbeiter newPhasenBearbeiter.Phase = newphase def CopyPhasenTaetigkeiten(oldphase, newphase): PhaseTaetigkeitenListe = oldphase.eval("taetigkeitphaselink") for oldPhasenTaetigkeit in PhaseTaetigkeitenListe: newPhasenTaetigkeit = createobject("TaetigkeitPhaseLink") newPhasenTaetigkeit.planWertLeist = oldPhasenTaetigkeit.planWertLeist newPhasenTaetigkeit.minPlanWertLeist = oldPhasenTaetigkeit.minPlanWertLeist newPhasenTaetigkeit.stueckwert = oldPhasenTaetigkeit.stueckwert newPhasenTaetigkeit.tagesPauschaleExt = oldPhasenTaetigkeit.tagesPauschaleExt newPhasenTaetigkeit.bezeichnung = oldPhasenTaetigkeit.bezeichnung newPhasenTaetigkeit.ansatzExt = oldPhasenTaetigkeit.ansatzExt newPhasenTaetigkeit.planMinutenInt = oldPhasenTaetigkeit.planMinutenInt newPhasenTaetigkeit.maxPlanWertLeist = oldPhasenTaetigkeit.maxPlanWertLeist newPhasenTaetigkeit.ansatzKosten = oldPhasenTaetigkeit.ansatzKosten newPhasenTaetigkeit.ansatzBearbeiter = oldPhasenTaetigkeit.ansatzBearbeiter newPhasenTaetigkeit.offertText = oldPhasenTaetigkeit.offertText newPhasenTaetigkeit.phasen = newphase newPhasenTaetigkeit.taetigkeiten = oldPhasenTaetigkeit.taetigkeiten newPhasenTaetigkeit.bearbeiter = oldPhasenTaetigkeit.bearbeiter def CopyZusatzfelder (quelle, ziel): zusatzfeldlist = quelle.eval("zusatzfelder.metaZusatzfeld") for zusatzfeld in zusatzfeldlist: print zusatzfeld zusatzfeldname = zusatzfeld.eval("fieldname") print zusatzfeldname quellwert = getattr(quelle, zusatzfeldname) setattr(ziel, zusatzfeldname, quellwert) def CopyProjekteinstellungen(source, target): # Diverse Felder target.rechnungsIntervall = source.rechnungsIntervall target.bemerkung = source.bemerkung target.betreffend = source.betreffend target.beschrieb = source.beschrieb target.tarifstufe = source.tarifstufe target.projektnummer = source.projektnummer #Die Rechnungsvorgaben auf dem Projekt: target.rechRabatt = source.rechRabatt target.rechPauschal = source.rechPauschal target.rechRabattProzent = source.rechRabattProzent target.rechPauschalSpesenProzent = source.rechPauschalSpesenProzent target.rechPauschalBetrag = source.rechPauschalBetrag target.rechPauschalSpesen = source.rechPauschalSpesen target.rechPauschalSpesenBetrag = source.rechPauschalSpesenBetrag #Vorgaben target.xansatzext = source.xansatzext target.xansatzkosten = source.xansatzkosten target.xansatzbearbeiter = source.xansatzbearbeiter target.xtagesPauschaleExt = source.xtagesPauschaleExt #Zahlungskonditionen target.xDebiKondition = source.xDebiKondition #Buchhaltung target.xDatenbankFibu = source.xDatenbankFibu target.xLoginFibu = source.xLoginFibu target.xPasswordFibu = source.xPasswordFibu target.xPersonenkonto =source.xPersonenkonto target.xErtragskontoLeistungen = source.xErtragskontoLeistungen target.xErtragskontoSpesen = source.xErtragskontoSpesen target.xErtragskontoAuslagen = source.xErtragskontoAuslagen target.xDebitorkonto = source.xDebitorkonto target.xVorschusskonto = source.xVorschusskonto target.xKostenstelleLeistungen = source.xKostenstelleLeistungen target.xKostenstelleSpesen = source.xKostenstelleSpesen target.xKostenstelleAuslagen = source.xKostenstelleAuslagen target.xZahlungstyp = source.xZahlungstyp # Zusatzfelder CopyZusatzfelder (source, target) if not Vprojekt.eval("oclistypeof(Projekt)"): msgbox("Das Script wurde nicht auf einem Projekt ausgeführt.") return projekt = vtcapp.createobject("Projekt") #Zusätzliche Projekteinstellungen übernehmen CopyProjekteinstellungen(Vprojekt, projekt) #Stichworte übernehmen Stichworte = Vprojekt.eval("ordner->select(parentordner.stichwort)") for StOrdner in Stichworte: projekt.ordner.append(StOrdner) # Mindestens 1 Phase vorhanden if Vprojekt.eval("allephasen.list->size>0"): PhasenStufe1 = Vprojekt.phasen for vorlagePhase in PhasenStufe1: newPhase = copyPhase(vorlagePhase, vorlagePhase.parentphase, projekt) copySubPhasen(vorlagePhase, newPhase) vtcapp.showdetailform (projekt) main(argobject)