Este módulo permite configurar dominios para filtrar los proyectos y tareas disponibles para su selección en los tickets de helpdesk. Proporciona tanto configuración de dominios estáticos como filtrado dinámico basado en Python para una mayor flexibilidad.
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.0Te permite controlar qué proyectos y tareas se pueden seleccionar en un ticket de helpdesk, utilizando filtros configurados globalmente para la compañía o por equipo de helpdesk, incluidos filtros dinámicos escritos en Python.
Cuando los agentes crean o editan un ticket de helpdesk, los campos Project y Task ya no muestran todos los proyectos o tareas. Solo se ofrecen los que coinciden con los filtros que hayas configurado.
Los filtros se pueden establecer en tres lugares: - Globalmente en los ajustes de Helpdesk, para toda la compañía (Project Domain y Task Domain). - En cada equipo de helpdesk, en las nuevas pestañas 'Project Domain' y 'Task Domain', con un generador de filtros simple y una caja opcional de código Python. - El filtro de la compañía, el filtro del equipo y el código Python del equipo se combinan, por lo que se debe cumplir cada condición.
Reglas de negocio y comportamiento automático: - La lista de proyectos y tareas permitidos se recalcula automáticamente cuando cambia el equipo, el cliente, la categoría, la prioridad o la compañía en el ticket. - Si ya hay un proyecto elegido en el ticket, la lista de tareas se limita automáticamente a las tareas de ese proyecto. - El código Python introducido en un equipo se comprueba en busca de errores de sintaxis al guardar; el código no válido genera un error de validación. - Si no se configura ningún filtro, todos los proyectos y tareas siguen estando disponibles.
Toca helpdesk.ticket, helpdesk.ticket.team, res.company y res.config.settings, y añade campos al formulario del ticket, al formulario del equipo y a la pantalla de ajustes de Helpdesk.
Depende de
Modelos y campos (4)
- res.company · amplía un modelo existentehelpdesk_mgmt_task_domain (Task Domain), helpdesk_mgmt_project_domain (Project Domain)
- helpdesk.ticket · amplía un modelo existentetask_domain_ids (Available Tasks), project_domain_ids (Available Projects)
- res.config.settings · amplía un modelo existentehelpdesk_mgmt_task_domain (Task Domain), helpdesk_mgmt_project_domain (Project Domain)
- helpdesk.ticket.team · amplía un modelo existentetask_domain, project_domain, task_domain_python (Task Domain Python Code), project_domain_python (Project Domain Python Code)
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: 3 confirmadas, 6 sin información de 9 versiones.
Fuentes · Odoo 17.0
Confirmado el 2026-11-03 en la rama 17.0 de OCA/helpdesk.
terminal Instalación y uso
Documentación de OCA · Odoo 18.0Configuración
Fuente · Odoo 18.0Para configurar este módulo, debe:
- Configurar los dominios globales de proyecto y tarea a nivel de compañía.
- Configurar los dominios de proyecto y tarea específicos de cada equipo.
- Configurar dominios dinámicos basados en Python (opcional).
Configuración global (compañía)
- Vaya a Settings > Helpdesk para configurar los dominios globales de proyecto y tarea.
- En la sección "Project & Task Domain Configuration", establezca el campo Project Domain utilizando el constructor visual de dominios.
- Establezca el campo Task Domain utilizando el constructor visual de dominios.
- Estos dominios se aplicarán a todos los equipos que no tengan sus propios dominios configurados.
- También puede Activar o Desactivar los dominios globales.
Configuración de equipo
- Vaya a Helpdesk > Configuration > Teams para configurar los dominios específicos de cada equipo.
- Edite o cree un equipo.
- En la pestaña Project Domain:
- Establezca el campo Project Domain utilizando el constructor visual de dominios.
- Configure el campo Project Domain Python Code para dominios dinámicos (opcional).
- En la pestaña Task Domain:
- Establezca el campo Task Domain utilizando el constructor visual de dominios.
- Configure el campo Task Domain Python Code para dominios dinámicos (opcional).
- Los dominios de equipo se combinarán con el dominio de la compañía utilizando la lógica AND.
Uso del constructor de dominios
Tanto el campo "Project Domain" como el campo "Task Domain" utilizan un constructor visual que permite:
- Hacer clic en el campo para abrir el constructor de dominios.
- Seleccionar el campo del modelo Project/Task (por ejemplo, Active, Partner, Type, User).
- Elegir el operador (por ejemplo, =, !=, >, <, in, not in).
- Definir el valor (por ejemplo, True, False, nombre del partner, nombre del usuario).
- Añadir más condiciones con lógica AND/OR.
- Guardar la configuración del dominio.
Ejemplos de dominios
Ejemplos de Project Domain
Solo proyectos activos
- Campo: Active
- Operador: =
- Valor: True
- Dominio:
[('active', '=', True)]
Proyectos con partner
- Campo: Partner
- Operador: !=
- Valor: False
- Dominio:
[('partner_id', '!=', False)]
Proyectos de un cliente específico
- Campo: Partner
- Operador: =
- Valor: [Client Name]
- Dominio:
[('partner_id', '=', 123)](donde 123 es el ID del cliente)
Proyectos por etiquetas (proyectos internos)
- Campo: Tags
- Operador: in
- Valor: [Internal]
- Dominio:
[('tag_ids', 'in', [4])](donde 4 es el ID de la etiqueta)
Proyectos por etiquetas (proyectos externos)
- Campo: Tags
- Operador: in
- Valor: [External]
- Dominio:
[('tag_ids', 'in', [5])](donde 5 es el ID de la etiqueta)
Etiquetas de proyecto mixtas (internas O externas)
- Campo: Tags
- Operador: in
- Valor: [Internal, External]
- Dominio:
['|', ('tag_ids', 'in', [4]), ('tag_ids', 'in', [5])]
Ejemplos de Task Domain
Solo tareas activas
- Campo: Active
- Operador: =
- Valor: True
- Dominio:
[('active', '=', True)]
Tareas por etiquetas (desarrollo)
- Campo: Tags
- Operador: in
- Valor: [Development]
- Dominio:
[('tag_ids', 'in', [1])](donde 1 es el ID de la etiqueta)
Tareas por etiquetas (testing)
- Campo: Tags
- Operador: in
- Valor: [Testing]
- Dominio:
[('tag_ids', 'in', [2])](donde 2 es el ID de la etiqueta)
Etiquetas de tarea mixtas (desarrollo O testing)
- Campo: Tags
- Operador: in
- Valor: [Development, Testing]
- Dominio:
['|', ('tag_ids', 'in', [1]), ('tag_ids', 'in', [2])]
Tareas sin asignar
- Campo: User
- Operador: =
- Valor: False
- Dominio:
[('user_ids', '=', False)]
Tareas asignadas a un usuario específico
- Campo: User
- Operador: in
- Valor: [User Name]
- Dominio:
[('user_ids', 'in', [123])](donde 123 es el ID del usuario)
Tareas con prioridad alta
- Campo: Priority
- Operador: =
- Valor: 1
- Dominio:
[('priority', '=', '1')]
Código Python para dominios
Para usuarios avanzados, puede utilizar código Python para crear dominios dinámicos:
- Vaya a la configuración del equipo.
- Edite el campo Project Domain Python Code o Task Domain Python Code.
- Escriba código Python que devuelva una lista de dominios.
- Variables disponibles: ticket, env, user, company, AND, OR, normalize.
Ejemplo de código Python
Ejemplo de Project Domain - Equipo de proyectos de cliente
# Filter projects based on ticket partner (from demo data)
if ticket.partner_id:
domain = [('commercial_partner_id', '=', ticket.commercial_partner_id.id)]
else:
domain = [('id', '=', 0)] # No projects if no partnerEjemplo de Task Domain - Tareas sin asignar
# Filter tasks not assigned to anyone (from demo data)
domain = [('user_ids', '=', False)]Ejemplo de Task Domain - Filtrado basado en proyecto
# Filter tasks based on ticket project
if ticket.project_id:
domain = [('project_id', '=', ticket.project_id.id)]
else:
domain = [('id', '=', 0)] # No tasks if no project selectedEjemplo de Task Domain - Etiquetas mixtas
# Filter tasks by development or testing tags (from demo data)
domain = ['|', ('tag_ids', 'in', [1]), ('tag_ids', 'in', [2])]Ejemplo de Task Domain - Prioridad y asignación
# Filter high priority tasks assigned to specific users
if ticket.partner_id:
domain = AND([
[('priority', '=', '1')], # High priority
[('user_ids', '!=', False)] # Assigned tasks
])
else:
domain = [('priority', '=', '1')] # High priority onlyLógica de combinación de dominios
Todos los dominios se combinan utilizando la lógica AND:
Para proyectos:
- Dominio global de proyecto de la compañía (filtro base para todos los equipos).
- Dominio estático de proyecto del equipo (siempre combinado con el dominio de la compañía).
- Código Python de proyecto del equipo (siempre combinado con los dominios de la compañía + equipo).
Para tareas:
- Dominio global de tarea de la compañía (filtro base para todos los equipos).
- Dominio estático de tarea del equipo (siempre combinado con el dominio de la compañía).
- Código Python de tarea del equipo (siempre combinado con los dominios de la compañía + equipo).
El dominio final de proyecto será: Company Project Domain AND Team Project Domain AND Python Project Domain.
El dominio final de tarea será: Company Task Domain AND Team Task Domain AND Python Task Domain.
Permisos
No se requieren permisos específicos para este módulo. El filtrado de dominios respeta los permisos de acceso a proyectos existentes del usuario configurados en el sistema.
Solución de problemas
Si los dominios no funcionan como se espera:
- Compruebe que la sintaxis del dominio sea correcta.
- Verifique que el código Python (si se utiliza) no tenga errores de sintaxis.
- Asegúrese de que los campos referenciados en los dominios existan en el modelo Project.
- Revise los logs de Odoo para detectar posibles errores de evaluación de dominios.
Cómo funciona
Filtrado de proyectos
- Creación de ticket: Cuando se crea un ticket, el sistema comprueba:
- Si el equipo tiene un dominio de proyecto configurado
- Si no, utiliza el dominio de proyecto global de la compañía
- Si no hay ningún dominio configurado, todos los proyectos permanecen disponibles
- Edición de ticket: El dominio de proyecto se aplica automáticamente al campo "Project" del ticket
- Validación: Si el dominio de proyecto no es válido, el sistema lo ignora y muestra todos los proyectos
Filtrado de tareas
- Selección de proyecto: Cuando se selecciona un proyecto en un ticket:
- El sistema aplica el dominio de tareas configurado
- Las tareas se filtran automáticamente por el proyecto seleccionado
- Solo se muestran las tareas que pertenecen al proyecto seleccionado
- Filtrado dinámico: El filtrado de tareas se actualiza cuando:
- Cambia el campo de proyecto
- Cambia el equipo
- Cambian otros campos relevantes del ticket
- Filtrado inteligente: El sistema garantiza que las tareas sean siempre relevantes para el proyecto seleccionado, evitando la selección de tareas de otros proyectos
Aplicación de dominios
- Dominios estáticos: Se aplican inmediatamente cuando cambian los campos
- Dominios Python: Se evalúan dinámicamente según los datos actuales del ticket
- Lógica de combinación: Todos los dominios aplicables se combinan mediante lógica AND
- Comportamiento de reserva: Si algún dominio falla, el sistema recurre de forma controlada a mostrar todas las opciones disponibles
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.