From 4b22d6a0c9c6701447713236a950ae6b8ecc41c8 Mon Sep 17 00:00:00 2001 From: "Samuel Macias Oropeza (smo)" Date: Mon, 29 Jan 2024 10:37:57 -0600 Subject: [PATCH 1/4] [ADD] helpdesk_ticket_type_team --- helpdesk_ticket_type_team/README.rst | 35 +++++++++++++++++++ helpdesk_ticket_type_team/__init__.py | 3 ++ helpdesk_ticket_type_team/__manifest__.py | 22 ++++++++++++ helpdesk_ticket_type_team/models/__init__.py | 3 ++ .../models/helpdesk_team.py | 11 ++++++ .../models/helpdesk_ticket.py | 26 ++++++++++++++ .../models/helpdesk_ticket_type.py | 9 +++++ .../views/helpdesk_view.xml | 25 +++++++++++++ .../odoo/addons/helpdesk_ticket_type_team | 1 + setup/helpdesk_ticket_type_team/setup.py | 6 ++++ 10 files changed, 141 insertions(+) create mode 100644 helpdesk_ticket_type_team/README.rst create mode 100644 helpdesk_ticket_type_team/__init__.py create mode 100644 helpdesk_ticket_type_team/__manifest__.py create mode 100644 helpdesk_ticket_type_team/models/__init__.py create mode 100644 helpdesk_ticket_type_team/models/helpdesk_team.py create mode 100644 helpdesk_ticket_type_team/models/helpdesk_ticket.py create mode 100644 helpdesk_ticket_type_team/models/helpdesk_ticket_type.py create mode 100644 helpdesk_ticket_type_team/views/helpdesk_view.xml create mode 120000 setup/helpdesk_ticket_type_team/odoo/addons/helpdesk_ticket_type_team create mode 100644 setup/helpdesk_ticket_type_team/setup.py diff --git a/helpdesk_ticket_type_team/README.rst b/helpdesk_ticket_type_team/README.rst new file mode 100644 index 000000000..38929e877 --- /dev/null +++ b/helpdesk_ticket_type_team/README.rst @@ -0,0 +1,35 @@ +**This file is going to be generated by oca-gen-addon-readme.** + +*Manual changes will be overwritten.* + +Please provide content in the ``readme`` directory: + +* **DESCRIPTION.rst** (required) +* INSTALL.rst (optional) +* CONFIGURE.rst (optional) +* **USAGE.rst** (optional, highly recommended) +* DEVELOP.rst (optional) +* ROADMAP.rst (optional) +* HISTORY.rst (optional, recommended) +* **CONTRIBUTORS.rst** (optional, highly recommended) +* CREDITS.rst (optional) + +Content of this README will also be drawn from the addon manifest, +from keys such as name, authors, maintainers, development_status, +and license. + +A good, one sentence summary in the manifest is also highly recommended. + + +Automatic changelog generation +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +`HISTORY.rst` can be auto generated using `towncrier `_. + +Just put towncrier compatible changelog fragments into `readme/newsfragments` +and the changelog file will be automatically generated and updated when a new fragment is added. + +Please refer to `towncrier` documentation to know more. + +NOTE: the changelog will be automatically generated when using `/ocabot merge $option`. +If you need to run it manually, refer to `OCA/maintainer-tools README `_. diff --git a/helpdesk_ticket_type_team/__init__.py b/helpdesk_ticket_type_team/__init__.py new file mode 100644 index 000000000..69f7babdf --- /dev/null +++ b/helpdesk_ticket_type_team/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import models diff --git a/helpdesk_ticket_type_team/__manifest__.py b/helpdesk_ticket_type_team/__manifest__.py new file mode 100644 index 000000000..e3c31860e --- /dev/null +++ b/helpdesk_ticket_type_team/__manifest__.py @@ -0,0 +1,22 @@ +# Copyright (C) 2017 Open Source Integrators (https://www.opensourceintegrators.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +{ + "name": "Helpdesk ticket type team", + "version": "16.0.1.0.0", + "license": "AGPL-3", + "summary": "Limits the selection of helpdesk ticket types based on the team", + "author": "Open Source Integrators", + "maintainer": "Open Source Integrators", + "website": "https://github.com/ursais/osi-addons", + "depends": [ + # Odoo + Enterprise + "helpdesk", + # OCA + # osi-addons + ], + "data": [ + "views/helpdesk_view.xml", + ], + "application": False, + "maintainers": ["ursais"], +} diff --git a/helpdesk_ticket_type_team/models/__init__.py b/helpdesk_ticket_type_team/models/__init__.py new file mode 100644 index 000000000..72bc0d14c --- /dev/null +++ b/helpdesk_ticket_type_team/models/__init__.py @@ -0,0 +1,3 @@ +from . import helpdesk_ticket +from . import helpdesk_ticket_type +from . import helpdesk_team diff --git a/helpdesk_ticket_type_team/models/helpdesk_team.py b/helpdesk_ticket_type_team/models/helpdesk_team.py new file mode 100644 index 000000000..5203d3b8e --- /dev/null +++ b/helpdesk_ticket_type_team/models/helpdesk_team.py @@ -0,0 +1,11 @@ +# Copyright (C) 2023 Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import fields, models + + +class HelpdeskTeam(models.Model): + _inherit = "helpdesk.team" + + ticket_type_ids = fields.One2many( + "helpdesk.ticket.type", "team_id", string="Assigned ticket types" + ) diff --git a/helpdesk_ticket_type_team/models/helpdesk_ticket.py b/helpdesk_ticket_type_team/models/helpdesk_ticket.py new file mode 100644 index 000000000..852944939 --- /dev/null +++ b/helpdesk_ticket_type_team/models/helpdesk_ticket.py @@ -0,0 +1,26 @@ +# Copyright (C) 2023 Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import api, models + + +class HelpdeskTicket(models.Model): + _inherit = "helpdesk.ticket" + + @api.onchange("team_id") + def _onchange_ticket_type_id(self): + self.ticket_type_id = False + if not self.team_id or not self.team_id.ticket_type_ids: + return {"domain": {"ticket_type_id": [("team_id", "=", False)]}} + else: + ticket_types = self.env["helpdesk.ticket.type"].search( + [("team_id", "=", self.team_id.id)] + ) + if len(ticket_types) == 1: + self.ticket_type_id = ticket_types[0].id + return { + "domain": {"ticket_type_id": [("team_id", "=", self.team_id.id)]} + } + elif len(ticket_types) > 1: + return { + "domain": {"ticket_type_id": [("team_id", "=", self.team_id.id)]} + } diff --git a/helpdesk_ticket_type_team/models/helpdesk_ticket_type.py b/helpdesk_ticket_type_team/models/helpdesk_ticket_type.py new file mode 100644 index 000000000..930976ad9 --- /dev/null +++ b/helpdesk_ticket_type_team/models/helpdesk_ticket_type.py @@ -0,0 +1,9 @@ +# Copyright (C) 2023 Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import fields, models + + +class HelpdeskTicketType(models.Model): + _inherit = "helpdesk.ticket.type" + + team_id = fields.Many2one("helpdesk.team", string="Team") diff --git a/helpdesk_ticket_type_team/views/helpdesk_view.xml b/helpdesk_ticket_type_team/views/helpdesk_view.xml new file mode 100644 index 000000000..04b203441 --- /dev/null +++ b/helpdesk_ticket_type_team/views/helpdesk_view.xml @@ -0,0 +1,25 @@ + + + + helpdesk.ticket.type.tree.inherit.mppd + helpdesk.ticket.type + + + + + + + + + + helpdesk.team.form.inherit.mppd + helpdesk.team + + + + + + + + + diff --git a/setup/helpdesk_ticket_type_team/odoo/addons/helpdesk_ticket_type_team b/setup/helpdesk_ticket_type_team/odoo/addons/helpdesk_ticket_type_team new file mode 120000 index 000000000..a30e7251c --- /dev/null +++ b/setup/helpdesk_ticket_type_team/odoo/addons/helpdesk_ticket_type_team @@ -0,0 +1 @@ +../../../../helpdesk_ticket_type_team \ No newline at end of file diff --git a/setup/helpdesk_ticket_type_team/setup.py b/setup/helpdesk_ticket_type_team/setup.py new file mode 100644 index 000000000..28c57bb64 --- /dev/null +++ b/setup/helpdesk_ticket_type_team/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) From 9787317abbf619d30831fa4fdc64329e5afd57fe Mon Sep 17 00:00:00 2001 From: "Samuel Macias Oropeza (smo)" Date: Mon, 29 Jan 2024 11:24:55 -0600 Subject: [PATCH 2/4] [IMP] helpdesk_ticket_type_team --- helpdesk_ticket_type_team/README.rst | 47 +++++++++---------- .../models/helpdesk_ticket.py | 15 +----- 2 files changed, 24 insertions(+), 38 deletions(-) diff --git a/helpdesk_ticket_type_team/README.rst b/helpdesk_ticket_type_team/README.rst index 38929e877..64af7afac 100644 --- a/helpdesk_ticket_type_team/README.rst +++ b/helpdesk_ticket_type_team/README.rst @@ -1,35 +1,32 @@ -**This file is going to be generated by oca-gen-addon-readme.** +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 -*Manual changes will be overwritten.* +======== +Overview +======== -Please provide content in the ``readme`` directory: +This module restricts the visibility of helpdesk ticket types based on the teams assigned to them. -* **DESCRIPTION.rst** (required) -* INSTALL.rst (optional) -* CONFIGURE.rst (optional) -* **USAGE.rst** (optional, highly recommended) -* DEVELOP.rst (optional) -* ROADMAP.rst (optional) -* HISTORY.rst (optional, recommended) -* **CONTRIBUTORS.rst** (optional, highly recommended) -* CREDITS.rst (optional) +Every ticket type can only have a single team assigned to it. -Content of this README will also be drawn from the addon manifest, -from keys such as name, authors, maintainers, development_status, -and license. +Configuration +============= -A good, one sentence summary in the manifest is also highly recommended. +* Go to Helpdesk/Configuration/Types to assign a team to the ticket types +* Alternatively, you can go Helpdesk/Configuration/Teams, and inside the form view you can assign the ticket types to the team +Usage +===== -Automatic changelog generation -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +* Assign ticket types to teams +* When creating a new ticket, only the assigned ticket types will be visible when selecting the team -`HISTORY.rst` can be auto generated using `towncrier `_. +Credits +======= -Just put towncrier compatible changelog fragments into `readme/newsfragments` -and the changelog file will be automatically generated and updated when a new fragment is added. +Contributors +------------ -Please refer to `towncrier` documentation to know more. - -NOTE: the changelog will be automatically generated when using `/ocabot merge $option`. -If you need to run it manually, refer to `OCA/maintainer-tools README `_. +Samuel Macias +Maxime Chambreuil diff --git a/helpdesk_ticket_type_team/models/helpdesk_ticket.py b/helpdesk_ticket_type_team/models/helpdesk_ticket.py index 852944939..0aa1d2890 100644 --- a/helpdesk_ticket_type_team/models/helpdesk_ticket.py +++ b/helpdesk_ticket_type_team/models/helpdesk_ticket.py @@ -7,20 +7,9 @@ class HelpdeskTicket(models.Model): _inherit = "helpdesk.ticket" @api.onchange("team_id") - def _onchange_ticket_type_id(self): + def _onchange_team_id(self): self.ticket_type_id = False if not self.team_id or not self.team_id.ticket_type_ids: return {"domain": {"ticket_type_id": [("team_id", "=", False)]}} else: - ticket_types = self.env["helpdesk.ticket.type"].search( - [("team_id", "=", self.team_id.id)] - ) - if len(ticket_types) == 1: - self.ticket_type_id = ticket_types[0].id - return { - "domain": {"ticket_type_id": [("team_id", "=", self.team_id.id)]} - } - elif len(ticket_types) > 1: - return { - "domain": {"ticket_type_id": [("team_id", "=", self.team_id.id)]} - } + return {"domain": {"ticket_type_id": [("team_id", "=", self.team_id.id)]}} From 127c6519af974c9feda9b0ccad3549564ee1f855 Mon Sep 17 00:00:00 2001 From: "Samuel Macias Oropeza (smo)" Date: Thu, 1 Feb 2024 11:05:24 -0600 Subject: [PATCH 3/4] [IMP] helpdesk_ticket_type_team --- helpdesk_ticket_type_team/models/__init__.py | 1 + helpdesk_ticket_type_team/models/helpdesk_ticket.py | 8 +++++++- helpdesk_ticket_type_team/models/res_users.py | 7 +++++++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 helpdesk_ticket_type_team/models/res_users.py diff --git a/helpdesk_ticket_type_team/models/__init__.py b/helpdesk_ticket_type_team/models/__init__.py index 72bc0d14c..056772c0a 100644 --- a/helpdesk_ticket_type_team/models/__init__.py +++ b/helpdesk_ticket_type_team/models/__init__.py @@ -1,3 +1,4 @@ from . import helpdesk_ticket from . import helpdesk_ticket_type from . import helpdesk_team +from . import res_users diff --git a/helpdesk_ticket_type_team/models/helpdesk_ticket.py b/helpdesk_ticket_type_team/models/helpdesk_ticket.py index 0aa1d2890..1dfaeb7e5 100644 --- a/helpdesk_ticket_type_team/models/helpdesk_ticket.py +++ b/helpdesk_ticket_type_team/models/helpdesk_ticket.py @@ -9,7 +9,13 @@ class HelpdeskTicket(models.Model): @api.onchange("team_id") def _onchange_team_id(self): self.ticket_type_id = False + self.user_id = False if not self.team_id or not self.team_id.ticket_type_ids: return {"domain": {"ticket_type_id": [("team_id", "=", False)]}} else: - return {"domain": {"ticket_type_id": [("team_id", "=", self.team_id.id)]}} + return { + "domain": { + "ticket_type_id": [("team_id", "=", self.team_id.id)], + "user_id": [("team_ids", "=", self.team_id.id)], + } + } diff --git a/helpdesk_ticket_type_team/models/res_users.py b/helpdesk_ticket_type_team/models/res_users.py new file mode 100644 index 000000000..b3298c392 --- /dev/null +++ b/helpdesk_ticket_type_team/models/res_users.py @@ -0,0 +1,7 @@ +from odoo import fields, models + + +class ResUsers(models.Model): + _inherit = "res.users" + + team_ids = fields.Many2many("helpdesk.team") From 6cf745b7c30da48b26ecd39dfc941b0928e3c5a0 Mon Sep 17 00:00:00 2001 From: "Samuel Macias Oropeza (smo)" Date: Tue, 23 Apr 2024 12:29:18 -0600 Subject: [PATCH 4/4] [IMP] es_MX translation --- helpdesk_ticket_type_team/i18n/es_MX.po | 47 +++++++++++++++++++ .../i18n/helpdesk_ticket_type_team.pot | 47 +++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 helpdesk_ticket_type_team/i18n/es_MX.po create mode 100644 helpdesk_ticket_type_team/i18n/helpdesk_ticket_type_team.pot diff --git a/helpdesk_ticket_type_team/i18n/es_MX.po b/helpdesk_ticket_type_team/i18n/es_MX.po new file mode 100644 index 000000000..f1c65c9b7 --- /dev/null +++ b/helpdesk_ticket_type_team/i18n/es_MX.po @@ -0,0 +1,47 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * helpdesk_ticket_type_team +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0+e-20230816\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-04-23 18:26+0000\n" +"PO-Revision-Date: 2024-04-23 18:26+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: helpdesk_ticket_type_team +#: model:ir.model.fields,field_description:helpdesk_ticket_type_team.field_helpdesk_team__ticket_type_ids +msgid "Assigned ticket types" +msgstr "Tipos de ticket asignados" + +#. module: helpdesk_ticket_type_team +#: model:ir.model,name:helpdesk_ticket_type_team.model_helpdesk_team +msgid "Helpdesk Team" +msgstr "Equipo de Servicio de asistencia" + +#. module: helpdesk_ticket_type_team +#: model:ir.model,name:helpdesk_ticket_type_team.model_helpdesk_ticket +msgid "Helpdesk Ticket" +msgstr "Ticket de Servicio de asistencia" + +#. module: helpdesk_ticket_type_team +#: model:ir.model,name:helpdesk_ticket_type_team.model_helpdesk_ticket_type +msgid "Helpdesk Ticket Type" +msgstr "Tipo de ticket de Servicio de asistencia" + +#. module: helpdesk_ticket_type_team +#: model:ir.model.fields,field_description:helpdesk_ticket_type_team.field_helpdesk_ticket_type__team_id +#: model:ir.model.fields,field_description:helpdesk_ticket_type_team.field_res_users__team_ids +msgid "Team" +msgstr "Equipo" + +#. module: helpdesk_ticket_type_team +#: model:ir.model,name:helpdesk_ticket_type_team.model_res_users +msgid "User" +msgstr "Usuario" diff --git a/helpdesk_ticket_type_team/i18n/helpdesk_ticket_type_team.pot b/helpdesk_ticket_type_team/i18n/helpdesk_ticket_type_team.pot new file mode 100644 index 000000000..ae3bec921 --- /dev/null +++ b/helpdesk_ticket_type_team/i18n/helpdesk_ticket_type_team.pot @@ -0,0 +1,47 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * helpdesk_ticket_type_team +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0+e-20230816\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-04-23 18:26+0000\n" +"PO-Revision-Date: 2024-04-23 18:26+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: helpdesk_ticket_type_team +#: model:ir.model.fields,field_description:helpdesk_ticket_type_team.field_helpdesk_team__ticket_type_ids +msgid "Assigned ticket types" +msgstr "" + +#. module: helpdesk_ticket_type_team +#: model:ir.model,name:helpdesk_ticket_type_team.model_helpdesk_team +msgid "Helpdesk Team" +msgstr "" + +#. module: helpdesk_ticket_type_team +#: model:ir.model,name:helpdesk_ticket_type_team.model_helpdesk_ticket +msgid "Helpdesk Ticket" +msgstr "" + +#. module: helpdesk_ticket_type_team +#: model:ir.model,name:helpdesk_ticket_type_team.model_helpdesk_ticket_type +msgid "Helpdesk Ticket Type" +msgstr "" + +#. module: helpdesk_ticket_type_team +#: model:ir.model.fields,field_description:helpdesk_ticket_type_team.field_helpdesk_ticket_type__team_id +#: model:ir.model.fields,field_description:helpdesk_ticket_type_team.field_res_users__team_ids +msgid "Team" +msgstr "" + +#. module: helpdesk_ticket_type_team +#: model:ir.model,name:helpdesk_ticket_type_team.model_res_users +msgid "User" +msgstr ""