diff --git a/helpdesk_mgmt_activity/README.rst b/helpdesk_mgmt_activity/README.rst new file mode 100644 index 0000000000..e8ea90de45 --- /dev/null +++ b/helpdesk_mgmt_activity/README.rst @@ -0,0 +1,123 @@ +============================ +Helpdesk Management Activity +============================ + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:c77bb124906154be8648020f75af1b6c2dca2c419551445c18e60b86488fe429 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fhelpdesk-lightgray.png?logo=github + :target: https://github.com/OCA/helpdesk/tree/16.0/helpdesk_mgmt_activity + :alt: OCA/helpdesk +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/helpdesk-16-0/helpdesk-16-0-helpdesk_mgmt_activity + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/helpdesk&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +The module adds the following features: + +- Refer a ticket to the Odoo model record +- Set the list of models available for a Helpdesk team +- Pre-configure ticket description template based on it's category +- Create an activity for the referring record right from the Ticket +- Change the Ticket's stage based on the activity state + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +**To Configure Available Odoo Models** +====================================== + +- Go to Helpdesk-->Configuration-->Settings +- In the Available Models field add models available for a Helpdesk + +To Configure Ticket's Stage on Activity State** +=============================================== + +- Go to Helpdesk-->Configuration--Teams +- Create a "New" team or select an existing record +- Enable the "Set Activities" checkbox to enable the feature +- Select the "Done Activity Stage" to move the ticket when the activity is done + +Usage +===== + +**Go to Helpdesk module** +========================= + +- Select a Team +- Open a Ticket +- Create a new Ticket +- In the "Assign Activity" group + + - Select a related model and record in the Source field + - Select Activity type and due date + +- Enter the Description +- Click the "Perform Action" button +- Ticket will be moved to the next preset state and activity will be created in the related model +- If an activity is Done, the Ticket moves to the pre-defined stage + +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 +======= + +Authors +~~~~~~~ + +* Cetmix OÜ + +Contributors +~~~~~~~~~~~~ + +* `Cetmix OÜ `_: + + * Ivan Sokolov + * Mikhail Lapin + * Dessan Hemrayev + * Maksim Shurupov + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +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. + +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. diff --git a/helpdesk_mgmt_activity/__init__.py b/helpdesk_mgmt_activity/__init__.py new file mode 100644 index 0000000000..bf8e144111 --- /dev/null +++ b/helpdesk_mgmt_activity/__init__.py @@ -0,0 +1,4 @@ +# Copyright (C) 2024 Cetmix OÜ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import models diff --git a/helpdesk_mgmt_activity/__manifest__.py b/helpdesk_mgmt_activity/__manifest__.py new file mode 100644 index 0000000000..8a10d4ebd8 --- /dev/null +++ b/helpdesk_mgmt_activity/__manifest__.py @@ -0,0 +1,18 @@ +# Copyright (C) 2024 Cetmix OÜ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Helpdesk Management Activity", + "summary": "Create Activities for Odoo records from the Helpdesk", + "version": "16.0.1.0.0", + "license": "AGPL-3", + "author": "Cetmix OÜ, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/helpdesk", + "depends": ["helpdesk_mgmt"], + "data": [ + "views/res_config_settings_views.xml", + "views/helpdesk_ticket_view.xml", + "views/helpdesk_ticket_team_views.xml", + ], + "application": False, +} diff --git a/helpdesk_mgmt_activity/models/__init__.py b/helpdesk_mgmt_activity/models/__init__.py new file mode 100644 index 0000000000..05003e865c --- /dev/null +++ b/helpdesk_mgmt_activity/models/__init__.py @@ -0,0 +1,7 @@ +# Copyright (C) 2024 Cetmix OÜ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import res_config_settings +from . import helpdesk_ticket +from . import helpdesk_ticket_team +from . import mail_activity diff --git a/helpdesk_mgmt_activity/models/helpdesk_ticket.py b/helpdesk_mgmt_activity/models/helpdesk_ticket.py new file mode 100644 index 0000000000..a6b6afe83c --- /dev/null +++ b/helpdesk_mgmt_activity/models/helpdesk_ticket.py @@ -0,0 +1,103 @@ +# Copyright (C) 2024 Cetmix OÜ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +import ast + +from odoo import _, api, fields, models + + +class HelpdeskTicket(models.Model): + _inherit = "helpdesk.ticket" + + can_create_activity = fields.Boolean(related="team_id.is_set_activity") + res_model = fields.Char(string="Source Document Model", index=True) + res_id = fields.Integer(string="Source Document", index=True) + + record_ref = fields.Reference( + selection="_referenceable_models", + compute="_compute_record_ref", + inverse="_inverse_record_ref", + string="Source Record", + ) + source_activity_type_id = fields.Many2one(comodel_name="mail.activity.type") + date_deadline = fields.Date(string="Due Date", default=fields.Date.context_today) + + @api.model + def _referenceable_models(self): + """Select target model for source document""" + model_ids_str = ( + self.env["ir.config_parameter"] + .sudo() + .get_param("helpdesk_mgmt_activity.helpdesk_available_model_ids", "[]") + ) + model_ids = ast.literal_eval(model_ids_str) + if not model_ids: + return [] + IrModelAccess = self.env["ir.model.access"].with_user(self.env.user.id) + available_models = self.env["ir.model"].search_read( + [("id", "in", model_ids)], fields=["model", "name"] + ) + return [ + (model.get("model"), model.get("name")) + for model in available_models + if IrModelAccess.check(model.get("model"), "read", False) + ] + + @api.depends("res_model", "res_id") + def _compute_record_ref(self): + """Compute Source Document Reference""" + for rec in self: + if rec.res_model and rec.res_id: + try: + self.env[rec.res_model].browse(rec.res_id).check_access_rule("read") + rec.record_ref = "%s,%s" % ( + rec.res_model, + rec.res_id, + ) + except Exception: + rec.record_ref = None + else: + rec.record_ref = None + + def _inverse_record_ref(self): + """Set Source Document Reference""" + for record in self: + if record.record_ref: + res_id = record.record_ref.id + res_model = record.record_ref._name + else: + res_id, res_model = False, False + record.write({"res_id": res_id, "res_model": res_model}) + + def _check_activity_values(self): + """Check activity values for helpdesk ticket""" + if not self.can_create_activity: + raise models.UserError(_("You cannot create activity!")) + if not (self.res_id and self.res_model): + raise models.UserError(_("Source Record is not set!")) + if not self.source_activity_type_id: + raise models.UserError(_("Activity Type is not set!")) + if not self.date_deadline: + raise models.UserError(_("Date Deadline is not set!")) + + def perform_action(self): + self._check_activity_values() + self.ensure_one() + return { + "type": "ir.actions.act_window", + "name": "Helpdesk Ticket Action", + "view_mode": "form", + "res_model": "mail.activity", + "view_type": "form", + "context": { + "default_res_model_id": self.env["ir.model"]._get_id(self.res_model), + "default_res_id": self.res_id, + "default_activity_type_id": self.source_activity_type_id.id, + "default_date_deadline": self.date_deadline, + "default_note": self.description, + "default_ticket_id": self.id, + "default_summary": self.name, + "default_user_id": self.user_id.id, + }, + "target": "new", + } diff --git a/helpdesk_mgmt_activity/models/helpdesk_ticket_team.py b/helpdesk_mgmt_activity/models/helpdesk_ticket_team.py new file mode 100644 index 0000000000..bc4a2acc41 --- /dev/null +++ b/helpdesk_mgmt_activity/models/helpdesk_ticket_team.py @@ -0,0 +1,16 @@ +from odoo import fields, models + + +class HelpdeskTicketTeam(models.Model): + _inherit = "helpdesk.ticket.team" + + is_set_activity = fields.Boolean( + string="Set Activities", + help="Available to set activity on source record from ticket", + ) + activity_stage_id = fields.Many2one( + comodel_name="helpdesk.ticket.stage", + string="Done Activity Stage", + domain="['|', ('team_ids', 'in, []'), ('team_ids', 'in', [id])]", + help="Move the ticket when the activity in source record is done", + ) diff --git a/helpdesk_mgmt_activity/models/mail_activity.py b/helpdesk_mgmt_activity/models/mail_activity.py new file mode 100644 index 0000000000..150186786e --- /dev/null +++ b/helpdesk_mgmt_activity/models/mail_activity.py @@ -0,0 +1,19 @@ +from odoo import fields, models + + +class MailActivity(models.Model): + _inherit = "mail.activity" + + ticket_id = fields.Many2one( + comodel_name="helpdesk.ticket", + help="Activity created from helpdesk ticket" + "After closing this activity, ticket is moved to done stage", + ) + + def _action_done(self, feedback=False, attachment_ids=None): + # Get closed stage for ticket + for ticket in self.mapped("ticket_id"): + if ticket.team_id and ticket.team_id.activity_stage_id: + # Change ticket stage + ticket.stage_id = ticket.team_id.activity_stage_id.id + return super()._action_done(feedback, attachment_ids) diff --git a/helpdesk_mgmt_activity/models/res_config_settings.py b/helpdesk_mgmt_activity/models/res_config_settings.py new file mode 100644 index 0000000000..beba59b6cf --- /dev/null +++ b/helpdesk_mgmt_activity/models/res_config_settings.py @@ -0,0 +1,38 @@ +import ast + +from odoo import api, fields, models + + +class ResConfigSettings(models.TransientModel): + _inherit = "res.config.settings" + + helpdesk_available_model_ids = fields.Many2many( + comodel_name="ir.model", + domain="[('transient', '=', False)]", + string="Available Models", + help="Available models for set source record in helpdesk ticket", + ) + + def set_values(self): + super().set_values() + ICPSudo = self.env["ir.config_parameter"].sudo() + ICPSudo.set_param( + "helpdesk_mgmt_activity.helpdesk_available_model_ids", + str(self.helpdesk_available_model_ids.ids), + ) + return + + @api.model + def get_values(self): + res = super().get_values() + ICPSudo = self.env["ir.config_parameter"].sudo() + helpdesk_available_model_ids = ICPSudo.get_param( + "helpdesk_mgmt_activity.helpdesk_available_model_ids", False + ) + if helpdesk_available_model_ids: + res.update( + helpdesk_available_model_ids=ast.literal_eval( + helpdesk_available_model_ids + ) + ) + return res diff --git a/helpdesk_mgmt_activity/readme/CONFIGURE.rst b/helpdesk_mgmt_activity/readme/CONFIGURE.rst new file mode 100644 index 0000000000..2cb4782bc1 --- /dev/null +++ b/helpdesk_mgmt_activity/readme/CONFIGURE.rst @@ -0,0 +1,13 @@ +**To Configure Available Odoo Models** +====================================== + +- Go to Helpdesk-->Configuration-->Settings +- In the Available Models field add models available for a Helpdesk + +To Configure Ticket's Stage on Activity State** +=============================================== + +- Go to Helpdesk-->Configuration--Teams +- Create a "New" team or select an existing record +- Enable the "Set Activities" checkbox to enable the feature +- Select the "Done Activity Stage" to move the ticket when the activity is done diff --git a/helpdesk_mgmt_activity/readme/CONTRIBUTORS.rst b/helpdesk_mgmt_activity/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000000..f6396e8c34 --- /dev/null +++ b/helpdesk_mgmt_activity/readme/CONTRIBUTORS.rst @@ -0,0 +1,6 @@ +* `Cetmix OÜ `_: + + * Ivan Sokolov + * Mikhail Lapin + * Dessan Hemrayev + * Maksim Shurupov diff --git a/helpdesk_mgmt_activity/readme/DESCRIPTION.rst b/helpdesk_mgmt_activity/readme/DESCRIPTION.rst new file mode 100644 index 0000000000..a2eb100fb3 --- /dev/null +++ b/helpdesk_mgmt_activity/readme/DESCRIPTION.rst @@ -0,0 +1,7 @@ +The module adds the following features: + +- Refer a ticket to the Odoo model record +- Set the list of models available for a Helpdesk team +- Pre-configure ticket description template based on it's category +- Create an activity for the referring record right from the Ticket +- Change the Ticket's stage based on the activity state diff --git a/helpdesk_mgmt_activity/readme/USAGE.rst b/helpdesk_mgmt_activity/readme/USAGE.rst new file mode 100644 index 0000000000..e3786c3af8 --- /dev/null +++ b/helpdesk_mgmt_activity/readme/USAGE.rst @@ -0,0 +1,15 @@ +**Go to Helpdesk module** +========================= + +- Select a Team +- Open a Ticket +- Create a new Ticket +- In the "Assign Activity" group + + - Select a related model and record in the Source field + - Select Activity type and due date + +- Enter the Description +- Click the "Perform Action" button +- Ticket will be moved to the next preset state and activity will be created in the related model +- If an activity is Done, the Ticket moves to the pre-defined stage diff --git a/helpdesk_mgmt_activity/static/description/icon.png b/helpdesk_mgmt_activity/static/description/icon.png new file mode 100644 index 0000000000..3a0328b516 Binary files /dev/null and b/helpdesk_mgmt_activity/static/description/icon.png differ diff --git a/helpdesk_mgmt_activity/static/description/index.html b/helpdesk_mgmt_activity/static/description/index.html new file mode 100644 index 0000000000..fcbe4298a8 --- /dev/null +++ b/helpdesk_mgmt_activity/static/description/index.html @@ -0,0 +1,477 @@ + + + + + +Helpdesk Management Activity + + + +
+

Helpdesk Management Activity

+ + +

Beta License: AGPL-3 OCA/helpdesk Translate me on Weblate Try me on Runboat

+

The module adds the following features:

+
    +
  • Refer a ticket to the Odoo model record
  • +
  • Set the list of models available for a Helpdesk team
  • +
  • Pre-configure ticket description template based on it’s category
  • +
  • Create an activity for the referring record right from the Ticket
  • +
  • Change the Ticket’s stage based on the activity state
  • +
+

Table of contents

+ + +
+

To Configure Available Odoo Models

+
    +
  • Go to Helpdesk–>Configuration–>Settings
  • +
  • In the Available Models field add models available for a Helpdesk
  • +
+
+
+

To Configure Ticket’s Stage on Activity State**

+
    +
  • Go to Helpdesk–>Configuration–Teams
  • +
  • Create a “New” team or select an existing record
  • +
  • Enable the “Set Activities” checkbox to enable the feature
  • +
  • Select the “Done Activity Stage” to move the ticket when the activity is done
  • +
+
+
+

Usage

+
+
+

Go to Helpdesk module

+
    +
  • Select a Team
  • +
  • Open a Ticket
  • +
  • Create a new Ticket
  • +
  • In the “Assign Activity” group
      +
    • Select a related model and record in the Source field
    • +
    • Select Activity type and due date
    • +
    +
  • +
  • Enter the Description
  • +
  • Click the “Perform Action” button
  • +
  • Ticket will be moved to the next preset state and activity will be created in the related model
  • +
  • If an activity is Done, the Ticket moves to the pre-defined stage
  • +
+
+
+

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

+
+

Authors

+
    +
  • Cetmix OÜ
  • +
+
+
+

Contributors

+
    +
  • Cetmix OÜ:
      +
    • Ivan Sokolov
    • +
    • Mikhail Lapin
    • +
    • Dessan Hemrayev
    • +
    • Maksim Shurupov
    • +
    +
  • +
+
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

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.

+

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.

+
+
+
+ + diff --git a/helpdesk_mgmt_activity/tests/__init__.py b/helpdesk_mgmt_activity/tests/__init__.py new file mode 100644 index 0000000000..c49ed31723 --- /dev/null +++ b/helpdesk_mgmt_activity/tests/__init__.py @@ -0,0 +1,4 @@ +# Copyright (C) 2024 Cetmix OÜ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import test_helpdesk_ticket diff --git a/helpdesk_mgmt_activity/tests/test_helpdesk_ticket.py b/helpdesk_mgmt_activity/tests/test_helpdesk_ticket.py new file mode 100644 index 0000000000..52596007b1 --- /dev/null +++ b/helpdesk_mgmt_activity/tests/test_helpdesk_ticket.py @@ -0,0 +1,170 @@ +# Copyright (C) 2024 Cetmix OÜ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.exceptions import UserError +from odoo.fields import Date +from odoo.tests import Form + +from odoo.addons.helpdesk_mgmt.tests.common import TestHelpdeskTicketBase + + +class TestHelpdeskTicket(TestHelpdeskTicketBase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.partner_model = cls.env["ir.model"]._get("res.partner") + cls.test_partner = cls.env["res.partner"].create({"name": "Test Partner"}) + cls.activity_type_meeting = cls.env.ref("mail.mail_activity_data_meeting") + cls.env["ir.config_parameter"].sudo().set_param( + "helpdesk_mgmt_activity.helpdesk_available_model_ids", cls.partner_model.ids + ) + + def create_ticket_and_activity(self): + """Create ticket and activity for record""" + ticket = self._create_ticket(self.team_a, self.user) + ticket.write( + { + "record_ref": f"res.partner,{self.test_partner.id}", + "source_activity_type_id": self.activity_type_meeting.id, + "date_deadline": Date.today(), + } + ) + action = ticket.perform_action() + activity = ticket.record_ref.with_context( + **action.get("context", {}) + ).activity_schedule( + summary=ticket.name, + note=ticket.description, + date_deadline=ticket.date_deadline, + ) + return ticket, activity + + def test_ticket_available_model_ids(self): + """Test flow when available model for ticket is updated""" + settings = self.env["res.config.settings"].create({}) + with Form(settings) as form: + form.helpdesk_available_model_ids.add(self.partner_model) + values = settings.get_values() + self.assertEqual( + values.get("helpdesk_available_model_ids"), self.partner_model.ids + ) + self.env["ir.config_parameter"].sudo().set_param( + "helpdesk_mgmt_activity.helpdesk_available_model_ids", False + ) + values = settings.get_values() + self.assertFalse(values.get("helpdesk_available_model_ids")) + + def test_ticket_record_ref(self): + """Test flow when change source record""" + ticket = self._create_ticket(self.team_a, self.user) + self.assertFalse(ticket.record_ref) + self.assertFalse(ticket.res_model) + self.assertFalse(ticket.res_id) + + ticket.record_ref = f"res.partner,{self.test_partner.id}" + self.assertEqual(ticket.record_ref, self.test_partner) + self.assertEqual(ticket.res_id, self.test_partner.id) + self.assertEqual(ticket.res_model, "res.partner") + + ticket.record_ref = False + self.assertFalse(ticket.res_id) + self.assertFalse(ticket.res_model) + + def test_perform_action(self): + """Test flow when create action in record reference""" + ticket = self._create_ticket(self.team_a, self.user) + + with self.assertRaises(UserError) as error: + ticket.perform_action() + self.assertEqual(error.exception.args[0], "You cannot create activity!") + + ticket.team_id.is_set_activity = True + + with self.assertRaises(UserError) as error: + ticket.perform_action() + self.assertEqual(error.exception.args[0], "Source Record is not set!") + + ticket.record_ref = f"res.partner,{self.test_partner.id}" + + with self.assertRaises(UserError) as error: + ticket.perform_action() + self.assertEqual(error.exception.args[0], "Activity Type is not set!") + + ticket.source_activity_type_id = self.activity_type_meeting + ticket.date_deadline = False + + with self.assertRaises(UserError) as error: + ticket.perform_action() + self.assertEqual(error.exception.args[0], "Date Deadline is not set!") + + ticket.date_deadline = Date.today() + + action = ticket.perform_action() + + self.assertDictEqual( + action, + { + "type": "ir.actions.act_window", + "name": "Helpdesk Ticket Action", + "view_mode": "form", + "res_model": "mail.activity", + "view_type": "form", + "context": { + "default_res_model_id": self.partner_model.id, + "default_res_id": ticket.res_id, + "default_activity_type_id": ticket.source_activity_type_id.id, + "default_date_deadline": ticket.date_deadline, + "default_note": ticket.description, + "default_ticket_id": ticket.id, + "default_summary": ticket.name, + "default_user_id": ticket.user_id.id, + }, + "target": "new", + }, + ) + + def test_helpdesk_activity_with_team_stage(self): + """ + Test flow when create activity from helpdesk ticket + and done it. Ticket is moved to cancel stage + """ + self.team_a.write( + { + "is_set_activity": True, + "activity_stage_id": self.stage_closed.id, + } + ) + ticket, activity = self.create_ticket_and_activity() + self.assertEqual( + activity.res_model_id.id, self.partner_model.id, "Model id's must be equal" + ) + self.assertEqual( + activity.res_id, + self.test_partner.id, + "Res ID must be equal to test partner ID", + ) + + activity.action_done() + self.assertEqual( + ticket.stage_id.id, self.stage_closed.id, "Stage ID must be equal" + ) + + def test_helpdesk_activity_without_team_stage(self): + """ + Test flow when create activity from helpdesk ticket + and done it without activity_stage_id field value from ticket team + """ + self.team_a.is_set_activity = True + ticket, activity = self.create_ticket_and_activity() + ticket_stage_id = ticket.stage_id.id + self.assertEqual( + activity.res_model_id.id, self.partner_model.id, "Model id's must be equal" + ) + self.assertEqual( + activity.res_id, + self.test_partner.id, + "Res ID must be equal to test partner ID", + ) + + activity.action_done() + self.assertEqual(ticket_stage_id, ticket.stage_id.id, "Stage ID must be equal") diff --git a/helpdesk_mgmt_activity/views/helpdesk_ticket_team_views.xml b/helpdesk_mgmt_activity/views/helpdesk_ticket_team_views.xml new file mode 100644 index 0000000000..6b9115a8bb --- /dev/null +++ b/helpdesk_mgmt_activity/views/helpdesk_ticket_team_views.xml @@ -0,0 +1,18 @@ + + + + view.helpdesk_team.form + helpdesk.ticket.team + + 99 + + + + + + + + diff --git a/helpdesk_mgmt_activity/views/helpdesk_ticket_view.xml b/helpdesk_mgmt_activity/views/helpdesk_ticket_view.xml new file mode 100644 index 0000000000..1b302ec718 --- /dev/null +++ b/helpdesk_mgmt_activity/views/helpdesk_ticket_view.xml @@ -0,0 +1,36 @@ + + + + helpdesk.ticket.view.form + helpdesk.ticket + + 99 + +
+ +
+ + + + + + + + + +
+
+
diff --git a/helpdesk_mgmt_activity/views/res_config_settings_views.xml b/helpdesk_mgmt_activity/views/res_config_settings_views.xml new file mode 100644 index 0000000000..0e8155d9ef --- /dev/null +++ b/helpdesk_mgmt_activity/views/res_config_settings_views.xml @@ -0,0 +1,31 @@ + + + + res.config.settings.form.view + res.config.settings + + + +
+
+
+
+
+
+
+ + + + diff --git a/setup/helpdesk_mgmt_activity/odoo/addons/helpdesk_mgmt_activity b/setup/helpdesk_mgmt_activity/odoo/addons/helpdesk_mgmt_activity new file mode 120000 index 0000000000..407eab2985 --- /dev/null +++ b/setup/helpdesk_mgmt_activity/odoo/addons/helpdesk_mgmt_activity @@ -0,0 +1 @@ +../../../../helpdesk_mgmt_activity \ No newline at end of file diff --git a/setup/helpdesk_mgmt_activity/setup.py b/setup/helpdesk_mgmt_activity/setup.py new file mode 100644 index 0000000000..28c57bb640 --- /dev/null +++ b/setup/helpdesk_mgmt_activity/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +)