Saltar al contenido

Parámetros del sistema

🐍 DESARROLLO · ODOO · CONFIGURACIÓN

Parámetros del sistema en Odoo

Los ir.config_parameter son los pares clave-valor de Odoo. Permiten configurar el comportamiento del sistema sin tocar el código fuente — ideal para valores que cambian entre entornos (dev/staging/prod) o que los usuarios necesitan modificar a mano.

🎛️
CENTRALIZADOS
Una sola tabla para toda la configuración

✏️
EDITABLES
Sin redeploy ni nuevo desarrollo

🔌
ACCESIBLES
Disponibles desde cualquier modelo

🏢
MULTI-COMPAÑÍA
Compatibles con la lógica multi-empresa

1
¿Qué son los parámetros del sistema?

Los parámetros del sistema (ir.config_parameter) son valores clave-valor que se almacenan en la base de datos y permiten configurar el comportamiento de Odoo sin modificar el código fuente. Son ideales para configuraciones que pueden variar entre entornos o que los usuarios finales necesitan modificar.

2
Ventajas

🎛️ Configuración centralizada
Todo en un solo lugar (res.config.settings los expone en la UI).

✏️ Modificables sin desarrollo
El admin del sistema cambia el valor desde Ajustes Técnicos.

🔌 Accesibles desde cualquier modelo
Vía env['ir.config_parameter'].

🏢 Compatibles con multi-compañía
Pueden segregarse por compañía cuando el caso de uso lo requiere.

3
Crear un parámetro del sistema

Hay dos formas de crear un parámetro: desde código Python (típicamente en un hook post-instalación o un wizard) o desde un archivo XML de datos (lo más declarativo y fácil de versionar).

3.1 — Desde Python

Código Python para crear un parámetro del sistema con set_param

3.2 — Desde XML

Archivo XML declarando un ir.config_parameter como dato
💡 PYTHON vs XML
Si el parámetro siempre debe existir tras instalar el módulo, el XML es lo correcto: queda en el manifiesto, se versiona con el repo y se aplica al actualizar. El Python es preferible cuando el valor depende de lógica condicional al instalar (ej. detectar la zona horaria del servidor).

4
Lectura: get_param()

Para obtener el valor de un parámetro, se usa get_param(). Acepta un valor por defecto que se devuelve si la clave no existe — útil para no romper en entornos donde aún no se ha creado.

Ejemplo de lectura de parámetros con get_param

5
Escritura: set_param()

Para actualizar el valor de un parámetro existente (o crearlo si no existe), se usa set_param(). Como cualquier ORM-write, queda registrado y trazable.

Ejemplo de escritura de parámetros con set_param

6
Integración con vista de configuración

Cuando los parámetros están expuestos en una vista de configuración dentro de Odoo (heredando de res.config.settings), debes sobreescribir el método get_values() para que la UI muestre el valor actual y se actualice con set_param() al guardar.

Sobrescritura de get_values y set_values con set_param

7
Ejemplo práctico: límite máximo de venta

Un caso clásico: necesitas validar que ninguna venta supere un monto máximo (ej. para alertar a finanzas). Crear el parámetro permite que ese límite se ajuste sin redeploy:

📋 Paso 1 — Crear el parámetro
Crear el parámetro ventas.limites.monto_maximo
📋 Paso 2 — Función que lee y valida
Función Python que obtiene el parámetro y valida el monto de la venta

8
Mejores prácticas: nomenclatura de parámetros

El nombre del parámetro debe ser específico y predecible. Esto reduce colisiones entre módulos y permite que cualquier developer entienda qué hace al ver la clave. Sigue una convención jerárquica con punto:

# Patrones recomendados
'modulo.componente.parametro'
'modulo.submodulo.funcionalidad.parametro'
'modulo.empresa.id.parametro'

# Ejemplos reales
'ventas.limites.monto_maximo'
'hr.vacaciones.dias_maximos'
'inventario.almacen.1.stock_minimo'
✅ POR QUÉ IMPORTA
Una buena nomenclatura facilita el filtro en la tabla de parámetros, evita que dos módulos diferentes pisen la misma clave y deja claro a qué pertenece cada valor cuando un admin los revisa en Ajustes técnicos.

📌 En resumen

Los parámetros del sistema en Odoo son la herramienta correcta para separar configuración de código. Permiten que el sistema se adapte a entornos y reglas de negocio cambiantes sin redespliegues, manteniendo la lógica intacta.

Combinados con res.config.settings para exponerlos en UI, una nomenclatura jerárquica clara y datos XML versionados, son la base de cualquier módulo flexible. En Exdoo los usamos en cada módulo personalizado para que los clientes ajusten su operación sin depender de un developer cada vez.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

¿Te gustaría implementar Odoo en tu empresa?

12 años de experiencia · +60 implementaciones exitosas · Partner Gold de Odoo en México

Hablemos por WhatsApp