Este módulo permite intercambiar el valor de un campo y propagarlo de forma encadenada a los registros vinculados. Ejemplo: cambiar la dirección de entrega en un pedido de venta confirmado, también debería cambiarse en sus órdenes de entrega.
También permite aplicar restricciones para no permitir ese cambio según reglas, de modo que la lógica de negocio no se rompa. Ejemplo: No permitir cambiar la dirección de entrega si la orden de entrega está validada.
Este módulo requiere cierto conocimiento técnico para configurar el intercambio encadenado y la restricción, ya que se define mediante nombres técnicos y código Python.
ADVERTENCIA: Use este módulo con cuidado, ya que puede dañar la consistencia de la base de datos si los intercambios no están diseñados correctamente .
Traducción automática al español (DeepSeek) de la descripción original de OCA, que está en inglés.
auto_awesome Qué hace este módulo
Generado por IA a partir del código · Odoo 18.0Permite a los administradores definir reglas reutilizables de "intercambio de campos" que cambian el valor de un campo en los registros seleccionados y propagan automáticamente el mismo valor a los registros relacionados. Cada regla puede protegerse mediante restricciones y restringirse a determinados grupos de usuarios.
Este módulo añade un área de configuración técnica en Ajustes llamada Field Swaps. Allí, un administrador crea una regla de intercambio eligiendo un modelo y un campo, y luego opcionalmente enumera subcampos (cadenas de campos relacionados, por ejemplo child_ids.lang) donde también debe escribirse el nuevo valor. Una regla también puede llevar restricciones: expresiones Python evaluadas contra los registros seleccionados; si una restricción devuelve True, el intercambio se bloquea con un error que nombra la restricción.
Una vez guardada una regla, el administrador hace clic en Add Action para crear una acción contextual en ese modelo. Los usuarios entonces ven esta acción en los registros de ese modelo; abre un pequeño asistente donde introducen el nuevo valor y hacen clic en Change. El módulo escribe el valor en los registros seleccionados y en todos los registros alcanzados a través de las cadenas de subcampos configuradas. Si los modelos afectados admiten mensajes, se publica una nota en cada registro mostrando el campo, el valor antiguo y el valor nuevo.
Las reglas pueden limitarse a grupos de usuarios específicos, y el par modelo/campo debe ser único. Las cadenas de subcampos se validan en cuanto a corrección y compatibilidad de tipos. El módulo toca chained.swapper, chained.swapper.sub.field, chained.swapper.constraint y chained.swapper.wizard, y puede actuar sobre cualquier modelo elegido en una regla.
Depende de
Menús que añade
Modelos y campos (4)
- chained.swapper · modelo nuevoname, field_id, model_id, group_ids (Groups), sub_field_ids (Sub-fields), constraint_ids (Constraints), ref_ir_act_window_id (Action), allowed_field_ids_domain
- chained.swapper.wizard · modelo nuevocompany_id (Company)
- chained.swapper.sub.field · modelo nuevomodel_name (Model Name), sub_field_chain, chained_swapper_id
- chained.swapper.constraint · modelo nuevoname, expression (Constraint expression), chained_swapper_id
Texto generado por IA (DeepSeek) al leer el código de la versión 18.0 en GitHub; puede contener errores, así que verifícalo en el código antes de decidir. Ver el código en GitHub
Disponibilidad por versión
Revisado: 2026-11-03Estado de confirmación: 5 confirmadas, 4 sin información de 9 versiones.
Fuentes · Odoo 14.0
Confirmado el 2026-11-03 en la rama 14.0 de OCA/server-ux.
terminal Instalación y uso
Documentación de OCA · Odoo 18.0Configuración
Fuente · Odoo 18.0Para configurar este módulo, necesita:
- Vaya a Setting \> Field Swaps \> Field Swaps.
- Cree un nuevo objeto y establezca los siguientes datos como ejemplo:
- Nombre para identificarlo y usarlo para el nombre de la acción.
- Seleccione el modelo de origen donde se iniciará el intercambio.
- Seleccione el campo de inicio para el que se realizará el intercambio.
- Añada varios campos encadenados. Se expresan como una cadena usando notación de puntos, tomando el modelo de origen como comienzo para buscar allí el primer campo, y continuando desde allí perforando. Ejemplo: picking_ids.partner_id para el modelo sale.order irá a los pedidos de entrega vinculados, y cambiará el cliente allí.
- Añada posibles restricciones para restringir el intercambio encadenado. Son expresiones Python que deben ser una línea que se evalúe como booleano. Si la evaluación es verdadera, entonces se lanzará un mensaje y no se permitirá ningún intercambio. Puede usar la variable records en su código, que hará referencia a los registros seleccionados para realizar el intercambio. Ejemplo: para restringir pedidos de venta que tienen un pedido de entrega validado: any(p.state == 'done' for p in records.mapped('picking_ids.state')) Otras variables que puede usar son env, date y datetime. Cada restricción tiene un nombre para identificarla, pero también para mostrar ese nombre al mostrar el error al intentar realizar el intercambio.
- Haga clic en el botón inteligente 'Add action' para añadir una nueva acción en el modelo de origen.
En bases de datos de demostración, puede consultar el ejemplo "Language", que cambia el idioma de un contacto y lo propaga a los contactos hijos.
Para usar este módulo, necesita:
- Ir al documento de origen en modo lista.
- Seleccionar uno o varios registros.
- Hacer clic en Acción y localizar la opción "Chained swap: \".
- Si uno de los registros seleccionados no cumple con una de las restricciones, se mostrará un mensaje y el intercambio no continuará.
- Si todo está correcto, aparecerá una ventana emergente y verá un campo para rellenar el nuevo valor.
- Hacer clic en "Change" y el intercambio se realizará.
- En el chatter del documento de origen, se registrará una entrada para reflejar el intercambio realizado.
Traducción automática al español (DeepSeek) de la documentación original de OCA; los comandos y el código no se traducen. Sin información verificada en OCA: Instalación.
Las instrucciones de instalación, el paquete de distribución, las dependencias y los pasos de configuración no se muestran porque todavía no se han verificado en la documentación del módulo para ninguna versión.
Datos importados de GitHub: esta ficha refleja la última revisión del catálogo, no una consulta en directo. Verifica siempre en la documentación del módulo y en staging antes de instalar en producción.