Einführung
In Odoo definieren Modelle, wie Daten strukturiert und in der Datenbank gespeichert werden. Jedes Stück Geschäftsdaten, mit dem Sie arbeiten, von Verkaufsaufträgen über Rechnungen bis hin zu Mitarbeitern, lebt in einem Modell.
Das Verständnis von Odoo-Modellen ist sowohl für Entwickler als auch für funktionale Berater unerlässlich. Modelle sind das Fundament der Odoo-Datenarchitektur. Sie definieren Felder, Beziehungen und Geschäftslogik.
Dieser Artikel konzentriert sich auf eines der Kernmodelle im HR-Modul: hr.employee. Egal, ob Sie benutzerdefinierte HR-Workflows erstellen, Lohnsysteme integrieren oder Anwesenheit und Urlaub konfigurieren, Sie werden mit diesem Modell arbeiten.
Was ist das hr.employee Modell
Das hr.employee-Modell repräsentiert Mitarbeiter in Odoo. Es ist der zentrale Ort, an dem alle Personalinformationen gespeichert sind.
Dieses Odoo-Modell ist Teil der HR (Human Resources)-App. Es wird in den Bereichen Anwesenheit, Urlaub, Verträge, Gehaltsabrechnung und Stundenzettel verwendet.
Es wird installiert, wenn Sie die Mitarbeiter-App aktivieren. Andere Module erweitern es durch Odoo-Modellerbschaft. hr_contract fügt Vertragsfelder hinzu. hr_attendance fügt Check-in und Check-out hinzu. hr_leave fügt Freizeit hinzu. Jedes Modul fügt hinzu, was es benötigt, ohne die Kernstruktur zu duplizieren.
Odoo bietet auch hr.employee.public, eine eingeschränkte Ansicht derselben Daten für Benutzer, die eine begrenzte Sicht auf Mitarbeiter benötigen. Dies ist ein Beispiel dafür, wie Odoo abstrakte Modellmuster und Modellvererbung verwendet, um den Zugriff zu steuern.
Schlüsselfelder im Modell
Hier sind die wichtigsten Odoo-Felder im hr.employee-Modell. Das Verständnis dieser Felder wird Ihnen helfen, effektiv mit Mitarbeiterdaten zu arbeiten.
1. name
Typ: Char. Dieses Feld speichert den Namen des Mitarbeiters. Es wird typischerweise in vielen Odoo-Ansichten angezeigt und ist der primäre Identifikator für den Mitarbeiterdatensatz.
2. create_date
Typ: Datetime. Speichert das Datum und die Uhrzeit, zu der der Datensatz erstellt wurde. Wird automatisch von Odoo verwaltet. Nützlich für Berichterstattung und Audits.
3. write_date
Typ: Datetime. Speichert das Datum und die Uhrzeit der letzten Änderung. Wird ebenfalls automatisch verwaltet. Hilft dabei, nachzuvollziehen, wann die Daten zuletzt aktualisiert wurden.
4. active
Typ: Boolean. Soft-Delete-Flag. Wenn False, wird der Datensatz archiviert und aus den Standardansichten ausgeblendet. Verwenden Sie dies, wenn ein Mitarbeiter ausscheidet. Datensätze werden nicht physisch gelöscht.
5. company_id
Typ: Many2one (res.company). In Multi-Company-Setups zeigt dies an, zu welchem Odoo-Unternehmen der Mitarbeiter gehört. Erforderlich für die meisten Mitarbeiterdatensätze.
6. user_id
Typ: Many2one (res.users). Verknüpft den Mitarbeiter mit einem Odoo-Benutzer. Wenn gesetzt, kann der Mitarbeiter sich anmelden und Odoo nutzen. Wird für den Portalzugang, Stundenzettel und Genehmigungen verwendet.
7. work_email
Typ: Char. Die Arbeits-E-Mail-Adresse. Wird für interne Kommunikation und Benachrichtigungen verwendet.
8. work_phone
Typ: Char. Die Arbeits-Telefonnummer. Wird in Mitarbeiterformularen angezeigt und für Kontakt-Workflows verwendet.
9. mobile_phone
Typ: Char. Arbeits-Handynummer. Wird häufig für SMS oder dringende Benachrichtigungen verwendet.
10. department_id
Typ: Many2one (hr.department). Die Abteilung, zu der der Mitarbeiter gehört. Wird für Organigramme, Berichterstattung und Genehmigungsworkflows verwendet.
11. job_id
Typ: Many2one (hr.job). Die Stellenbezeichnung. Verknüpft mit dem hr.job-Modell, das Stellenbezeichnungen und offene Positionen definiert.
12. job_title
Typ: Char. Freitext-Stellenbezeichnung. Kann verwendet werden, wenn job_id nicht gesetzt ist oder für benutzerdefinierte Titel.
13. parent_id
Typ: Many2one (hr.employee). Der Vorgesetzte. Ermöglicht die Hierarchie der Mitarbeiter. Wird für Genehmigungsketten und die Organisationsstruktur verwendet.
14. coach_id
Typ: Many2one (hr.employee). Der Coach dieses Mitarbeiters. Wird für Leistung und Entwicklung verwendet. Der Coach hat standardmäßig keine spezifischen Rechte.
15. resource_id
Typ: Many2one (resource.resource). Verknüpft mit dem Ressourcenmodell. Wird für Planung, Kapazitätsplanung und Kalenderintegration verwendet.
16. work_contact_id
Typ: Many2one (res.partner). Der Arbeitskontakt. Verknüpft mit dem Partnerdatensatz, der für arbeitsbezogene Kommunikation und Dokumente verwendet wird.
17. address_id
Typ: Many2one (res.partner). Arbeitsadresse. Verknüpft mit einem res.partner-Datensatz für das Büro oder den Arbeitsort.
18. address_home_id
Typ: Many2one (res.partner). Private Adresse. Die Wohnadresse des Mitarbeiters, nicht das Büro. Wird für die Gehaltsabrechnung und Notfallkontakte verwendet.
19. resource_calendar_id
Typ: Many2one (resource.calendar). Arbeitszeitplan. Definiert Arbeitsstunden und -tage. Wird für Anwesenheit, Urlaub und Planung verwendet.
20. employee_type
Typ: Auswahl. Mitarbeitertyp: Mitarbeiter, Freiberufler oder Praktikant. Erforderlich. Beeinflusst die Vertragsgeschichte: Nur der Mitarbeitertyp soll unter Vertrag stehen.
21. barcode
Typ: Char. Badge-ID. Wird zur Identifizierung von Mitarbeitern im Anwesenheitskiosk und bei anderen Barcode-Scans verwendet.
22. pin
Typ: Char. PIN, der im Kiosk-Modus der Anwesenheits-App zum Ein- und Auschecken verwendet wird. Auch verwendet, um den Kassierer im Point of Sale zu wechseln.
23. Geburtstag
Typ: Datum. Geburtsdatum. Wird für HR-Aufzeichnungen und optionale Geburtstags-Erinnerungen verwendet.
24. identifikations_id
Typ: Char. Nationale Identifikationsnummer. Wird für HR- und Lohnabrechnungskonformität verwendet.
25. reisepass_id
Typ: Char. Reisepassnummer. Wird zur Verfolgung von Reisen und Arbeitsgenehmigungen verwendet.
26. bank_konto_id
Typ: Many2one (res.partner.bank). Bankkonto des Mitarbeiters für Gehaltszahlungen.
27. private_email
Typ: Char. Die persönliche E-Mail des Mitarbeiters. Wird verwendet, wenn die Arbeits-E-Mail nicht verfügbar ist.
28. telefon
Typ: Char. Private Telefonnummer. Unterschiedlich von den Kontaktdaten der Arbeit.
29. vertrags_id
Typ: Many2one (hr.contract). Aktueller Vertrag. Referenz auf den aktiven Vertrag.
30. vertrags_ids
Typ: One2many (hr.contract). Alle Verträge, die mit diesem Mitarbeiter verknüpft sind. Vertragsgeschichte.
31. bild_1920
Typ: Binary. Mitarbeiterfoto oder Avatar. Odoo speichert mehrere Größen. Wird in Formularen, Berichten und im Verzeichnis verwendet.
32. verwandte_partner_id
Typ: Many2one (res.partner). Der Kontakt, der mit diesem Mitarbeiter verknüpft ist. Verbindet Mitarbeiterdaten mit dem Partnermodell für CRM und andere Module.
33. urlaubs_manager_id
Typ: Many2one (res.users). Benutzer, der für die Genehmigung von Freizeit verantwortlich ist. Wenn leer, geht die Genehmigung an einen Administrator oder Genehmiger.
34. ausgaben_manager_id
Typ: Many2one (res.users). Benutzer, der für die Genehmigung von Ausgaben verantwortlich ist. Wenn leer, geht die Genehmigung an einen Administrator oder Genehmiger.
35. timesheet_manager_id
Typ: Many2one (res.users). Benutzer, der für die Genehmigung von Arbeitszeittabellen verantwortlich ist. Wenn leer, geht die Genehmigung an einen Administrator für Arbeitszeittabellen oder Benutzer.
Wie dieses Modell in Geschäftsabläufen verwendet wird
1. Mitarbeiterverzeichnis und Einarbeitung
Wenn die Personalabteilung einen neuen Mitarbeiter erstellt, füllt sie den hr.employee-Datensatz aus. Name, Abteilung, Job, Vorgesetzter und Kontaktdaten. Der user_id-Link wird gesetzt, wenn der Mitarbeiter Zugriff auf Odoo erhält.
2. Anwesenheit und Zeiterfassung
Mitarbeiter melden sich über die Anwesenheits-App an und ab. Die An- und Abmeldezeiten werden in hr.attendance gespeichert und sind mit hr.employee verknüpft. Die Barcode- und PIN-Felder ermöglichen den Kioskmodus.
3. Urlaub und Abwesenheit
Urlaubsanträge beziehen sich auf den Mitarbeiter. Die leave_manager_id und resource_calendar_id bestimmen, wer genehmigt und wie viele Tage zugewiesen werden.
4. Gehalt und Verträge
Die Gehaltsabrechnung verwendet hr.employee für die Gehaltsstruktur, Bankverbindung und Vertragsdaten. Die contract_id verknüpft mit dem aktuellen Vertrag. Die contract_ids halten die vollständige Historie.
5. Arbeitszeittabellen und Projektzuweisung
Wenn Mitarbeiter Zeit für Projekte erfassen, verlinkt das Stundenerfassungsblatt zu hr.employee. Die timesheet_manager_id steuert die Genehmigung. Die resource_id verlinkt zu den Planungs- und Terminierungstools.
Wie Entwickler dieses Modell erweitern
Entwickler erweitern hr.employee mit mehreren Mustern. Die Odoo-Modellvererbung ist der Hauptmechanismus.
Modellvererbung
Verwenden Sie _inherit = 'hr.employee', um das Modell zu erweitern. Fügen Sie neue Felder hinzu, überschreiben Sie Methoden oder fügen Sie Einschränkungen hinzu. Das vererbte Modell in Odoo hält Ihre Änderungen in einem separaten Modul für einfache Upgrades.
Felder hinzufügen
Definieren Sie neue Odoo-Felder in Ihrem vererbten Modell. Verwenden Sie den richtigen Feldtyp: Char, Many2one, Boolean, Integer, Text, Selection. Berücksichtigen Sie unternehmensabhängige Felder für mehrere Unternehmen.
Python-Erweiterungen
Überschreiben Sie create, write oder unlink, um Logik hinzuzufügen. Verwenden Sie super(), um das Original aufzurufen. Seien Sie vorsichtig mit berechneten Feldern und deren Abhängigkeiten.
Odoo Studio
Odoo Studio ermöglicht es Ihnen, Felder ohne Code hinzuzufügen. Gut für schnelle Anpassungen. Für komplexe Logik oder Upgrades sind benutzerdefinierte Module wartungsfreundlicher.
Best Practices
- Setzen Sie user_id nur, wenn der Mitarbeiter Odoo-Zugriff benötigt. Nicht alle Mitarbeiter benötigen ein Benutzerkonto.
- Verwenden Sie die parent_id-Hierarchie korrekt. Bauen Sie die Organisationsstruktur von oben nach unten auf.
- Setzen Sie resource_calendar_id für konsistente Arbeitszeiten und Urlaubsberechnungen.
- Beim Erstellen von API-Integrationen verwenden Sie die XML-RPC- oder JSON-RPC-API. Das hr.employee-Modell in Odoo ist vollständig als API-Modell verfügbar. Externe IDs sorgfältig zuordnen.
- Für benutzerdefinierte Felder verwenden Sie das
x_-Präfix oder ein Modulpräfix, um Konflikte mit zukünftigen Odoo-Versionen zu vermeiden. - Felder, die auf hr.group_hr_user beschränkt sind, sollten nicht für Benutzer ohne HR-Zugriff vorab geladen werden. Verwenden Sie Gruppen in den Felddefinitionen.
Häufige Fehler
- Erstellen von doppelten Mitarbeiterdatensätzen anstatt nach vorhandenen zu suchen. Verwenden Sie work_email oder identification_id zur Duplikatsvermeidung.
- Verwechslung von user_id und related_partner_id. user_id ist für die Odoo-Anmeldung. related_partner_id ist der Kontaktdatensatz.
- Vergessen, employee_type festzulegen. Es ist erforderlich und beeinflusst das Verhalten des Vertrags.
- Überschreiben von Kernmethoden, ohne super() aufzurufen. Dies kann andere Module oder zukünftige Updates beeinträchtigen.
- Hinzufügen erforderlicher benutzerdefinierter Felder ohne Standardwerte. Bestehende Datensätze werden bei einem Upgrade die Validierung nicht bestehen.
- Sensiblen HR-Felder Benutzern ohne hr.group_hr_user zugänglich machen. Verwenden Sie Gruppen für Felder, die private Daten enthalten.
Fazit
Das hr.employee-Modell ist zentral für Odoo HR. Es speichert Mitarbeiterdaten, verknüpft Verträge, Anwesenheit und Urlaub. Das Verständnis seiner Felder und wie Module es erweitern, wird Ihnen helfen, Odoo effektiv zu konfigurieren, anzupassen und zu integrieren.
Egal, ob Sie ein funktionaler Berater sind, der HR-Prozesse abbildet, oder ein Entwickler, der benutzerdefinierte Module erstellt, ein solides Verständnis von hr.employee wird Zeit sparen und Fehler verhindern.
Brauchen Sie Hilfe bei Ihrer Odoo-Implementierung?
Dasolo hilft Unternehmen bei der Implementierung, Anpassung und Optimierung von Odoo. Wir sind auf API-Integrationen und Odoo-Entwicklung spezialisiert. Unser Team verfügt über umfassende Erfahrung mit der Odoo-Datenarchitektur und Modellen wie hr.employee.
Wenn Sie Hilfe bei Ihrer Odoo-Implementierung, benutzerdefinierten HR-Modulen oder Integrationen benötigen, sind wir hier, um zu helfen. Buchen Sie eine Demo um Ihr Projekt zu besprechen.