En Odoo Community, el módulo de Ausencias suele calcular la duración en función del calendario laboral. Si necesitas que ciertas ausencias (vacaciones, bajas, permisos) se cuenten por días naturales, te mostramos cómo resolverlo con un módulo de Odoo Community Association.
El problema: “pido 7 días y Odoo me descuenta menos”
En muchos despliegues, cuando un usuario solicita una ausencia del lunes al domingo, Odoo puede devolver una duración equivalente a días laborables (p. ej. 5) porque el cómputo se apoya en el calendario de trabajo del empleado (horarios, días laborables, festivos, etc.). Esto es correcto para ausencias “laborables”, pero no para casos en los que el cliente quiere que la ausencia sea por días naturales.
Este caso aparece una y otra vez en proyectos reales, y también se comentó en el foro de AEODOO: buscaban configurar las ausencias “por días naturales”.
La solución (comunidad): hr_holidays_natural_period
La OCA mantiene el módulo hr_holidays_natural_period, que incorpora la idea de “natural day” como unidad de solicitud y ajusta el cálculo para poder simular periodos naturales, incluso cuando el calendario del empleado tiene horarios especiales. En el histórico de cambios hay un ejemplo muy claro de caso real: ausencia de lunes a domingo y “Number of days: 7”, además de correcciones para evitar desajustes por la hora de inicio/fin del calendario.
Paso a paso: instalarlo en Odoo Community (Docker)
Añade el repositorio de OCA a tus addons
Clona
OCA/hr-holidays(en la rama de tu versión: 16.0/17.0/18.0, etc.)Monta ese repo como volumen en el contenedor
odoo.
docker-compose.yml (idea):
Incluye la ruta en
addons_path
En tuodoo.conf:
Actualiza la lista de aplicaciones
Apps → “Actualizar lista de aplicaciones” (modo desarrollador suele ayudar)
Instala el módulo
Busca e instala:
hr_holidays_natural_period
Configura el tipo de ausencia
Ausencias (Time Off) → Tipos
En el tipo que quieras (p. ej. “Vacaciones naturales”), selecciona la unidad/solicitud asociada a “días naturales” (el módulo añade esta opción).
Verificación rápida (caso de prueba)
Crea/elige un empleado con calendario laboral estándar (L–V).
Solicita ausencia de lunes a domingo.
Comprueba que:
La duración es 7 días (natural) en lugar de 5 (laborable), para ese tipo concreto.
Si tu calendario tiene horas raras (p. ej. lunes tarde y el resto mañana), este módulo incluye correcciones específicas para evitar que el último día “se pierda” por el cálculo de horas/rrule.
Consideraciones y buenas prácticas
No todo debe ser “natural”: normalmente conviene crear dos tipos:
Vacaciones (laborables)
Vacaciones naturales (calendario)
Versiones: confirma que estás usando la rama OCA correspondiente a tu versión de Odoo (16/17/18…). En el propio histórico del PR se ve que el módulo se migra por versiones.
Casos complejos: si hay convenios, turnos, calendarios rotativos o múltiples calendarios, valida con 2–3 escenarios reales antes de pasar a producción.
Cierre
Cuando el cliente pide que una ausencia se compute por días naturales, forzar el comportamiento estándar de Odoo suele acabar en parches frágiles. La alternativa más sólida en Community es apoyarse en módulos mantenidos por OCA como hr_holidays_natural_period, y dejar el comportamiento estándar para los casos “laborables”.