Vertec Python Module "vtcplanning" und "vtcplanningcore"

Die Vertec Python Module für das Arbeiten mit der Ressourcenplanung

Betriebsart

Cloud Abo

|

ON-PREMISES

Module

Leistung & CRM

Budget & Teilprojekt

Fremdkosten

Ressourcenplanung

Business Intelligence

Erstellt: 16.05.2025
Aktualisiert: 16.05.2024 | Aus Artikel Vertec Python Funktionen ausgelagert.

Das Modul "vtcplanningcore"

Ab Version 6.6. gibt es das Python Modul vtcplanningcore für die Ressourcenplanung mit folgenden Methoden:

Methode / Funktion Beschreibung
increment_interval_date(datum, increment): date
Funktion zum Inkrementieren und Dekrementieren von Perioden-Start-Daten. Inkrementiert das angegebene Datum um die in increment angegebene Anzahl Intervalle. Für das Dekrementieren kann eine negative Anzahl Intervalle angegeben werden.
get_planning_level(): string
Gibt die Planungsebene als String zurück.
Mögliche Resultate: 'Projekt' oder 'ProjektPhase'.
get_planning_interval_type(): string
Gibt das Planungsintervall als String zurück.
Mögliche Resultate: 'day', 'week' oder 'month'.
show_bulk_planning_dialog(left_obj, right_obj)

Zeigt einen Dialog zum effizienten Setzen mehrerer Planungswerte für die angegebenen Objekte.

Die Reihenfolge, in der die Objekte bereitgestellt werden, spielt keine Rolle, aber der Aufrufer muss sicherstellen, dass eines davon ein Objekt vom Typ AbstractWorker ist, also entweder ein Projektbearbeiter oder ein Planungsbearbeiter, und das andere entweder ein Projekt oder eine Projektphase, je nach eingestellter Planungsebene.

Das ResourcePlanningProvider Hilfsobjekt

Zur Umsetzung der Ressourcenplanungs Listen steht in diesem Modul auch eine ResourcePlanningProvider Klasse zur Verfügung, welche das Auslesen und Setzen von Plandaten erlaubt und die in einem List Controller verwendet werden kann.

Ein ResourcePlanningProvider Objekt wird für eine Liste von Einträgen (Bearbeiter, Projekte oder Phasen) und eine Zeitperiode angelegt. Der Provider lädt dann sämtliche Planungsdaten für diese Source Objekte und für die angegebene Periode. Anschliessend können die geplanten Werte abgerufen oder gesetzt werden.

Ein Planwert im ResourcePlanningProvider gilt immer für 2 Einträge und ein Datum, z.B. für den Bearbeiter "Christoph Keller", das Projekt "AZZ2" und den Monat beginnend mit 01.08.2022.

Der eine Eintrag (der Source-Eintrag, sourceEntry) muss aus der Liste der bei der Initialisierung angegebenen Einträge stammen. Den anderen Eintrag nennen wir "gegenüberliegend" (othersideEntry).

Die folgenden Methoden stehen auf einem ResourcePlanningProvider Objekt zur Verfügung:

ResourcePlanningProvider(sourceEntries, start, end)
Constructor, erstellt einen Planning-Provider und lädt die Plandaten für die angegebenen Objekte und Periode.
add_entry(obj)
Fügt ein neues Objekt zur Ursprungsliste (sourceEntries) des Providers hinzu.
add_otherside_entry(obj)
Fügt ein neues Objekt temporär in die Liste der otherside Einträge hinzu. Dadurch können für dieses Objekt mit set_planned_minutes() Planwerte eingetragen werden.
get_planned_minutes(date, sourceEntry, othersideEntry, subscriber): int
Liefert die geplante Zeit in Minuten für die Planungs-Zelle mit Intervall-Datum date und die beiden angegebenen Einträge. Falls keine Plandaten vorhanden sind, wird None zurückgegeben.
set_planned_minutes(date, sourceEntry, othersideEntry, value)
Setzt die geplante Zeit in Minuten für die Planungszelle mit Intervall-Datum date und die angegebenen Einträge.
Das Setzen eines None Wertes als value entfernt die Plandaten für diese Zelle.
has_write_access(sourceEntry, othersideEntry, subscriber): boolean
Überprüft, ob für die beiden Objekte und das Datumsintervall Schreibrechte bestehen.
get_planned_minutes_aggregated (source_entry, otherside_entry, dateFrom, dateTo=None, subscriber=None): int
Liefert die aggregierte geplante Zeit für die beiden angegebenen Einträge im angegebenen Zeitraum.
  • Sowohl source_entry als auch otherside_entry können None sein; in diesem Fall werden alle Einträge berücksichtigt, die dem aktuellen ResourcePlanningProvider bekannt sind.
  • dateFrom ist erforderlich, dateTo ist optional. Wenn kein dateTo angegeben wird, wird nur das Intervall berücksichtigt, das mit dateFrom übereinstimmt.
Gibt None zurück, wenn keine Planwerte mit den angegebenen Kriterien gefunden werden.
get_net_capacity_minutes(self, worker, dateFrom, dateTo=None, subscriber=None): int
Netto-Kapazität in Minuten pro Bearbeiter.
  • worker: AbstractWorker, PlanningWorker oder Projektbearbeiter
  • dateFrom: Start-Datum
  • dateTo: Optional, End-Datum. Fall None, wird das End-Datum vom Intervall des dateFrom verwendet.
Damit können beispielsweise auf einem Projekt die Bearbeiter, welche bereits überlastet sind, in der Liste farblich hervorgehoben werden.
get_custom_net_capacity_minutes(self, worker, dateFrom, dateTo=None, subscriber=None): int

Ab Vertec 6.7.0.5. Netto-Kapazität in Minuten pro Bearbeiter unter Berücksichtigung der Systemeinstellung Angepasste Nettokapazität (Prozent).

Gibt None zurück, falls die Systemeinstellung leer ist oder einen ungültigen Wert enthält.

get_gross_capacity_minutes(self, worker, dateFrom, dateTo=None, subscriber=None): int
Brutto-Kapazität in Minuten pro Bearbeiter.
  • worker: AbstractWorker, PlanningWorker oder Projektbearbeiter
  • dateFrom: Start-Datum
  • dateTo: Optional, End-Datum. Fall None, wird das End-Datum vom Intervall des dateFrom verwendet.
Damit können beispielsweise auf einem Projekt die Bearbeiter, welche bereits überlastet sind, in der Liste farblich hervorgehoben werden.
get_remaining_capacity_minutes(worker, dateFrom, dateTo=None, subscriber=None): int
Verbleibende freie Kapazität in Minuten für einen bestimmten Bearbeiter und einen bestimmten Datumsbereich (net_capacity - planned_minutes).
  • worker: AbstractWorker, PlanningWorker oder Projektbearbeiter
  • dateFrom: Start-Datum
  • dateTo: Optional, End-Datum. Fall None, wird das End-Datum vom Intervall des dateFrom verwendet.
get_custom_remaining_capacity_minutes(self,worker, dateFrom, dateTo=None, subscriber=None): int

Ab Vertec 6.7.0.5. Verbleibende freie Kapazität in Minuten für einen bestimmten Bearbeiter und einen bestimmten Datumsbereich unter Berücksichtigung der Systemeinstellung Angepasste Nettokapazität (Prozent).

Gibt None zurück, falls die Systemeinstellung leer ist oder einen ungültigen Wert enthält.

get_otherside_entries(subscriber): list of entries
Liefert die Liste der Einträge für welche bereits Plandaten vorhanden sind, ausgehend von den im Constructor angegebenen Objekten sourceEntries.
generate_date_range(start, end)
Liefert eine Liste von Datumswerten für Planungsintervalle von start bis end. Richtet sich nach der systemweiten Einstellung des Planungs-Intervalls (Monate, Wochen, Tage).
get_start_preceding_interval(): date
Gibt das Datum des Intervalls zurück, das dem Startintervall vorausgeht.
get_column_title_by_date(date): string
Liefert bei Angabe des Datumswert für ein bestimmtes Planungsintervall den geeigneten Spalten-Titel.

ResourcePlanningProvider werden üblicherweise in List Controllern und Custom Renderern für Planungslisten ver-wendet. Der List Controller instanziiert einen Planning-Provider, welcher dann zum Anzeigen und Setzen der Werte in Plan Zellen verwendet wird. 

vtcplanningcore als Stub File

Das vtcplanningcore Modul ist auch als Python Stub File verfügbar. Es heisst vtcplanningcore.py und ist wie die anderen Stub Files im Unterordner PythonStubs im Vertec Installationsverzeichnis abgelegt.

Das Modul "vtcplanning"

Ab Version 6.6. gibt es das Python Modul vtcplanning, mit dem Standard Implementierungen von List Controllern für die Ressourcenplanung mitgeliefert werden.

Diese besitzen alle eine initialize_with_period(start, end, interval) Methode, welche vom Vertec Kern aufgerufen wird und die darzustellende Planungsperiode sowie das Planungsintervall angibt.

Damit eine Planungsliste, welche auf einem neuen Intervall (z.B. aktueller Monat) startet, nicht ganz leer ist, laden die List Controller jeweils auch Planungsdaten für ein Intervall vor dem angegebenen Startdatum.

Das heisst, wenn als Planungsperiode August - Oktober angegeben ist (Planungsintervall "Monat") dann werden auch Zeilenobjekte dargestellt, welche im Juli, nicht aber in August-Oktober Planungsdaten haben.

Zeittabellen

Die Zeittabellen basieren auf einem Einzelobjekt und zeigen pro geplantes gegenüberliegendes Objekt eine Zeile an. Die Spalten entsprechen den zeitlichen Planungsintervallen.

Zeittabellen können, basierend auf einer Liste, auch als read-only Summentabellen angezeigt werden.

Wir liefern im Python Modul vtcplanning die folgenden List Controller Klassen mit:

List Controller Beschreibung
vtcplanning.SingleObjectTimeTableController

Wird verwendet, um auf einzelnen Objekten zu planen (Häkchen Für einzelne Objekte anzeigen? ist gesetzt).

Der Controller kann selbst mit den verschiedenen Klassen (Projekt, ProjektPhase, AbstractWorker, Projektbearbeiter oder PlanningWorker) umgehen, es kann immer derselbe Controller angegeben werden.

vtcplanning.ReadonlySingleObjectTimeTableController Basierend auf einem Einzelobjekt, jedoch read-only, nicht zur Planung. Wird verwendet für Zeittabellen auf einzelnen Objekten, auf die nicht geplant werden kann.
vtcplanning.ReadonlyProjectsSingleObjectTimeTableController Für read-only Projekt-Zeittabellen auf einzelnen Objekten. Werden verwendet, um Projektsummen anzuzeigen, falls die Planungsebene Phasen ist.
vtcplanning.ReadonlyPhasesSingleObjectTimeTableController Für read-only Phasen-Zeittabellen auf einzelnen Objekten. Werden verwendet, um Phasensummen anzuzeigen, falls die Planungsart Bearbeiter-Phasen-Zuordnung ist.
vtcplanning.ReadonlyContainerTimeTableController Für read-only Zeittabellen auf Listen (Häkchen Für Listen anzeigen? ist gesetzt).
Wird verwendet für Summen-Zeittabellen.
vtcplanning.ReadonlyOtherSideContainerTimeTableController Für Read-only Zeittabellen auf Listen (Häkchen Für Listen anzeigen? ist gesetzt).
Wird verwendet für Summen-Zeittabellen, um auf einer Liste von Objekten die Summen der Gegenseite anzuzeigen (z.B. Bearbeitersummen auf einer Projektliste).
vtcplanning.ReadonlyPhasesContainerTimeTableController Für Read-only Zeittabellen auf Listen (Häkchen Für Listen anzeigen? ist gesetzt), um auf einer Liste von Projekten oder Bearbeiter Summen von Phasen anzuzeigen, wenn die Planungsebene Projekt ist (in diesem Fall würden die normalen Listen-Controller auf Projekten nicht angezeigt).

Pivottabellen

Ausgehend von einer Liste von Einträgen (AbstractWorker, Projekt oder Phasen) kann eine Ressourcenplanungs Pivottabelle dargestellt werden. Die Pivottabelle zeigt die Einträge als Spalten und die geplanten gegenüberliegenden Einträge als Zeilen. Dies ermöglich es, via Stern-Zeile Plandaten für neue gegenüberliegende Einträge zu erfassen.

Zur Realisierung von Pivottabellen Ansichten stehen die folgenden List Controller Klassen zur Verfügung:

List Controller Beschreibung
vtcplanning.RegularPivotTableController

Für Pivottabellen mit den Einträgen in der Liste als Zeilen und der Gegenseite als Spalten. Wird verwendet, um auf einer Liste zu planen (Häkchen Für Listen anzeigen? ist gesetzt).

Der Controller kann selbst mit den verschiedenen Klassen (Projekt, ProjektPhase, AbstractWorker, Projektbearbeiter oder PlanningWorker) umgehen, es kann immer derselbe Controller angegeben werden.

vtcplanning.MirroredPivotTableController

Für Pivottabellen mit den Einträgen in der Liste als Spalten und der Gegenseite als Zeilen. Wird verwendet, um auf einer Liste zu planen (Häkchen Für Listen anzeigen? ist gesetzt).

In dieser Liste kann eine Stern-Zeile angezeigt werden, um neue zu planende Objekte einzufügen. Genauere Informationen dazu finden Sie hier.

Der Controller kann selbst mit den verschiedenen Klassen (Projekt, ProjektPhase, AbstractWorker, Projektbearbeiter oder PlanningWorker) umgehen, es kann immer derselbe Controller angegeben werden.

vtcplanning.ReadonlyRegularPivotTableController Wird verwendet, um Projekt – Bearbeiter Pivottabellen anzuzeigen, wenn die Planungsebene Phasen ist, mit den Einträgen der Liste als Zeilen und der Gegenseite als Spalten.
vtcplanning.ReadonlyMirroredPivotTableController Wird verwendet, um Projekt – Bearbeiter Pivottabellen anzuzeigen, wenn die Planungsebene Phasen ist, mit den Einträgen der Liste als Spalten und der Gegenseite als Zeilen.
vtcplanning.RegularSingleObjectPivotTableController Wird verwendet, um auch auf einem Einzelprojekt in Pivottabellen zu planen. Zeigt eine Pivottabelle mit dem einzelnen Eintrag als Zeile und der Gegenseite als Spalten.
vtcplanning.MirroredSingleObjectPivotTableController Wird verwendet, um auch auf einem Einzelprojekt in Pivottabellen zu planen. Zeigt eine Pivottabelle mit dem einzelnen Eintrag als Spalte und der Gegenseite als Zeilen.

Verfügbare Renderer

Dazu passend gibt es folgende Custom Renderer zur Verwendung in den Ressourcenplanungstabellen. Alle diese Renderer können in den Listeneinstellungen auf zwei Arten verwendet werden:

Dynamisch

Zeigt in der Zelle den Wert, welcher zur Kombination Zeile/Spalte passt.

Statisch

Zeigt pro Zeile den summierten Wert über alle Spalten.

Custom Renderer Beschreibung
vtcplanning.PlannedMinutesRenderer

Renderer für die Planungszeiten. Ermöglicht die Eingabe der Planwerte in den einzelnen Zellen.

vtcplanning.NetCapacityRenderer

Renderer, um die Netto-Verfügbarkeit von Bearbeitern anzuzeigen.

vtcplanning.CustomNetCapacityRenderer

Ab Vertec 6.7.0.5. Zeigt die Netto-Verfügbarkeit von Bearbeitern unter Berücksichtigung der Systemeinstellung Angepasste Nettokapazität (Prozent).

vtcplanning.GrossCapacityRenderer

Renderer, um die Brutto-Verfügbarkeit von Bearbeitern anzuzeigen.

vtcplanning.RemainingCapacityRenderer

Renderer, um die Rest-Verfügbarkeit von Bearbeitern anzuzeigen.

vtcplanning.CustomRemainingCapacityRenderer

Ab Vertec 6.7.0.5. Zeigt die Rest-Verfügbarkeit von Bearbeitern unter Berücksichtigung der Systemeinstellung Angepasste Nettokapazität (Prozent).

vtcplanning als Stub File

Das vtcplanning Modul ist auch als Python Stub File verfügbar. Es heisst vtcplanning.py und ist wie die anderen Stub Files im Unterordner PythonStubs im Vertec Installationsverzeichnis abgelegt.

Netherlands

United Kingdom