diff --git a/helpdesk_ticket_partner_response/README.rst b/helpdesk_ticket_partner_response/README.rst new file mode 100644 index 0000000000..97e8411cde --- /dev/null +++ b/helpdesk_ticket_partner_response/README.rst @@ -0,0 +1,108 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + +================================ +Helpdesk Ticket Partner Response +================================ + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:41d6f07e50ca5bf24a2440c7482dc043d5daf0fb0189930a29dec46e272ba45c + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/license-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/19.0/helpdesk_ticket_partner_response + :alt: OCA/helpdesk +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/helpdesk-19-0/helpdesk-19-0-helpdesk_ticket_partner_response + :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=19.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Autoupdate ticket stage when a partner posts a message on the ticket +from the portal or by sending an email. + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +Set ticket source and destination stages from where if a message by the +partner is posted autopdation have to be triggered. To setup this +configuration you have to go to Helpdesk > Settings > Teams > Autoupdate +ticket stage + +Usage +===== + +This module adds the option from helpdesk team to automate the ticket +stage update when a partner posts a message on the same ticket. This is +useful when exists an specific stage for the tickets that his last +update is answer by the partner. + +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 +------- + +* Antoni Marroig +* APSL-Nagarro + +Contributors +------------ + +[APSL-Nagarro](https://apsl.tech): + +- Antoni Marroig + +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. + +.. |maintainer-peluko00| image:: https://github.com/peluko00.png?size=40px + :target: https://github.com/peluko00 + :alt: peluko00 + +Current `maintainer `__: + +|maintainer-peluko00| + +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_ticket_partner_response/__init__.py b/helpdesk_ticket_partner_response/__init__.py new file mode 100644 index 0000000000..31660d6a96 --- /dev/null +++ b/helpdesk_ticket_partner_response/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import models diff --git a/helpdesk_ticket_partner_response/__manifest__.py b/helpdesk_ticket_partner_response/__manifest__.py new file mode 100644 index 0000000000..c04a6cb224 --- /dev/null +++ b/helpdesk_ticket_partner_response/__manifest__.py @@ -0,0 +1,18 @@ +# Copyright 2024 Antoni Marroig(APSL-Nagarro) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +{ + "name": "Helpdesk Ticket Partner Response", + "summary": "Change ticket stage when partner response", + "version": "19.0.1.0.0", + "category": "Helpdesk", + "website": "https://github.com/OCA/helpdesk", + "author": "Antoni Marroig, APSL-Nagarro, Odoo Community Association (OCA)", + "maintainers": ["peluko00"], + "license": "AGPL-3", + "application": False, + "installable": True, + "depends": ["helpdesk_mgmt"], + "data": [ + "views/helpdesk_ticket_team.xml", + ], +} diff --git a/helpdesk_ticket_partner_response/i18n/ar.po b/helpdesk_ticket_partner_response/i18n/ar.po new file mode 100644 index 0000000000..d9f0193046 --- /dev/null +++ b/helpdesk_ticket_partner_response/i18n/ar.po @@ -0,0 +1,64 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * helpdesk_ticket_partner_response +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,field_description:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autoupdate_ticket_stage +#: model_terms:ir.ui.view,arch_db:helpdesk_ticket_partner_response.view_helpdesk_team_form_inherit +msgid "Auto Update Ticket Stage" +msgstr "" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,field_description:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autopupdate_dest_stage_id +msgid "Autoupdate Destination Stage" +msgstr "" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,field_description:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autopupdate_src_stage_ids +msgid "Autoupdate Source Stages" +msgstr "" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model,name:helpdesk_ticket_partner_response.model_mail_thread +msgid "Email Thread" +msgstr "" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model,name:helpdesk_ticket_partner_response.model_helpdesk_ticket +msgid "Helpdesk Ticket" +msgstr "" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model,name:helpdesk_ticket_partner_response.model_helpdesk_ticket_team +msgid "Helpdesk Ticket Team" +msgstr "" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,help:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autopupdate_src_stage_ids +msgid "" +"If a partner posts a message in a ticket on this stages, the own stage of " +"the ticket will be update by the one set on Autoupdate Destination Stage " +msgstr "" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,help:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autopupdate_dest_stage_id +msgid "Target stage on partner's message post " +msgstr "" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,help:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autoupdate_ticket_stage +msgid "Update ticket stage when a new message is registered by the partner." +msgstr "" diff --git a/helpdesk_ticket_partner_response/i18n/ca.po b/helpdesk_ticket_partner_response/i18n/ca.po new file mode 100644 index 0000000000..02b329797c --- /dev/null +++ b/helpdesk_ticket_partner_response/i18n/ca.po @@ -0,0 +1,64 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * helpdesk_ticket_partner_response +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-01-02 09:19+0000\n" +"PO-Revision-Date: 2026-05-13 11:07+0000\n" +"Last-Translator: QuiJoQuim \n" +"Language-Team: \n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.15.2\n" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,field_description:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autoupdate_ticket_stage +#: model_terms:ir.ui.view,arch_db:helpdesk_ticket_partner_response.view_helpdesk_team_form_inherit +msgid "Auto Update Ticket Stage" +msgstr "Etapa d'actualització automàtica de tiquets" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,field_description:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autopupdate_dest_stage_id +msgid "Autoupdate Destination Stage" +msgstr "Etapa de destinació d'actualització automàtica" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,field_description:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autopupdate_src_stage_ids +msgid "Autoupdate Source Stages" +msgstr "Etapes d'origen d'actualització automàtica" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model,name:helpdesk_ticket_partner_response.model_mail_thread +msgid "Email Thread" +msgstr "Fil de correus" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model,name:helpdesk_ticket_partner_response.model_helpdesk_ticket_team +msgid "Helpdesk Ticket Team" +msgstr "Equip del tiquet del centre d'assistència" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,help:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autopupdate_src_stage_ids +msgid "" +"If a partner posts a message in a ticket on this stages, the own stage of " +"the ticket will be update by the one set on Autoupdate Destination Stage " +msgstr "" +"Si un soci publica un missatge en un ticket en aquestes etapes, la mateixa " +"etapa del ticket s'actualitzarà pel que s'estableix a l'etapa de destinació " +"d'actualització automàtica " + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,help:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autopupdate_dest_stage_id +msgid "Target stage on partner's message post " +msgstr "Etapa objectiu a la publicació de missatges del soci " + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,help:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autoupdate_ticket_stage +msgid "Update ticket stage when a new message is registered by the partner." +msgstr "Actualitzar l'etapa del ticket quan el soci registra un missatge nou." diff --git a/helpdesk_ticket_partner_response/i18n/es.po b/helpdesk_ticket_partner_response/i18n/es.po new file mode 100644 index 0000000000..28e81c77a5 --- /dev/null +++ b/helpdesk_ticket_partner_response/i18n/es.po @@ -0,0 +1,65 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * helpdesk_ticket_partner_response +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-01-02 09:19+0000\n" +"PO-Revision-Date: 2026-05-12 23:45+0000\n" +"Last-Translator: QuiJoQuim \n" +"Language-Team: \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.15.2\n" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,field_description:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autoupdate_ticket_stage +#: model_terms:ir.ui.view,arch_db:helpdesk_ticket_partner_response.view_helpdesk_team_form_inherit +msgid "Auto Update Ticket Stage" +msgstr "Etapa de actualización automática de tickets" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,field_description:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autopupdate_dest_stage_id +msgid "Autoupdate Destination Stage" +msgstr "Etapa de destino de actualización automática" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,field_description:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autopupdate_src_stage_ids +msgid "Autoupdate Source Stages" +msgstr "Etapas de origen de actualización automática" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model,name:helpdesk_ticket_partner_response.model_mail_thread +msgid "Email Thread" +msgstr "Hilo de correo" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model,name:helpdesk_ticket_partner_response.model_helpdesk_ticket_team +msgid "Helpdesk Ticket Team" +msgstr "Equipo de ticket Helpdesk" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,help:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autopupdate_src_stage_ids +msgid "" +"If a partner posts a message in a ticket on this stages, the own stage of " +"the ticket will be update by the one set on Autoupdate Destination Stage " +msgstr "" +"Si un socio publica un mensaje en un ticket en esta etapa, la propia etapa " +"del ticket se actualizará según el establecido en la etapa de destino de " +"actualización automática " + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,help:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autopupdate_dest_stage_id +msgid "Target stage on partner's message post " +msgstr "Etapa objetivo en la publicación del mensaje del socio " + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,help:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autoupdate_ticket_stage +msgid "Update ticket stage when a new message is registered by the partner." +msgstr "" +"Etapa de actualización del ticket cuando el socio registra un nuevo mensaje." diff --git a/helpdesk_ticket_partner_response/i18n/helpdesk_ticket_partner_response.pot b/helpdesk_ticket_partner_response/i18n/helpdesk_ticket_partner_response.pot new file mode 100644 index 0000000000..46af89238f --- /dev/null +++ b/helpdesk_ticket_partner_response/i18n/helpdesk_ticket_partner_response.pot @@ -0,0 +1,62 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * helpdesk_ticket_partner_response +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0\n" +"Report-Msgid-Bugs-To: \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_partner_response +#: model:ir.model.fields,field_description:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autoupdate_ticket_stage +#: model_terms:ir.ui.view,arch_db:helpdesk_ticket_partner_response.view_helpdesk_team_form_inherit +msgid "Auto Update Ticket Stage" +msgstr "" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,field_description:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autopupdate_dest_stage_id +msgid "Autoupdate Destination Stage" +msgstr "" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,field_description:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autopupdate_src_stage_ids +msgid "Autoupdate Source Stages" +msgstr "" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model,name:helpdesk_ticket_partner_response.model_mail_thread +msgid "Email Thread" +msgstr "" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model,name:helpdesk_ticket_partner_response.model_helpdesk_ticket +msgid "Helpdesk Ticket" +msgstr "" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model,name:helpdesk_ticket_partner_response.model_helpdesk_ticket_team +msgid "Helpdesk Ticket Team" +msgstr "" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,help:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autopupdate_src_stage_ids +msgid "" +"If a partner posts a message in a ticket on this stages, the own stage of " +"the ticket will be update by the one set on Autoupdate Destination Stage " +msgstr "" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,help:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autopupdate_dest_stage_id +msgid "Target stage on partner's message post " +msgstr "" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,help:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autoupdate_ticket_stage +msgid "Update ticket stage when a new message is registered by the partner." +msgstr "" diff --git a/helpdesk_ticket_partner_response/i18n/it.po b/helpdesk_ticket_partner_response/i18n/it.po new file mode 100644 index 0000000000..d64adbd681 --- /dev/null +++ b/helpdesk_ticket_partner_response/i18n/it.po @@ -0,0 +1,65 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * helpdesk_ticket_partner_response +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2025-02-10 07:53+0000\n" +"Last-Translator: mymage \n" +"Language-Team: none\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.6.2\n" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,field_description:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autoupdate_ticket_stage +#: model_terms:ir.ui.view,arch_db:helpdesk_ticket_partner_response.view_helpdesk_team_form_inherit +msgid "Auto Update Ticket Stage" +msgstr "Aggiorna automaticamente fase ticket" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,field_description:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autopupdate_dest_stage_id +msgid "Autoupdate Destination Stage" +msgstr "Aggiorna automaticamente fase destinazione" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,field_description:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autopupdate_src_stage_ids +msgid "Autoupdate Source Stages" +msgstr "Aggiorna automaticamente fase origine" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model,name:helpdesk_ticket_partner_response.model_mail_thread +msgid "Email Thread" +msgstr "Discussione e-mail" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model,name:helpdesk_ticket_partner_response.model_helpdesk_ticket_team +msgid "Helpdesk Ticket Team" +msgstr "Team ticket assistenza clienti" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,help:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autopupdate_src_stage_ids +msgid "" +"If a partner posts a message in a ticket on this stages, the own stage of " +"the ticket will be update by the one set on Autoupdate Destination Stage " +msgstr "" +"Se un partner invia un messaggio in un ticket in questa fase, la stessa fase " +"del ticket verrà aggiornata a quella impostata in Aggiornamento automatico " +"fase destinazione " + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,help:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autopupdate_dest_stage_id +msgid "Target stage on partner's message post " +msgstr "Fase obiettivo nell'invio messaggio del partner " + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,help:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autoupdate_ticket_stage +msgid "Update ticket stage when a new message is registered by the partner." +msgstr "" +"Aggiorna la fase del ticket quando un nuovo messaggio viene registrato dal " +"partner." diff --git a/helpdesk_ticket_partner_response/i18n/lv.po b/helpdesk_ticket_partner_response/i18n/lv.po new file mode 100644 index 0000000000..3299e42014 --- /dev/null +++ b/helpdesk_ticket_partner_response/i18n/lv.po @@ -0,0 +1,64 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * helpdesk_ticket_partner_response +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n % 10 == 0 || n % 100 >= 11 && n % 100 <= " +"19) ? 0 : ((n % 10 == 1 && n % 100 != 11) ? 1 : 2);\n" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,field_description:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autoupdate_ticket_stage +#: model_terms:ir.ui.view,arch_db:helpdesk_ticket_partner_response.view_helpdesk_team_form_inherit +msgid "Auto Update Ticket Stage" +msgstr "" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,field_description:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autopupdate_dest_stage_id +msgid "Autoupdate Destination Stage" +msgstr "" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,field_description:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autopupdate_src_stage_ids +msgid "Autoupdate Source Stages" +msgstr "" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model,name:helpdesk_ticket_partner_response.model_mail_thread +msgid "Email Thread" +msgstr "" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model,name:helpdesk_ticket_partner_response.model_helpdesk_ticket +msgid "Helpdesk Ticket" +msgstr "" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model,name:helpdesk_ticket_partner_response.model_helpdesk_ticket_team +msgid "Helpdesk Ticket Team" +msgstr "" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,help:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autopupdate_src_stage_ids +msgid "" +"If a partner posts a message in a ticket on this stages, the own stage of " +"the ticket will be update by the one set on Autoupdate Destination Stage " +msgstr "" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,help:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autopupdate_dest_stage_id +msgid "Target stage on partner's message post " +msgstr "" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,help:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autoupdate_ticket_stage +msgid "Update ticket stage when a new message is registered by the partner." +msgstr "" diff --git a/helpdesk_ticket_partner_response/i18n/pt_BR.po b/helpdesk_ticket_partner_response/i18n/pt_BR.po new file mode 100644 index 0000000000..8c3219b722 --- /dev/null +++ b/helpdesk_ticket_partner_response/i18n/pt_BR.po @@ -0,0 +1,58 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * helpdesk_ticket_partner_response +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,field_description:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autoupdate_ticket_stage +#: model_terms:ir.ui.view,arch_db:helpdesk_ticket_partner_response.view_helpdesk_team_form_inherit +msgid "Auto Update Ticket Stage" +msgstr "" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,field_description:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autopupdate_dest_stage_id +msgid "Autoupdate Destination Stage" +msgstr "" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,field_description:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autopupdate_src_stage_ids +msgid "Autoupdate Source Stages" +msgstr "" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model,name:helpdesk_ticket_partner_response.model_mail_thread +msgid "Email Thread" +msgstr "" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model,name:helpdesk_ticket_partner_response.model_helpdesk_ticket_team +msgid "Helpdesk Ticket Team" +msgstr "" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,help:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autopupdate_src_stage_ids +msgid "" +"If a partner posts a message in a ticket on this stages, the own stage of " +"the ticket will be update by the one set on Autoupdate Destination Stage " +msgstr "" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,help:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autopupdate_dest_stage_id +msgid "Target stage on partner's message post " +msgstr "" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,help:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autoupdate_ticket_stage +msgid "Update ticket stage when a new message is registered by the partner." +msgstr "" diff --git a/helpdesk_ticket_partner_response/i18n/tr.po b/helpdesk_ticket_partner_response/i18n/tr.po new file mode 100644 index 0000000000..45fb5b7207 --- /dev/null +++ b/helpdesk_ticket_partner_response/i18n/tr.po @@ -0,0 +1,70 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * helpdesk_ticket_partner_response +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2025-12-01 09:42+0000\n" +"Last-Translator: Betül Öğmen \n" +"Language-Team: none\n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.10.4\n" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,field_description:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autoupdate_ticket_stage +#: model_terms:ir.ui.view,arch_db:helpdesk_ticket_partner_response.view_helpdesk_team_form_inherit +msgid "Auto Update Ticket Stage" +msgstr "Otomatik Güncelleme Destek Kaydı Aşaması" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,field_description:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autopupdate_dest_stage_id +msgid "Autoupdate Destination Stage" +msgstr "Otomatik Güncelleme Hedef Aşaması" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,field_description:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autopupdate_src_stage_ids +msgid "Autoupdate Source Stages" +msgstr "Otomatik Güncelleme Kaynak Aşamaları" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model,name:helpdesk_ticket_partner_response.model_mail_thread +msgid "Email Thread" +msgstr "E-Posta İşlemleri" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model,name:helpdesk_ticket_partner_response.model_helpdesk_ticket +msgid "Helpdesk Ticket" +msgstr "Yardım Masası Talebi" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model,name:helpdesk_ticket_partner_response.model_helpdesk_ticket_team +msgid "Helpdesk Ticket Team" +msgstr "Yardım Masası Destek Kayıtı Ekibi" + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,help:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autopupdate_src_stage_ids +msgid "" +"If a partner posts a message in a ticket on this stages, the own stage of " +"the ticket will be update by the one set on Autoupdate Destination Stage " +msgstr "" +"Bir iş ortağı bu aşamalardaki bir destek kaydına bir mesaj gönderirse, " +"destek kaydın kendi aşaması Otomatik Güncelleme Hedef Aşamasında ayarlanan " +"aşama ile güncellenecektir. " + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,help:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autopupdate_dest_stage_id +msgid "Target stage on partner's message post " +msgstr "İş ortağının mesaj gönderisindeki hedef aşama " + +#. module: helpdesk_ticket_partner_response +#: model:ir.model.fields,help:helpdesk_ticket_partner_response.field_helpdesk_ticket_team__autoupdate_ticket_stage +msgid "Update ticket stage when a new message is registered by the partner." +msgstr "" +"Partner tarafından yeni bir mesaj kaydedildiğinde destek kaydı aşamasını " +"güncelle." diff --git a/helpdesk_ticket_partner_response/models/__init__.py b/helpdesk_ticket_partner_response/models/__init__.py new file mode 100644 index 0000000000..5365f12442 --- /dev/null +++ b/helpdesk_ticket_partner_response/models/__init__.py @@ -0,0 +1,5 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import helpdesk_ticket +from . import helpdesk_ticket_team +from . import mail_thread diff --git a/helpdesk_ticket_partner_response/models/helpdesk_ticket.py b/helpdesk_ticket_partner_response/models/helpdesk_ticket.py new file mode 100644 index 0000000000..3e27648614 --- /dev/null +++ b/helpdesk_ticket_partner_response/models/helpdesk_ticket.py @@ -0,0 +1,19 @@ +# Copyright 2025 Onestein - Anjeel Haria +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import models + + +class HelpdeskTicket(models.Model): + _inherit = "helpdesk.ticket" + + def _message_post_after_hook(self, message, msg_vals): + """Change status of ticket if the required conditions are satisfied""" + if ( + self + and self.env.user.partner_id.id == self.partner_id.id + and self.team_id.autoupdate_ticket_stage + and self.stage_id in self.team_id.autopupdate_src_stage_ids + ): + self.sudo().stage_id = self.team_id.autopupdate_dest_stage_id.id + return super()._message_post_after_hook(message, msg_vals) diff --git a/helpdesk_ticket_partner_response/models/helpdesk_ticket_team.py b/helpdesk_ticket_partner_response/models/helpdesk_ticket_team.py new file mode 100644 index 0000000000..9ec12e6058 --- /dev/null +++ b/helpdesk_ticket_partner_response/models/helpdesk_ticket_team.py @@ -0,0 +1,29 @@ +# Copyright 2024 Antoni Marroig(APSL-Nagarro) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class HelpdeskTicketTeam(models.Model): + _inherit = "helpdesk.ticket.team" + + autoupdate_ticket_stage = fields.Boolean( + string="Auto Update Ticket Stage", + help="Update ticket stage when a new message is registered by the partner.", + default=False, + ) + autopupdate_src_stage_ids = fields.Many2many( + comodel_name="helpdesk.ticket.stage", + relation="change_stage_partner_response", + string="Autoupdate Source Stages", + help=( + "If a partner posts a message in a ticket on this stages, " + "the own stage of the ticket will be update by the one set on " + "Autoupdate Destination Stage " + ), + ) + autopupdate_dest_stage_id = fields.Many2one( + "helpdesk.ticket.stage", + string="Autoupdate Destination Stage", + help=("Target stage on partner's message post "), + ) diff --git a/helpdesk_ticket_partner_response/models/mail_thread.py b/helpdesk_ticket_partner_response/models/mail_thread.py new file mode 100644 index 0000000000..9890f6bb50 --- /dev/null +++ b/helpdesk_ticket_partner_response/models/mail_thread.py @@ -0,0 +1,33 @@ +from odoo import api, models + + +class MailThread(models.AbstractModel): + _inherit = "mail.thread" + + @api.model + def _message_route_process(self, message, message_dict, routes): + self.change_status_ticket_from_portal(routes) + return super()._message_route_process(message, message_dict, routes) + + def change_status_ticket_from_portal(self, routes): + if routes and routes[0][0] == "helpdesk.ticket": + ticket_id = routes[0][1] + if ticket_id: + ticket = self.env["helpdesk.ticket"].sudo().browse(int(ticket_id)) + if ticket and routes[0][3]: + partner_id = ( + self.env["res.users"] + .search([("id", "=", routes[0][3])], limit=1) + .partner_id.id + ) + if partner_id: + if ( + ticket + and partner_id == ticket.partner_id.id + and ticket.team_id.autoupdate_ticket_stage + and ticket.stage_id + in ticket.team_id.autopupdate_src_stage_ids + ): + ticket.stage_id = ( + ticket.team_id.autopupdate_dest_stage_id.id + ) diff --git a/helpdesk_ticket_partner_response/pyproject.toml b/helpdesk_ticket_partner_response/pyproject.toml new file mode 100644 index 0000000000..4231d0cccb --- /dev/null +++ b/helpdesk_ticket_partner_response/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/helpdesk_ticket_partner_response/readme/CONFIGURE.md b/helpdesk_ticket_partner_response/readme/CONFIGURE.md new file mode 100644 index 0000000000..9814f70715 --- /dev/null +++ b/helpdesk_ticket_partner_response/readme/CONFIGURE.md @@ -0,0 +1,2 @@ +Set ticket source and destination stages from where if a message by the partner is posted autopdation have to be triggered. +To setup this configuration you have to go to Helpdesk > Settings > Teams > Autoupdate ticket stage \ No newline at end of file diff --git a/helpdesk_ticket_partner_response/readme/CONTRIBUTORS.md b/helpdesk_ticket_partner_response/readme/CONTRIBUTORS.md new file mode 100644 index 0000000000..ce96c12a15 --- /dev/null +++ b/helpdesk_ticket_partner_response/readme/CONTRIBUTORS.md @@ -0,0 +1,2 @@ +\[APSL-Nagarro\](): + - Antoni Marroig \<\> diff --git a/helpdesk_ticket_partner_response/readme/DESCRIPTION.md b/helpdesk_ticket_partner_response/readme/DESCRIPTION.md new file mode 100644 index 0000000000..c041a49b49 --- /dev/null +++ b/helpdesk_ticket_partner_response/readme/DESCRIPTION.md @@ -0,0 +1 @@ +Autoupdate ticket stage when a partner posts a message on the ticket from the portal or by sending an email. \ No newline at end of file diff --git a/helpdesk_ticket_partner_response/readme/USAGE.md b/helpdesk_ticket_partner_response/readme/USAGE.md new file mode 100644 index 0000000000..eddfc1908b --- /dev/null +++ b/helpdesk_ticket_partner_response/readme/USAGE.md @@ -0,0 +1 @@ +This module adds the option from helpdesk team to automate the ticket stage update when a partner posts a message on the same ticket. This is useful when exists an specific stage for the tickets that his last update is answer by the partner. diff --git a/helpdesk_ticket_partner_response/static/description/icon.png b/helpdesk_ticket_partner_response/static/description/icon.png new file mode 100644 index 0000000000..3a0328b516 Binary files /dev/null and b/helpdesk_ticket_partner_response/static/description/icon.png differ diff --git a/helpdesk_ticket_partner_response/static/description/icon.svg b/helpdesk_ticket_partner_response/static/description/icon.svg new file mode 100644 index 0000000000..a7a26d0932 --- /dev/null +++ b/helpdesk_ticket_partner_response/static/description/icon.svg @@ -0,0 +1,79 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/helpdesk_ticket_partner_response/static/description/index.html b/helpdesk_ticket_partner_response/static/description/index.html new file mode 100644 index 0000000000..a17b8a43db --- /dev/null +++ b/helpdesk_ticket_partner_response/static/description/index.html @@ -0,0 +1,450 @@ + + + + + +README.rst + + + +
+ + + +Odoo Community Association + +
+

Helpdesk Ticket Partner Response

+ +

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

+

Autoupdate ticket stage when a partner posts a message on the ticket +from the portal or by sending an email.

+

Table of contents

+ +
+

Configuration

+

Set ticket source and destination stages from where if a message by the +partner is posted autopdation have to be triggered. To setup this +configuration you have to go to Helpdesk > Settings > Teams > Autoupdate +ticket stage

+
+
+

Usage

+

This module adds the option from helpdesk team to automate the ticket +stage update when a partner posts a message on the same ticket. This is +useful when exists an specific stage for the tickets that his last +update is answer by the partner.

+
+
+

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

+
    +
  • Antoni Marroig
  • +
  • APSL-Nagarro
  • +
+
+
+

Contributors

+

[APSL-Nagarro](https://apsl.tech):

+ +
+
+

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.

+

Current maintainer:

+

peluko00

+

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_ticket_partner_response/tests/__init__.py b/helpdesk_ticket_partner_response/tests/__init__.py new file mode 100644 index 0000000000..189e05392b --- /dev/null +++ b/helpdesk_ticket_partner_response/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import test_partner_response diff --git a/helpdesk_ticket_partner_response/tests/test_partner_response.py b/helpdesk_ticket_partner_response/tests/test_partner_response.py new file mode 100644 index 0000000000..39c532a1f2 --- /dev/null +++ b/helpdesk_ticket_partner_response/tests/test_partner_response.py @@ -0,0 +1,129 @@ +# Copyright 2024 Antoni Marroig(APSL-Nagarro) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo.addons.base.tests.common import HttpCaseWithUserPortal + +MAIL_TEMPLATE = """Return-Path: +To: {to} +Received: by mail1.openerp.com (Postfix, from userid 10002) + id 5DF9ABFB2A; Fri, 30 May 2025 16:16:39 +0200 (CEST) +From: {email_from} +Subject: {subject} +MIME-Version: 1.0 +Content-Type: multipart/alternative; + boundary="----=_Part_4200734_24778174.1344608186754" +Date: Fri, 30 May 2025 14:16:26 +0000 +Message-ID: {msg_id} +------=_Part_4200734_24778174.1344608186754 +Content-Type: text/plain; charset=utf-8 +Content-Transfer-Encoding: quoted-printable + +Thanks for the update. Please go ahead ! + +-- +Your Dear Customer +------=_Part_4200734_24778174.1344608186754 +Content-Type: text/html; charset=utf-8 +Content-Transfer-Encoding: quoted-printable + + + + =20 + + =20 + =20 + +

Thanks for the update. Please go ahead !

+ +

--
+ Your Dear Customer +

+ + +------=_Part_4200734_24778174.1344608186754-- +""" + + +class TestCustomerResponse(HttpCaseWithUserPortal): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.helpdesk_team1 = cls.env["helpdesk.ticket.team"].create( + {"name": "Test Team"} + ) + cls.stage_new = cls.env.ref("helpdesk_mgmt.helpdesk_ticket_stage_new") + cls.stage_in_progress = cls.env.ref( + "helpdesk_mgmt.helpdesk_ticket_stage_in_progress" + ) + cls.stage_done = cls.env.ref("helpdesk_mgmt.helpdesk_ticket_stage_done") + cls.helpdesk_team1.update( + { + "autoupdate_ticket_stage": True, + "autopupdate_src_stage_ids": [(4, cls.stage_in_progress.id)], + "autopupdate_dest_stage_id": cls.stage_done.id, + } + ) + + def _create_ticket(self, team, partner): + ticket = self.env["helpdesk.ticket"].create( + [ + { + "name": f"Ticket ({team.name})", + "description": "Description", + "team_id": team.id, + "partner_id": partner.id, + "priority": "1", + } + ] + ) + return ticket + + def message_process(self): + MailThread = self.env["mail.thread"] + message = MAIL_TEMPLATE.format( + to=self.env.user.email, + subject="Your ticket has been created !!", + email_from=self.partner_portal.email, + msg_id="168242744424.20.2028152230359369389@dd607af32154", + ) + MailThread.message_process( + model="helpdesk.ticket", + message=message, + save_original=False, + strip_attachments=True, + thread_id=self.ticket.id, + ) + + def test_change_stage_customer_answered(self): + self.ticket_id = self._create_ticket(self.helpdesk_team1, self.partner_portal) + self.ticket_id.stage_id = self.stage_in_progress + self.ticket_id.with_user(self.user_portal).message_post(body="Test message") + self.assertEqual(self.ticket_id.stage_id, self.stage_done) + + def test_no_change_stage_customer_answered(self): + self.ticket_id = self._create_ticket(self.helpdesk_team1, self.partner_portal) + self.ticket_id.with_user(self.user_portal).message_post(body="Test message") + self.assertEqual(self.ticket_id.stage_id, self.stage_new) + + def test_change_stage_deactivated(self): + self.helpdesk_team1.autoupdate_ticket_stage = False + self.ticket_id = self._create_ticket(self.helpdesk_team1, self.partner_portal) + self.ticket_id.with_user(self.user_portal).message_post(body="Test message") + self.assertEqual(self.ticket_id.stage_id, self.stage_new) + + def test_change_stage_customer_answered_through_mail(self): + self.ticket = self._create_ticket(self.helpdesk_team1, self.partner_portal) + self.ticket.stage_id = self.stage_in_progress + self.message_process() + self.assertEqual(self.ticket.stage_id, self.stage_done) + + def test_no_change_stage_customer_answered_through_mail(self): + self.ticket = self._create_ticket(self.helpdesk_team1, self.partner_portal) + self.message_process() + self.assertEqual(self.ticket.stage_id, self.stage_new) + + def test_change_stage_deactivated_through_mail(self): + self.helpdesk_team1.autoupdate_ticket_stage = False + self.ticket = self._create_ticket(self.helpdesk_team1, self.partner_portal) + self.message_process() + self.assertEqual(self.ticket.stage_id, self.stage_new) diff --git a/helpdesk_ticket_partner_response/views/helpdesk_ticket_team.xml b/helpdesk_ticket_partner_response/views/helpdesk_ticket_team.xml new file mode 100644 index 0000000000..9ba087b487 --- /dev/null +++ b/helpdesk_ticket_partner_response/views/helpdesk_ticket_team.xml @@ -0,0 +1,33 @@ + + + + helpdesk.ticket.team.form.inherit + helpdesk.ticket.team + + + + + + + + + + + + + + + +