Ir al contenido

Documentación técnica de módulos Odoo

Manifest, README, datos demo y convenciones de nombre para mantenimiento
20 de agosto de 2026 por
Documentación técnica de módulos Odoo
ATEMI, Aitor Atencia

Odoo · Documentación · Mantenimiento

Un módulo sin README es un módulo que solo entiende quien lo escribió, y ni siquiera él dentro de seis meses. En Odoo la documentación no es un lujo aparte: el propio manifest, la carpeta de módulo y los docstrings ya son una estructura pensada para documentar, si se usa bien.

Logo Odoo
El __manifest__.py es el primer punto de documentación: summary, description y depends cuentan una historia.

El primer contacto

El manifest ya es documentación, trátalo como tal

Un summary genérico ("Módulo de gestión") y una description vacía obligan a cualquiera a abrir el código para saber qué hace un módulo. Un manifest bien escrito responde en 10 segundos: qué problema resuelve, de qué depende y qué no incluye.

# __manifest__.py
{
    "name": "Gestión de Incidencias de Flota",
    "version": "19.0.1.0.0",
    "summary": "Registra y da seguimiento a incidencias de vehículos de flota",
    "description": """
Gestión de Incidencias de Flota
================================
Permite registrar incidencias (averías, siniestros, multas) asociadas
a vehículos de fleet.vehicle, con flujo de aprobación y notificación
al responsable de flota.

No incluye: gestión de talleres ni presupuestos de reparación.
""",
    "depends": ["fleet", "mail"],
    "category": "Fleet",
    "license": "LGPL-3",
}

Para quien mantiene el código

README técnico: decisiones, no solo instalación

Un README útil no repite lo que ya dice el manifest. Documenta las decisiones que no son obvias leyendo el código: por qué se eligió heredar en vez de delegar, qué modelos externos toca, y qué convención de nombres sigue el módulo. El objetivo es que alguien nuevo entienda el "por qué", no el "qué" (eso ya lo dice el código).

# README.md
## Gestión de Incidencias de Flota

### Decisiones de diseño
- Se hereda `fleet.vehicle` en vez de crear un modelo aparte porque
  la incidencia necesita heredar las record rules de flota existentes.
- El estado usa `selection` simple, no un workflow con `state_machine`,
  porque solo hay 3 transiciones posibles y no van a crecer.

### Convenciones
- Todos los modelos usan el prefijo `fleet_incident_*`.
- Las vistas heredan de `fleet.fleet_vehicle_view_form`, no crean formulario propio.

Datos demo

Los datos demo documentan el caso de uso mejor que cualquier texto

Un fichero demo/demo_data.xml con 2-3 registros realistas (no "Test 1", "Test 2") deja ver de un vistazo cómo se usa el módulo en la práctica. Además sirve de humo: si los datos demo no cargan, algo en el módulo está roto antes de llegar a producción.

ElementoQué debe contener
summaryUna frase, para quien navega Apps
descriptionQué resuelve y qué NO incluye
README.mdDecisiones de diseño y convenciones propias
demo/*.xmlCasos de uso realistas, no placeholders
Docstrings en métodos complejosEl "por qué", nunca el "qué" (ya lo dice el nombre)

Resumen

Documentar un módulo Odoo no exige herramientas nuevas: manifest, README y datos demo ya son la estructura prevista para ello. La clave es rellenarlos con las decisiones que no son obvias leyendo el código, no repetir lo que el propio código ya explica.

en Odoo
Webhooks y APIs externas: Odoo como integrador
Endpoints REST, consumo de servicios terceros y gestión de errores idempotentes