Zum Inhalt springen

Mitarbeiter-Verplanung in Odoo Planning – Fachliche und technische Grundlagen

25. März 2026 durch
Mitarbeiter-Verplanung in Odoo Planning – Fachliche und technische Grundlagen
Dietmar Hamm

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) oder published
  • Stunden: allocated_hours und allocated_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 auf resource.resource (die abstrakte Ressource)
  • employee_id → computed aus resource_id.employee_id (Zeilen 190–193) – wird also automatisch befüllt, sobald eine Ressource gesetzt wird
  • user_id → related auf resource_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:

  1. Offene Schichten holen – alle Slots mit resource_id = False im Zeitfenster
  2. Kandidaten-Ressourcen suchen – Ressourcen, die die passende Rolle haben (default_role_id oder role_ids)
  3. Arbeitszeitpläne laden_get_valid_work_intervals() liefert die tatsächlichen Anwesenheitsintervalle je Ressource
  4. Bereits verplante Stunden zählen_shift_records_to_timeline_per_resource_id() (Zeilen 1229–1240) baut eine Zeitlinie der Auslastung pro Ressource
  5. 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:

  1. Bereits verplante Slots im Zielzeitraum ermitteln → werden als "unavailable" markiert
  2. Kalendervalidität je Ressource prüfen (_get_calendars_validity_within_period)
  3. Anwesenheiten und Abwesenheiten (Urlaub) laden
  4. 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 ab
  • action_send() (Zeile 99–139): Erstellt ein planning.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


Oddy
Oddy
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