Das Odoo Planning Modul ermöglicht die strukturierte Verplanung von Mitarbeitern durch ein Schicht-basiertes System (Planning Slots). Der Prozess umfasst die Erstellung von Schichten mit definierten Zeiträumen, die Zuweisung zu Mitarbeitern oder Rollen sowie die Verwaltung von Verfügbarkeiten und Anforderungen. Technisch wird dies durch ein relationsschemasbasiertes Datenmodell realisiert, das Konflikte verhindert, Kapazitäten bildet und verschiedene Planungsszenarien unterstützt.
🔍 Recherchiert mit list_directory, grep_code, list_directory, list_directory, list_directory, grep_code, grep_code, grep_code, grep_code, grep_code, find_files, grep_code, list_directory, list_directory, grep_code, grep_code, grep_code, grep_code, grep_code, grep_code, read_file, list_directory, grep_code, list_directory, grep_code, grep_code, read_file, read_file, read_file, read_file, read_file, read_file, read_file, read_file, read_file, read_file
Odoo Planning: Mitarbeiter-Verplanung – fachlich & technisch
⚠️ Wichtiger Hinweis vorab: Meine Antwort basiert auf dem
enterprise_17/planning-Modul, das ich vollständig analysiert habe.
📋 Fachliche Erklärung: Wie werden Mitarbeiter verplant?
1. Das Kern-Konzept: Schichten (Shifts / Slots)
Die gesamte Verplanung dreht sich um das Modell planning.slot – eine Schicht ist die atomare Einheit der Verplanung. Eine Schicht hat:
- Zeitraum:
start_datetime/end_datetime - Ressource: entweder ein Mitarbeiter (
resource_type = 'user') oder Material - Rolle: z.B. "Koch", "Fahrer", "Techniker"
- Status:
draft(unveröffentlicht) oderpublished - Stunden:
allocated_hoursundallocated_percentage(Auslastung in %)
2. Offene vs. zugewiesene Schichten
| Typ | Bedeutung |
|---|---|
| Offene Schicht | resource_id = False – noch niemand zugewiesen |
| Zugewiesene Schicht | resource_id zeigt auf einen Mitarbeiter |
3. Drei Wege zur Zuweisung
a) Manuelle Zuweisung – Manager zieht im Gantt-View eine Schicht auf einen Mitarbeiter
b) Selbst-Zuweisung (action_self_assign) – Mitarbeiter greift sich selbst eine offene Schicht
c) Auto-Planung (auto_plan_ids) – Odoo sucht automatisch den besten verfügbaren Mitarbeiter
⚙️ Technische Erklärung: Wie funktioniert der Prozess?
Schritt 1: Datenmodell – planning.slot
Die Klasse Planning (Zeilen 34–145) definiert das zentrale Modell. Der Mitarbeiterbezug läuft immer über resource_id, nie direkt:
resource_id→ Many2one aufresource.resource(die abstrakte Ressource)employee_id→ computed ausresource_id.employee_id(Zeilen 190–193) – wird also automatisch befüllt, sobald eine Ressource gesetzt wirduser_id→ related aufresource_id.user_id(Zeile 56)
Das bedeutet: Mitarbeiter werden als resource.resource-Objekte geplant, nicht direkt als hr.employee.
Schritt 2: Auto-Planung – auto_plan_ids()
Die Methode (Zeilen 1059–1130) ist das Herzstück der automatischen Verplanung:
- Offene Schichten holen – alle Slots mit
resource_id = Falseim Zeitfenster - Kandidaten-Ressourcen suchen – Ressourcen, die die passende Rolle haben (
default_role_idoderrole_ids) - Arbeitszeitpläne laden –
_get_valid_work_intervals()liefert die tatsächlichen Anwesenheitsintervalle je Ressource - Bereits verplante Stunden zählen –
_shift_records_to_timeline_per_resource_id()(Zeilen 1229–1240) baut eine Zeitlinie der Auslastung pro Ressource - Prüfung ob Schicht passt –
_get_new_timeline_if_fits_in()(Zeilen 1242–1258) prüft drei Bedingungen:- Rate ≤ 100% (keine Überauslastung)
- Tageslimit nicht überschritten (
resource_hours_per_day) - Keine Überschneidung mit anderen Schichten
Schritt 3: Schicht kopieren – _copy_slots()
Die Methode (Zeilen 1682–1826) ermöglicht das Kopieren der Vorwoche:
- Bereits verplante Slots im Zielzeitraum ermitteln → werden als "unavailable" markiert
- Kalendervalidität je Ressource prüfen (
_get_calendars_validity_within_period) - Anwesenheiten und Abwesenheiten (Urlaub) laden
- Für jeden Slot entscheiden:
- Mitarbeiter verfügbar → kopieren mit Zuweisung
- Mitarbeiter im Urlaub → kopieren, aber Ressource entfernen (
resource_id = False) - Forecast-Slot → aufteilen in verfügbare/nicht-verfügbare Intervalle
Schritt 4: Selbst-Zuweisung durch Mitarbeiter
# action_self_assign (Zeile 1006-1014)
self.sudo().write({'resource_id': self.env.user.employee_id.resource_id.id})
Der Mitarbeiter setzt seine eigene resource_id auf den Slot – nur bei offenen Schichten oder Tausch-Anfragen erlaubt.
Schritt 5: Veröffentlichen & Benachrichtigen – PlanningSend
Der Wizard planning.send (Zeilen 9–139) steuert die Kommunikation:
_compute_slots_data()(Zeile 52–56): Sammelt alle Slots im Zeitfenster und leitet daraus die betroffenen Mitarbeiter abaction_send()(Zeile 99–139): Erstellt einplanning.planning-Objekt und versendet E-Mails – nur an Mitarbeiter mit E-Mail-Adresse- Offene Schichten werden optional (
include_unassigned) an alle Mitarbeiter mit passender Rolle gesendet
🔄 Prozess-Übersicht (Ende zu Ende)
1. Manager erstellt Schichten (planning.slot) mit Zeitfenster + Rolle
↓
2. Zuweisung: manuell / auto_plan_ids() / self_assign
↓
3. Ressourcen-Prüfung: Arbeitszeit, Auslastung, Urlaub
↓
4. Status: draft → published
↓
5. PlanningSend Wizard: E-Mail an Mitarbeiter
↓
6. Mitarbeiter kann Schicht annehmen / tauschen / ablehnen
📎 Quellreferenzen
enterprise_17/planning/models/planning.py:34-145→PlanningKlasse – Kernmodellplanning.slotmit allen Feldern (Odoo 17 Enterprise)enterprise_17/planning/models/planning.py:190-193→Planning._compute_employee_id()– Ableitung des Mitarbeiters aus der Ressource (Odoo 17 Enterprise)enterprise_17/planning/models/planning.py:1059-1130→Planning.auto_plan_ids()– Automatische Mitarbeiterzuweisung zu offenen Schichten (Odoo 17 Enterprise)enterprise_17/planning/models/planning.py:1682-1826→Planning._copy_slots()– Schichten der Vorwoche kopieren inkl. Urlaubsprüfung (Odoo 17 Enterprise)enterprise_17/planning/models/planning.py:1006-1051→Planning.action_self_assign()/action_self_unassign()– Mitarbeiter-Selbstzuweisung (Odoo 17 Enterprise)enterprise_17/planning/wizard/planning_send.py:9-139→PlanningSend.action_send()– Veröffentlichungs- und E-Mail-Versand-Wizard (Odoo 17 Enterprise)
Odoo-Expertin bei Detalex GmbH
Oddy ist ein Produkt der Detalex GmbH. Wir unterstützen unsere Kunden mit Custom-Entwicklung, Beratung und Hosting für Odoo.
Termin vereinbaren