workspace-v1/shared/knowledge-base/reference/odoo/docs/03-modelado-datos/MODELO-hr.md
rckrdmrd cb4c0681d3 feat(workspace): Add new projects and update architecture
New projects created:
- michangarrito (marketplace mobile)
- template-saas (SaaS template)
- clinica-dental (dental ERP)
- clinica-veterinaria (veterinary ERP)

Architecture updates:
- Move catalog from core/ to shared/
- Add MCP servers structure and templates
- Add git management scripts
- Update SUBREPOSITORIOS.md with 15 new repos
- Update .gitignore for new projects

Repository infrastructure:
- 4 main repositories
- 11 subrepositorios
- Gitea remotes configured

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 04:43:28 -06:00

9.5 KiB

Modelo de Datos: HR (Recursos Humanos)

Modulo: hr Total Modelos: 10+ Modelos Documentados: 6 (principales)


1. Indice de Modelos Principales

Modelo Descripcion Campos Archivo
hr.employee Empleados 100+ hr_employee.py
hr.department Departamentos 15+ hr_department.py
hr.job Puestos trabajo 15+ hr_job.py
hr.version Versiones empleado 40+ hr_version.py
hr.work.location Ubicaciones 6 hr_work_location.py
hr.employee.category Categorias 3 hr_employee_category.py

2. Detalle por Modelo

2.1 hr.employee (Empleados)

Archivo: models/hr_employee.py Descripcion: Employee Hereda de: mail.thread.main.attachment, mail.activity.mixin, resource.mixin, avatar.mixin

Campos de Identificacion

Campo Tipo Req Descripcion
name Char Si Nombre (related resource_id.name)
barcode Char No Badge ID (unico)
pin Char No PIN seguridad
active Boolean No Activo (default=True)
resource_id Many2one Si Recurso asociado

Campos Organizacionales

Campo Tipo Req Descripcion
user_id Many2one No Usuario Odoo
company_id Many2one Si Empresa
department_id Many2one No Departamento
job_id Many2one No Puesto de trabajo
parent_id Many2one No Gerente directo
coach_id Many2one No Coach/Mentor
child_ids One2many No Subordinados directos

Campos de Contacto Laboral

Campo Tipo Descripcion
work_phone Char Telefono laboral
mobile_phone Char Movil laboral
work_email Char Email laboral
work_contact_id Many2one Contacto res.partner
work_location_id Many2one Ubicacion de trabajo

Campos Personales (groups="hr.group_hr_user")

Campo Tipo Descripcion
legal_name Char Nombre legal
birthday Date Fecha nacimiento
place_of_birth Char Lugar nacimiento
country_of_birth Many2one Pais nacimiento
private_phone Char Telefono privado
private_email Char Email privado
identification_id Char ID nacional
passport_id Char Numero pasaporte
permit_no Char Permiso de trabajo

Campos de Versionamiento

Campo Tipo Descripcion
version_ids One2many Historico versiones
current_version_id Many2one Version actual (stored)
version_id Many2one Version actual (computed)

Restricciones

Constraint Descripcion
barcode UNIQUE Badge ID unico
user_company UNIQUE Un usuario, una empresa

2.2 hr.department (Departamentos)

Archivo: models/hr_department.py Descripcion: HR Department Hereda de: mail.thread, mail.activity.mixin Estructura: Jerarquica (_parent_store=True)

Campos Principales

Campo Tipo Req Descripcion
name Char Si Nombre departamento
complete_name Char No Nombre completo jerarquico
active Boolean No Activo (default=True)
company_id Many2one No Empresa
parent_id Many2one No Departamento padre
child_ids One2many No Subdepartamentos
manager_id Many2one No Gerente
member_ids One2many No Empleados
jobs_ids One2many No Puestos
total_employee Integer No Total empleados (computed)
parent_path Char No Ruta jerarquica
master_department_id Many2one No Departamento raiz

2.3 hr.job (Puestos de Trabajo)

Archivo: models/hr_job.py Descripcion: Job Position Hereda de: mail.thread

Campos Principales

Campo Tipo Req Descripcion
name Char Si Nombre del puesto
active Boolean No Activo
sequence Integer No Orden (default=10)
department_id Many2one No Departamento
company_id Many2one No Empresa
employee_ids One2many No Empleados en puesto
no_of_employee Integer No Empleados actuales
expected_employees Integer No Empleados esperados
no_of_recruitment Integer No Vacantes (default=1)
description Html No Descripcion
requirements Text No Requisitos
contract_type_id Many2one No Tipo contrato

Restriccion

name + company_id + department_id UNIQUE

2.4 hr.version (Versiones de Empleado)

Archivo: models/hr_version.py Descripcion: Employee Version History

Campos de Contrato

Campo Tipo Descripcion
employee_id Many2one Empleado (requerido)
date_version Date Fecha efectiva (requerido)
contract_date_start Date Inicio contrato
contract_date_end Date Fin contrato
trial_date_end Date Fin periodo prueba
wage Monetary Salario bruto mensual
contract_type_id Many2one Tipo contrato
structure_type_id Many2one Estructura salarial

Campos Personales

Campo Tipo Descripcion
country_id Many2one Nacionalidad
sex Selection Genero (male/female/other)
marital Selection Estado civil
children Integer Hijos dependientes
identification_id Char ID nacional
ssnid Char Seguro social
passport_id Char Pasaporte

Estados de Version

Campo Tipo Descripcion
is_current Boolean Version actual
is_past Boolean Version pasada
is_future Boolean Version futura

2.5 hr.work.location (Ubicaciones)

Archivo: models/hr_work_location.py Descripcion: Work Location

Campo Tipo Req Descripcion
name Char Si Nombre ubicacion
active Boolean No Activo
company_id Many2one Si Empresa
location_type Selection No Tipo (home/office/other)
address_id Many2one Si Direccion
location_number Char No Numero ubicacion

2.6 hr.employee.category (Categorias)

Archivo: models/hr_employee_category.py Descripcion: Employee Category (Tags)

Campo Tipo Req Descripcion
name Char Si Nombre (unico)
color Integer No Color (1-11)
employee_ids Many2many No Empleados

3. Diagrama Entidad-Relacion

┌───────────────────────┐      child_ids       ┌───────────────────────┐
│    hr.department      │◄─────────────────────│    hr.department      │
│                       │                       │                       │
│  - name               │      parent_id       │  (Subdepartamento)    │
│  - complete_name      │─────────────────────►│                       │
│  - manager_id ──────┐ │                       └───────────────────────┘
└───────────┬─────────┘ │
            │           │
   member_ids           │
            ▼           │
┌───────────────────────┐                       ┌───────────────────────┐
│    hr.employee        │◄──────────────────────│    hr.employee        │
│                       │      parent_id        │   (Subordinado)       │
│  - name               │                       └───────────────────────┘
│  - department_id      │
│  - job_id ──────────┐ │      version_ids     ┌───────────────────────┐
│  - parent_id ───────┘ │─────────────────────►│     hr.version        │
│  - user_id            │                       │                       │
└───────────┬───────────┘                       │  - date_version       │
            │                                   │  - wage               │
            │ job_id                            │  - contract_type_id   │
            ▼                                   └───────────────────────┘
┌───────────────────────┐
│       hr.job          │
│                       │
│  - name               │
│  - department_id      │
│  - employee_ids       │
│  - no_of_recruitment  │
└───────────────────────┘

4. Modelos de Configuracion

hr.contract.type

Campo Tipo Descripcion
name Char Nombre (traducible)
code Char Codigo
sequence Integer Orden
country_id Many2one Pais

hr.departure.reason

Campo Tipo Descripcion
name Char Razon (traducible)
sequence Integer Orden
country_id Many2one Pais

Referencias:

  • Carpeta models: addons/hr/models/