diff --git a/helpdesk_create_task_from_ticket/.gitignore b/helpdesk_create_task_from_ticket/.gitignore new file mode 100644 index 0000000..6da5887 --- /dev/null +++ b/helpdesk_create_task_from_ticket/.gitignore @@ -0,0 +1,2 @@ +*.*~ +*pyc diff --git a/helpdesk_create_task_from_ticket/README.md b/helpdesk_create_task_from_ticket/README.md new file mode 100644 index 0000000..db74184 --- /dev/null +++ b/helpdesk_create_task_from_ticket/README.md @@ -0,0 +1,53 @@ +================================ +helpdesk_create_task_from_ticket +================================ + +This module changes the behavior of the buttons "create" and "create and edit" of the field `task` in a ticket form. + +It automatically fills up these tasks fields + +``` +Ticket (helpdesk.ticke) / Tâche (project.task) + +Intitulé (name) --> Titre (name) +Utilisateur assigné (user_id) --> Assignés (user_ids) +Projet (project_id) --> Projet (project_id) +Contact (partner_id) --> Client (partner_id) +Catégorie (category_id) --> service (service_id) +Request Type (request_type_id) --> Type de demande (request_type_id) +Priorité (priority) --> Priorité (priority) +``` + +# Installation + +Use Odoo normal module installation procedure to install +`helpdesk_create_task_from_ticket`. + +# Known issues / Roadmap + +A current limitation is that one task can be linked to many tickets. +Thus, the above task fields are filled up at the creation of the task from a ticket form +but are not updated when the linked tickets are updated. + +# Bug Tracker + +Bugs are tracked on `our issues website `\_. In case of +trouble, please check there if your issue has already been +reported. If you spotted it first, help us smashing it by providing a +detailed and welcomed feedback. + +# Credits + +## Contributors + +- Quentin Mondot + +## Funders + +The development of this module has been financially supported by: + +- Elabore (https://elabore.coop) + +## Maintainer + +This module is maintained by Elabore. diff --git a/helpdesk_create_task_from_ticket/__init__.py b/helpdesk_create_task_from_ticket/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/helpdesk_create_task_from_ticket/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/helpdesk_create_task_from_ticket/__manifest__.py b/helpdesk_create_task_from_ticket/__manifest__.py new file mode 100644 index 0000000..ce87f58 --- /dev/null +++ b/helpdesk_create_task_from_ticket/__manifest__.py @@ -0,0 +1,26 @@ +# Copyright 2024 Quentin Mondot +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +{ + "name": "helpdesk_create_task_from_ticket", + "version": "16.0.1.0.0", + "author": "Elabore", + "website": "https://elabore.coop", + "maintainer": "Quentin Mondot", + "license": "AGPL-3", + "category": "Tools", + "summary": "This module enriches task information when creating it from a ticket form.", + "depends": [ + "base", + "helpdesk_mgmt", + "helpdesk_mgmt_project", + "helpdesk_request_type", # to create the helpdesk.request.type model and have the field request_type_id in the helpdesk.ticket model + "project_request_data", # to have the fields service_id and request_type_id in the project.task model + "project_task_add_very_high" # to have priority values 2 and 3 on tasks + ], + "data": [ + "views/helpdesk_create_task_from_ticket.xml", + ], + "installable": True, + "auto_install": False, + "application": False, +} diff --git a/helpdesk_create_task_from_ticket/models/__init__.py b/helpdesk_create_task_from_ticket/models/__init__.py new file mode 100644 index 0000000..edf2d36 --- /dev/null +++ b/helpdesk_create_task_from_ticket/models/__init__.py @@ -0,0 +1 @@ +from . import project_task diff --git a/helpdesk_create_task_from_ticket/models/project_task.py b/helpdesk_create_task_from_ticket/models/project_task.py new file mode 100644 index 0000000..0ccb842 --- /dev/null +++ b/helpdesk_create_task_from_ticket/models/project_task.py @@ -0,0 +1,71 @@ +from odoo import models, api + + +class ProjectTask(models.Model): + """ + The function "create" is overloaded to adapt the field "user_ids" from the context of helpdesk.ticket to the one of project.task + This function is called when the user clicks on the button "create" in the task field of the ticket form + The function "onchange" is overloaded to adapt the field "user_ids" from the context of helpdesk.ticket to the one of project.task + This function is called when the user clicks on the button "create and modify" in the task field of the ticket form + """ + _inherit = "project.task" + + @api.model + def create(self, vals_list): + if all(key in self.env.context for key in ( + "default_user_id", + "default_ticket_category_id", + "default_ticket_request_type_id" + )): + user_ids = [self.env.context["default_user_id"]] + task_service_id, request_type_id = self._match_task_service_and_request_type( + ticket_category_id=self.env.context["default_ticket_category_id"], + ticket_request_type_id=self.env.context["default_ticket_request_type_id"] + ) + + return super(ProjectTask, self.with_context( + default_user_ids=user_ids, + default_service_id=task_service_id, + default_request_type_id=request_type_id + )).create(vals_list) + + return super(ProjectTask, self).create(vals_list) + + def onchange(self, values, field_name, field_onchange): + if all(key in self.env.context for key in ( + "default_user_id", + "default_ticket_category_id", + "default_ticket_request_type_id" + )): + user_ids = [self.env.context["default_user_id"]] + task_service_id, request_type_id = self._match_task_service_and_request_type( + ticket_category_id=self.env.context["default_ticket_category_id"], + ticket_request_type_id=self.env.context["default_ticket_request_type_id"] + ) + + return super(ProjectTask, self.with_context( + default_user_ids=user_ids, + default_service_id=task_service_id, + default_request_type_id=request_type_id + )).onchange(values, field_name, field_onchange) + + return super(ProjectTask, self).onchange(values, field_name, field_onchange) + + def _match_task_service_and_request_type( + self, + ticket_category_id: int, + ticket_request_type_id: int + ) -> tuple[int, int]: + helpdesk_ticket_category = self.env["helpdesk.ticket.category"].search( + [("id", "=", ticket_category_id)], + limit=1 + ) + task_service = self.env["task.service"].search([("name", "=", helpdesk_ticket_category.name)]) + + helpdesk_ticket_request_type = self.env["helpdesk.request.type"].search( + [("id", "=", ticket_request_type_id)], + limit=1 + ) + task_request_type = self.env["request.type"].search([("name", "=", helpdesk_ticket_request_type.name)]) + + return task_service.id, task_request_type.id diff --git a/helpdesk_create_task_from_ticket/views/helpdesk_create_task_from_ticket.xml b/helpdesk_create_task_from_ticket/views/helpdesk_create_task_from_ticket.xml new file mode 100644 index 0000000..324a410 --- /dev/null +++ b/helpdesk_create_task_from_ticket/views/helpdesk_create_task_from_ticket.xml @@ -0,0 +1,23 @@ + + + + helpdesk.ticket.form.task.from.ticket + helpdesk.ticket + + + + + + { + 'default_project_id': project_id, + 'default_user_id': user_id, + 'default_partner_id': partner_id, + 'default_ticket_category_id': category_id, + 'default_ticket_request_type_id': request_type_id, + 'default_priority': priority + } + + + + + diff --git a/helpdesk_portal_ticket_list/.gitignore b/helpdesk_portal_ticket_list/.gitignore new file mode 100644 index 0000000..6da5887 --- /dev/null +++ b/helpdesk_portal_ticket_list/.gitignore @@ -0,0 +1,2 @@ +*.*~ +*pyc diff --git a/helpdesk_portal_ticket_list/README.rst b/helpdesk_portal_ticket_list/README.rst new file mode 100644 index 0000000..6f1e700 --- /dev/null +++ b/helpdesk_portal_ticket_list/README.rst @@ -0,0 +1,50 @@ +=========================== +helpdesk_portal_ticket_list +=========================== + +Customize ticket portal view list + +Installation +============ + +Use Odoo normal module installation procedure to install +``helpdesk_portal_ticket_list``. + + +Description +============ +In ticket portal view list +- expand "name" column +- fix display bug on "Stage" column + +Known issues / Roadmap +====================== + +None yet. +Bug Tracker +=========== + +Bugs are tracked on `our issues website `_. In case of +trouble, please check there if your issue has already been +reported. If you spotted it first, help us smashing it by providing a +detailed and welcomed feedback. + +Credits +======= + +Contributors +------------ + +* Laetitia Da Costa + +Funders +------- + +The development of this module has been financially supported by: +* Elabore (https://elabore.coop) + + +Maintainer +---------- + +This module is maintained by Elabore. diff --git a/helpdesk_portal_ticket_list/__init__.py b/helpdesk_portal_ticket_list/__init__.py new file mode 100644 index 0000000..633f866 --- /dev/null +++ b/helpdesk_portal_ticket_list/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- + diff --git a/helpdesk_portal_ticket_list/__manifest__.py b/helpdesk_portal_ticket_list/__manifest__.py new file mode 100644 index 0000000..ad9f5ed --- /dev/null +++ b/helpdesk_portal_ticket_list/__manifest__.py @@ -0,0 +1,36 @@ +# Copyright 2022 Stéphan Sainléger (Elabore) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "helpdesk_portal_ticket_list", + "version": "16.0.1.1.0", + "author": "Elabore", + "website": "https://elabore.coop", + "maintainer": "Laetitia Da Costa", + "license": "AGPL-3", + "category": "Helpdesk", + "summary": "Customize ticket portal view list", + "description": "", + # any module necessary for this one to work correctly + "depends": [ + "base", + "helpdesk_mgmt", + ], + "qweb": [], + "external_dependencies": { + "python": [], + }, + # always loaded + "data": [ + "views/portal_ticket_view.xml", + ], + # only loaded in demonstration mode + "demo": [], + "js": [], + "css": [], + "installable": True, + # Install this module automatically if all dependency have been previously + # and independently installed. Used for synergetic or glue modules. + "auto_install": False, + "application": False, +} \ No newline at end of file diff --git a/helpdesk_portal_ticket_list/views/portal_ticket_view.xml b/helpdesk_portal_ticket_list/views/portal_ticket_view.xml new file mode 100644 index 0000000..d4ab965 --- /dev/null +++ b/helpdesk_portal_ticket_list/views/portal_ticket_view.xml @@ -0,0 +1,90 @@ + + + + + \ No newline at end of file diff --git a/helpdesk_request_type/controllers/main.py b/helpdesk_request_type/controllers/main.py index 83e7c4b..43d6c5e 100644 --- a/helpdesk_request_type/controllers/main.py +++ b/helpdesk_request_type/controllers/main.py @@ -5,22 +5,10 @@ class HelpdeskTicketControllerRequestType(HelpdeskTicketController): @http.route("/new/ticket", type="http", auth="user", website=True) def create_new_ticket(self, **kw): - categories = http.request.env["helpdesk.ticket.category"].search( - [("active", "=", True)] - ) + res = super(HelpdeskTicketControllerRequestType, self).create_new_ticket(**kw) request_types = http.request.env["helpdesk.request.type"].search([]) - email = http.request.env.user.email - name = http.request.env.user.name - return http.request.render( - "helpdesk_mgmt.portal_create_ticket", - { - "categories": categories, - "teams": self._get_teams(), - "email": email, - "name": name, - "request_types": request_types - }, - ) + res.qcontext["request_types"] = request_types + return res def _prepare_submit_ticket_vals(self, **kw): res = super()._prepare_submit_ticket_vals(**kw)