Enable to set a project domain on ticket
Project description
Helpdesk Mgmt Project Domain
This module allows you to configure domains to filter projects and tasks available for selection in helpdesk tickets. It provides both static domain configuration and dynamic Python-based filtering for enhanced flexibility.
Table of contents
Use Cases / Context
This module allows you to configure domains to filter projects and tasks available for selection in helpdesk tickets, reducing errors and improving efficiency.
Key Benefits
Automated Filtering: Configure domains to show only relevant projects and tasks for each team
Error Reduction: Minimize manual selection errors by limiting available options
Smart Task Filtering: Tasks are automatically filtered by the selected project
Flexible Configuration: Use static domains or dynamic Python code for complex rules
Main Use Cases
Project Filtering
Show only active projects
Filter by client/partner
Separate internal from external projects
Filter by project tags or categories
Task Filtering
Show only tasks from selected project
Filter by assignment status (assigned/unassigned)
Filter by priority or urgency
Filter by task tags or phases
Advanced Rules
Use Python code for dynamic filtering based on ticket data
Combine multiple conditions with AND/OR operators
Apply different rules for different teams
Configuration
To configure this module, you need to:
Configure global project and task domains at company level.
Configure team-specific project and task domains.
Set up Python-based dynamic domains (optional).
Global Configuration (Company)
Go to Settings > Helpdesk to configure the global project and task domains.
In the “Project & Task Domain Configuration” section, set the Project Domain field using the visual domain builder.
Set the Task Domain field using the visual domain builder.
These domains will be applied to all teams that don’t have their own domains configured.
You can also Activate or Deactivate the global domains.
Team Configuration
Go to Helpdesk > Configuration > Teams to configure team-specific domains.
Edit or create a team.
In the Project Domain tab:
Set the Project Domain field using the visual domain builder.
Configure the Project Domain Python Code field for dynamic domains (optional).
In the Task Domain tab:
Set the Task Domain field using the visual domain builder.
Configure the Task Domain Python Code field for dynamic domains (optional).
Team domains will be combined with the company domain using AND logic.
Domain Builder Usage
Both “Project Domain” and “Task Domain” fields use a visual builder that allows:
Click on the field to open the domain builder.
Select the field from the Project/Task model (e.g., Active, Partner, Type, User).
Choose the operator (e.g., =, !=, >, <, in, not in).
Define the value (e.g., True, False, partner name, user name).
Add more conditions with AND/OR logic.
Save the domain configuration.
Domain Examples
Project Domain Examples
Only Active Projects
Field: Active
Operator: =
Value: True
Domain: [('active', '=', True)]
Projects with Partner
Field: Partner
Operator: !=
Value: False
Domain: [('partner_id', '!=', False)]
Projects from Specific Client
Field: Partner
Operator: =
Value: [Client Name]
Domain: [('partner_id', '=', 123)] (where 123 is the client ID)
Task Domain Examples
Only Active Tasks
Field: Active
Operator: =
Value: True
Domain: [('active', '=', True)]
Unassigned Tasks
Field: User
Operator: =
Value: False
Domain: [('user_ids', '=', False)]
Tasks Assigned to Specific User
Field: User
Operator: in
Value: [User Name]
Domain: [('user_ids', 'in', [123])] (where 123 is the user ID)
Tasks with High Priority
Field: Priority
Operator: =
Value: 1
Domain: [('priority', '=', '1')]
Python Domain Code
For advanced users, you can use Python code to create dynamic domains:
Go to the team configuration.
Edit the Project Domain Python Code or Task Domain Python Code field.
Write Python code that returns a domain list.
Available variables: ticket, env, user, company, AND, OR, normalize.
Example Python Code
Project Domain Example - Client Projects Team
# 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 partner
Task Domain Example - Unassigned Tasks
# Filter tasks not assigned to anyone (from demo data)
domain = [('user_ids', '=', False)]
Task Domain Example - Project-based Filtering
# 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 selected
Task Domain Example - Priority and Assignment
# 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 only
Domain Combination Logic
All domains are combined using AND logic:
For Projects:
Company global project domain (base filter for all teams).
Team static project domain (always combined with company domain).
Team Python project code (always combined with company + team domains).
For Tasks:
Company global task domain (base filter for all teams).
Team static task domain (always combined with company domain).
Team Python task code (always combined with company + team domains).
The final project domain will be: Company Project Domain AND Team Project Domain AND Python Project Domain.
The final task domain will be: Company Task Domain AND Team Task Domain AND Python Task Domain.
Permissions
There are no specific permissions required for this module. The domain filtering respects the user’s existing project access permissions set in the system.
Troubleshooting
If domains are not working as expected:
Check that the domain syntax is correct.
Verify that the Python code (if used) has no syntax errors.
Ensure that the fields referenced in domains exist in the Project model.
Check the Odoo logs for any domain evaluation errors.
Usage
How It Works
Project Filtering
Ticket Creation: When a ticket is created, the system checks:
If the team has a configured project domain
If not, uses the company’s global project domain
If no domain is configured, all projects remain available
Ticket Editing: The project domain is automatically applied to the “Project” field of the ticket
Validation: If the project domain is invalid, the system ignores it and shows all projects
Task Filtering
Project Selection: When a project is selected in a ticket:
The system applies the configured task domain
Tasks are automatically filtered by the selected project
Only tasks belonging to the selected project are shown
Dynamic Filtering: Task filtering is updated when:
The project field changes
The team changes
Other relevant ticket fields change
Smart Filtering: The system ensures tasks are always relevant to the selected project, preventing selection of tasks from other projects
Domain Application
Static Domains: Applied immediately when fields change
Python Domains: Evaluated dynamically based on current ticket data
Combination Logic: All applicable domains are combined using AND logic
Fallback Behavior: If any domain fails, the system gracefully falls back to showing all available options
Bug Tracker
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed feedback.
Do not contact contributors directly about support or help with technical issues.
Credits
Contributors
-
Marcel Savegnago marcel.savegnago@escodoo.com.br
Maintainers
This module is maintained by the OCA.
OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.
Current maintainer:
This module is part of the OCA/helpdesk project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file odoo_addon_helpdesk_mgmt_project_domain-16.0.1.0.0.4-py3-none-any.whl.
File metadata
- Download URL: odoo_addon_helpdesk_mgmt_project_domain-16.0.1.0.0.4-py3-none-any.whl
- Upload date:
- Size: 53.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
99b16d82e65443488409cd3d4f8c30149af48a5be2907a59f0399bd3f7ffe7dc
|
|
| MD5 |
fe5e2323a17be0ceb292affc19271382
|
|
| BLAKE2b-256 |
1c98a44bdd6eb7a4789682badacea609f4f6db50deb6201711e6c9adc5f4241d
|