Inleiding
In Odoo definiëren modellen hoe gegevens zijn gestructureerd en opgeslagen in de database. Elk stuk bedrijfsgegevens waarmee u werkt, van verkooporders tot facturen tot werknemers, bevindt zich in een model.
Het begrijpen van Odoo-modellen is essentieel voor zowel ontwikkelaars als functionele consultants. Modellen zijn de basis van de Odoo-gegevensarchitectuur. Ze definiëren velden, relaties en bedrijfslogica.
Dit artikel richt zich op een van de kernmodellen in de HR-module: hr.employee. Of u nu aangepaste HR-workflows bouwt, payrollsystemen integreert of aanwezigheid en verlof configureert, u zult met dit model werken.
Wat is het hr.employee Model
Het hr.employee-model vertegenwoordigt werknemers in Odoo. Het is de centrale plek waar alle personeelsinformatie wordt opgeslagen.
Dit Odoo-model maakt deel uit van de HR (Human Resources) app. Het wordt gebruikt voor aanwezigheid, verlof, contracten, loonadministratie en tijdregistraties.
Het wordt geïnstalleerd wanneer je de Employees-app inschakelt. Andere modules breiden het uit via Odoo-modelovererving. hr_contract voegt contractvelden toe. hr_attendance voegt in- en uitchecken toe. hr_leave voegt verlof toe. Elke module voegt toe wat het nodig heeft zonder de kernstructuur te dupliceren.
Odoo biedt ook hr.employee.public, een beperkte weergave van dezelfde gegevens voor gebruikers die beperkte zichtbaarheid van werknemers nodig hebben. Dit is een voorbeeld van hoe Odoo abstracte modelpatronen en modelovererving gebruikt om toegang te controleren.
Belangrijke Velden in het Model
Hier zijn de belangrijkste Odoo-velden in het hr.employee-model. Het begrijpen hiervan zal je helpen om effectief met werknemersrecords te werken.
1. naam
Type: Char. Dit veld slaat de naam van de werknemer op. Het wordt doorgaans in veel Odoo-weergaven weergegeven en is de primaire identificator voor het werknemersrecord.
2. create_date
Type: Datetime. Slaat de datum en tijd op waarop het record is aangemaakt. Automatisch beheerd door Odoo. Nuttig voor rapportage en auditing.
3. write_date
Type: Datetime. Slaat de datum en tijd van de laatste wijziging op. Ook automatisch beheerd. Helpt bij het bijhouden wanneer gegevens voor het laatst zijn bijgewerkt.
4. actief
Type: Boolean. Soft delete vlag. Wanneer False, wordt het record gearchiveerd en verborgen voor standaardweergaven. Gebruik dit wanneer een werknemer vertrekt. Records worden niet fysiek verwijderd.
5. company_id
Type: Many2one (res.company). In multi-company setups geeft dit aan bij welk Odoo bedrijf de werknemer hoort. Vereist voor de meeste werknemersrecords.
6. user_id
Type: Many2one (res.users). Verbindt de werknemer met een Odoo gebruiker. Wanneer ingesteld, kan de werknemer inloggen en Odoo gebruiken. Gebruikt voor portaltoegang, tijdregistraties en goedkeuringen.
7. work_email
Type: Char. Het werk e-mailadres. Gebruikt voor interne communicatie en meldingen.
8. work_phone
Type: Char. Het werktelefoonnummer. Weergegeven in werknemersformulieren en gebruikt voor contactworkflows.
9. mobile_phone
Type: Char. Werk mobiel nummer. Vaak gebruikt voor SMS of dringende meldingen.
10. department_id
Type: Many2one (hr.department). De afdeling waartoe de werknemer behoort. Gebruikt voor organigrammen, rapportage en goedkeuringsworkflows.
11. job_id
Type: Many2one (hr.job). De functie. Verbindt met het hr.job-model dat functietitels en openstaande posities definieert.
12. job_title
Type: Char. Vrije tekst functietitel. Kan worden gebruikt wanneer job_id niet is ingesteld of voor aangepaste titels.
13. parent_id
Type: Many2one (hr.employee). De manager. Maakt de hiërarchie van werknemers mogelijk. Gebruikt voor goedkeuringsketens en organisatiestructuur.
14. coach_id
Type: Many2one (hr.employee). De coach van deze werknemer. Gebruikt voor prestaties en ontwikkeling. De coach heeft standaard geen specifieke rechten.
15. resource_id
Type: Many2one (resource.resource). Verbindt met het resource-model. Gebruikt voor planning, capaciteitsplanning en kalenderintegratie.
16. work_contact_id
Type: Many2one (res.partner). De werkcontact. Verbindt met het partnerrecord dat wordt gebruikt voor werkgerelateerde communicatie en documenten.
17. address_id
Type: Many2one (res.partner). Werkadres. Verbindt met een res.partner-record voor het kantoor of de werkplek.
18. address_home_id
Type: Many2one (res.partner). Privéadres. Het thuisadres van de werknemer, niet het kantoor. Gebruikt voor loonadministratie en noodcontacten.
19. resource_calendar_id
Type: Many2one (resource.calendar). Werkrooster. Definieert werkuren en -dagen. Gebruikt voor aanwezigheid, verlof en planning.
20. employee_type
Type: Selectie. Werknemerstype: Werknemer, Freelancer of Stagiair. Vereist. Beïnvloedt de contractgeschiedenis: alleen het type Werknemer zou onder contract moeten staan.
21. barcode
Type: Char. Badge-ID. Gebruikt voor werknemersidentificatie in het aanwezigheidskiosk en andere barcode-scanning.
22. pin
Type: Char. PIN gebruikt om in en uit te checken in de Kiosk-modus van de Aanwezigheidsapp. Ook gebruikt om de kassier te veranderen in het Point of Sale.
23. verjaardag
Type: Datum. Geboortedatum. Gebruikt voor HR-registraties en optionele verjaardagsherinneringen.
24. identificatie_id
Type: Char. Nationaal identificatienummer. Gebruikt voor HR- en looncompliance.
25. paspoort_id
Type: Char. Paspoortnummer. Gebruikt voor reis- en werkvergunningtracking.
26. bank_account_id
Type: Many2one (res.partner.bank). Bankrekening van de werknemer voor salarisbetalingen.
27. privé_email
Type: Char. Het persoonlijke e-mailadres van de werknemer. Gebruikt wanneer het werk-e-mailadres niet beschikbaar is.
28. telefoon
Type: Char. Privé telefoonnummer. Verschilt van werkcontactgegevens.
29. contract_id
Type: Many2one (hr.contract). Huidig contract. Verwijzing naar het actieve contract.
30. contract_ids
Type: One2many (hr.contract). Alle contracten gekoppeld aan deze werknemer. Contractgeschiedenis.
31. image_1920
Type: Binary. Werknemersfoto of avatar. Odoo slaat meerdere formaten op. Gebruikt in formulieren, rapporten en de directory.
32. related_partner_id
Type: Many2one (res.partner). Het contact gekoppeld aan deze werknemer. Verbindt werknemersgegevens met het partnermodel voor CRM en andere modules.
33. leave_manager_id
Type: Many2one (res.users). Gebruiker verantwoordelijk voor het goedkeuren van verlof. Als leeg, gaat de goedkeuring naar een Administrator of Approver.
34. expense_manager_id
Type: Many2one (res.users). Gebruiker verantwoordelijk voor het goedkeuren van uitgaven. Als leeg, gaat de goedkeuring naar een Administrator of Approver.
35. timesheet_manager_id
Type: Many2one (res.users). Gebruiker verantwoordelijk voor het goedkeuren van tijdregistraties. Als leeg, gaat de goedkeuring naar een Timesheets Administrator of Gebruiker.
Hoe Dit Model Wordt Gebruikt in Bedrijfsworkflows
1. Medewerkersdirectory en Onboarding
Wanneer HR een nieuwe medewerker aanmaakt, vullen ze het hr.employee record in. Naam, afdeling, functie, manager en contactgegevens. De user_id link wordt ingesteld wanneer de medewerker toegang tot Odoo krijgt.
2. Aanwezigheid en Tijdregistratie
Medewerkers registreren zich in en uit via de Aanwezigheid-app. De in- en uitchecktijden worden opgeslagen in hr.attendance, gekoppeld aan hr.employee. De barcode- en pincodevelden maken kioskmodus mogelijk.
3. Verlof en Afwezigheid
Verlofaanvragen verwijzen naar de medewerker. De leave_manager_id en resource_calendar_id bepalen wie goedkeurt en hoeveel dagen worden toegewezen.
4. Loonlijst en Contracten
Loonlijst gebruikt hr.employee voor salarisstructuur, bankrekening en contractgegevens. De contract_id linkt naar het huidige contract. De contract_ids bevatten de volledige geschiedenis.
5. Tijdregistraties en Projecttoewijzing
Wanneer werknemers tijd registreren op projecten, linkt de urenstaat naar hr.employee. De timesheet_manager_id controleert de goedkeuring. De resource_id linkt naar de plannings- en planningshulpmiddelen.
Hoe Ontwikkelaars Dit Model Uitbreiden
Ontwikkelaars breiden hr.employee uit met verschillende patronen. Odoo modelovererving is het belangrijkste mechanisme.
Modelovererving
Gebruik _inherit = 'hr.employee' om het model uit te breiden. Voeg nieuwe velden toe, overschrijf methoden of voeg beperkingen toe. Het geërfde model in Odoo houdt je wijzigingen in een apart module voor gemakkelijke upgrades.
Velden toevoegen
Definieer nieuwe Odoo-velden in je geërfde model. Gebruik het juiste veldtype: Char, Many2one, Boolean, Integer, Text, Selection. Overweeg bedrijfafhankelijke velden voor meerdere bedrijven.
Python-uitbreidingen
Overschrijf create, write of unlink om logica toe te voegen. Gebruik super() om de originele aanroep te doen. Wees voorzichtig met berekende velden en hun afhankelijkheden.
Odoo Studio
Odoo Studio stelt je in staat om velden toe te voegen zonder code. Goed voor snelle aanpassingen. Voor complexe logica of upgrades zijn aangepaste modules beter onderhoudbaar.
Beste Praktijken
- Stel user_id alleen in wanneer de werknemer Odoo-toegang nodig heeft. Niet alle werknemers hebben een gebruikersaccount nodig.
- Gebruik de parent_id hiërarchie correct. Bouw de organisatiestructuur van boven naar beneden.
- Stel resource_calendar_id in voor consistente werkuren en verlofberekeningen.
- Bij het bouwen van API-integraties, gebruik de XML-RPC of JSON-RPC API. Het hr.employee model in Odoo is volledig blootgesteld als een API-model. Map externe ID's zorgvuldig.
- Voor aangepaste velden, gebruik de
x_prefix of een moduleprefix om conflicten met toekomstige Odoo-versies te vermijden. - Velden die beperkt zijn tot hr.group_hr_user mogen niet vooraf worden opgehaald voor gebruikers zonder HR-toegang. Gebruik groepen in velddefinities.
Veelvoorkomende Fouten
- Maak geen dubbele werknemersrecords aan in plaats van te zoeken naar bestaande. Gebruik work_email of identification_id voor deduplicatie.
- Verwarring tussen user_id en related_partner_id. user_id is voor Odoo-login. related_partner_id is het contactrecord.
- Vergeet niet om employee_type in te stellen. Dit is vereist en beïnvloedt het gedrag van contracten.
- Kernmethoden overschrijven zonder super() aan te roepen. Dit kan andere modules of toekomstige upgrades breken.
- Vereiste aangepaste velden toevoegen zonder standaardwaarden. Bestaande records zullen falen bij validatie tijdens de upgrade.
- Gevoelige HR-velden blootstellen aan gebruikers zonder hr.group_hr_user. Gebruik groepen op velden die privégegevens bevatten.
Conclusie
Het hr.employee model is centraal in Odoo HR. Het slaat werknemersgegevens op, koppelt aan contracten, aanwezigheid en verlof. Begrijpen van zijn velden en hoe modules het uitbreiden zal je helpen Odoo effectief te configureren, aanpassen en integreren.
Of je nu een functionele consultant bent die HR-processen in kaart brengt of een ontwikkelaar die aangepaste modules bouwt, een goed begrip van hr.employee zal tijd besparen en fouten voorkomen.
Hulp Nodig Bij Uw Odoo Implementatie?
Dasolo helpt bedrijven bij het implementeren, aanpassen en optimaliseren van Odoo. We zijn gespecialiseerd in API-integraties en Odoo-ontwikkeling. Ons team heeft diepgaande ervaring met de Odoo-gegevensarchitectuur en modellen zoals hr.employee.
Als je hulp nodig hebt bij je Odoo-implementatie, aangepaste HR-modules of integraties, zijn we hier om te helpen. Boek een demo om je project te bespreken.