diff --git a/mail_activity_done/README.rst b/mail_activity_done/README.rst new file mode 100644 index 000000000..08705326e --- /dev/null +++ b/mail_activity_done/README.rst @@ -0,0 +1,95 @@ +================== +Mail Activity Done +================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:5a0ce87bede46ee3ef4aca69080182899705bb737283ce6f2e369921f635edf0 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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-LGPL--3-blue.png + :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html + :alt: License: LGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmail-lightgray.png?logo=github + :target: https://github.com/OCA/mail/tree/18.0/mail_activity_done + :alt: OCA/mail +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/mail-18-0/mail-18-0-mail_activity_done + :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/mail&target_branch=18.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module implements the capability to keep activities that have been +completed, for future reporting, by setting them with the boolean +'Done'. + +Since Odoo 18.0, this is supported natively by Odoo, depending on the +configuration of the activity types. This module ensures that the option +is active on all existing and new activity types in your setup. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +To use this module, you do not need to do anything. + +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 +------- + +* ForgeFlow + +Contributors +------------ + +- Jordi Ballester + (`www.forgeflow.com `__) +- Eduardo Magdalena (C2i Change 2 improve + http://www.c2i.es) +- Radovan Skolnik (https://www.kema.sk) +- Manuel Regidor (https://www.sygel.es) +- Bernat Puig + (`www.forgeflow.com `__) +- Stefan Rijnhart + +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/mail `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/mail_activity_done/__init__.py b/mail_activity_done/__init__.py new file mode 100644 index 000000000..cc6b6354a --- /dev/null +++ b/mail_activity_done/__init__.py @@ -0,0 +1,2 @@ +from . import models +from .hooks import post_init_hook diff --git a/mail_activity_done/__manifest__.py b/mail_activity_done/__manifest__.py new file mode 100644 index 000000000..bec254929 --- /dev/null +++ b/mail_activity_done/__manifest__.py @@ -0,0 +1,12 @@ +# Copyright 2018-22 ForgeFlow +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). +{ + "name": "Mail Activity Done", + "version": "18.0.1.0.0", + "author": "ForgeFlow, Odoo Community Association (OCA)", + "license": "LGPL-3", + "category": "Discuss", + "website": "https://github.com/OCA/mail", + "depends": ["mail"], + "post_init_hook": "post_init_hook", +} diff --git a/mail_activity_done/hooks.py b/mail_activity_done/hooks.py new file mode 100644 index 000000000..af0520754 --- /dev/null +++ b/mail_activity_done/hooks.py @@ -0,0 +1,18 @@ +# Copyright 2018-22 ForgeFlow +# Copyright 2018 Odoo, S.A. +# License AGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + + +def _set_keep_done(cr): + """Set keep_done to true for all existing activity types""" + cr.execute( + """ + update mail_activity_type + set keep_done = true + where keep_done is not true + """ + ) + + +def post_init_hook(env): + _set_keep_done(env.cr) diff --git a/mail_activity_done/i18n/es.po b/mail_activity_done/i18n/es.po new file mode 100644 index 000000000..c453e069d --- /dev/null +++ b/mail_activity_done/i18n/es.po @@ -0,0 +1,101 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_activity_done +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-11-08 13:36+0000\n" +"Last-Translator: Ivorra78 \n" +"Language-Team: none\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 4.17\n" + +#. module: mail_activity_done +#: model:ir.model.fields,field_description:mail_activity_done.field_mail_activity__active +msgid "Active" +msgstr "Activo" + +#. module: mail_activity_done +#: model:ir.model.fields,field_description:mail_activity_done.field_account_bank_statement_line__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_account_journal__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_account_move__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_account_payment__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_account_setup_bank_manual_config__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_mail_activity_mixin__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_mailing_mailing__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_product_pricelist__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_product_product__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_product_template__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_res_partner__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_res_partner_bank__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_res_users__activity_ids +msgid "Activities" +msgstr "Actividades" + +#. module: mail_activity_done +#: model:ir.model,name:mail_activity_done.model_mail_activity +msgid "Activity" +msgstr "Actividad" + +#. module: mail_activity_done +#: model:ir.model,name:mail_activity_done.model_mail_activity_mixin +msgid "Activity Mixin" +msgstr "Mezclador de Actividad" + +#. module: mail_activity_done +#: model_terms:ir.ui.view,arch_db:mail_activity_done.mail_activity_view_search +#: model_terms:ir.ui.view,arch_db:mail_activity_done.res_partner_view_search_inherit_mail +msgid "Completed Activities" +msgstr "Actividades Completadas" + +#. module: mail_activity_done +#: model:ir.model.fields,field_description:mail_activity_done.field_mail_activity__date_done +msgid "Completed Date" +msgstr "Completado Fecha" + +#. module: mail_activity_done +#: model:ir.model.fields,field_description:mail_activity_done.field_mail_activity__done +#: model:ir.model.fields.selection,name:mail_activity_done.selection__mail_activity__state__done +msgid "Done" +msgstr "Hecho" + +#. module: mail_activity_done +#: model_terms:ir.ui.view,arch_db:mail_activity_done.res_partner_view_search_inherit_mail +msgid "Open Activities" +msgstr "Actividades Abiertas" + +#. module: mail_activity_done +#: model:ir.model.fields,field_description:mail_activity_done.field_mail_activity__state +msgid "State" +msgstr "Estado" + +#. module: mail_activity_done +#: model:ir.model,name:mail_activity_done.model_res_users +msgid "User" +msgstr "Usuario" + +#, python-format +#~ msgid "%d days overdue" +#~ msgstr "%d días de retraso" + +#, python-format +#~ msgid "Due in %d days" +#~ msgstr "Vencimiento en %d días" + +#, python-format +#~ msgid "Today" +#~ msgstr "Hoy" + +#, python-format +#~ msgid "Tomorrow" +#~ msgstr "Mañana" + +#, python-format +#~ msgid "Yesterday" +#~ msgstr "Ayer" diff --git a/mail_activity_done/i18n/fi.po b/mail_activity_done/i18n/fi.po new file mode 100644 index 000000000..12f8ea8bf --- /dev/null +++ b/mail_activity_done/i18n/fi.po @@ -0,0 +1,101 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_activity_done +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-01-22 16:35+0000\n" +"Last-Translator: Miku Laitinen \n" +"Language-Team: none\n" +"Language: fi\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 4.17\n" + +#. module: mail_activity_done +#: model:ir.model.fields,field_description:mail_activity_done.field_mail_activity__active +msgid "Active" +msgstr "Aktiivinen" + +#. module: mail_activity_done +#: model:ir.model.fields,field_description:mail_activity_done.field_account_bank_statement_line__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_account_journal__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_account_move__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_account_payment__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_account_setup_bank_manual_config__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_mail_activity_mixin__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_mailing_mailing__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_product_pricelist__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_product_product__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_product_template__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_res_partner__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_res_partner_bank__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_res_users__activity_ids +msgid "Activities" +msgstr "Toimenpiteet" + +#. module: mail_activity_done +#: model:ir.model,name:mail_activity_done.model_mail_activity +msgid "Activity" +msgstr "Toimenpide" + +#. module: mail_activity_done +#: model:ir.model,name:mail_activity_done.model_mail_activity_mixin +msgid "Activity Mixin" +msgstr "Toimenpide-mixin" + +#. module: mail_activity_done +#: model_terms:ir.ui.view,arch_db:mail_activity_done.mail_activity_view_search +#: model_terms:ir.ui.view,arch_db:mail_activity_done.res_partner_view_search_inherit_mail +msgid "Completed Activities" +msgstr "Tehdyt toimenpiteet" + +#. module: mail_activity_done +#: model:ir.model.fields,field_description:mail_activity_done.field_mail_activity__date_done +msgid "Completed Date" +msgstr "Merkattu tehdyksi" + +#. module: mail_activity_done +#: model:ir.model.fields,field_description:mail_activity_done.field_mail_activity__done +#: model:ir.model.fields.selection,name:mail_activity_done.selection__mail_activity__state__done +msgid "Done" +msgstr "Tehty" + +#. module: mail_activity_done +#: model_terms:ir.ui.view,arch_db:mail_activity_done.res_partner_view_search_inherit_mail +msgid "Open Activities" +msgstr "Avoimet toimenpiteet" + +#. module: mail_activity_done +#: model:ir.model.fields,field_description:mail_activity_done.field_mail_activity__state +msgid "State" +msgstr "Tila" + +#. module: mail_activity_done +#: model:ir.model,name:mail_activity_done.model_res_users +msgid "User" +msgstr "Käyttäjä" + +#, python-format +#~ msgid "%d days overdue" +#~ msgstr "%d päivää myöhässä" + +#, python-format +#~ msgid "Due in %d days" +#~ msgstr "Erääntyy %d päivän päästä" + +#, python-format +#~ msgid "Today" +#~ msgstr "Tänään" + +#, python-format +#~ msgid "Tomorrow" +#~ msgstr "Huomenna" + +#, python-format +#~ msgid "Yesterday" +#~ msgstr "Eilen" diff --git a/mail_activity_done/i18n/fr.po b/mail_activity_done/i18n/fr.po new file mode 100644 index 000000000..678bc2320 --- /dev/null +++ b/mail_activity_done/i18n/fr.po @@ -0,0 +1,101 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_activity_done +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-03-14 13:29+0000\n" +"Last-Translator: Houzéfa Abbasbhay \n" +"Language-Team: none\n" +"Language: fr\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 4.17\n" + +#. module: mail_activity_done +#: model:ir.model.fields,field_description:mail_activity_done.field_mail_activity__active +msgid "Active" +msgstr "Actif" + +#. module: mail_activity_done +#: model:ir.model.fields,field_description:mail_activity_done.field_account_bank_statement_line__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_account_journal__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_account_move__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_account_payment__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_account_setup_bank_manual_config__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_mail_activity_mixin__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_mailing_mailing__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_product_pricelist__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_product_product__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_product_template__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_res_partner__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_res_partner_bank__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_res_users__activity_ids +msgid "Activities" +msgstr "Activités" + +#. module: mail_activity_done +#: model:ir.model,name:mail_activity_done.model_mail_activity +msgid "Activity" +msgstr "Activité" + +#. module: mail_activity_done +#: model:ir.model,name:mail_activity_done.model_mail_activity_mixin +msgid "Activity Mixin" +msgstr "Activité - Mixin" + +#. module: mail_activity_done +#: model_terms:ir.ui.view,arch_db:mail_activity_done.mail_activity_view_search +#: model_terms:ir.ui.view,arch_db:mail_activity_done.res_partner_view_search_inherit_mail +msgid "Completed Activities" +msgstr "Activités réalisées" + +#. module: mail_activity_done +#: model:ir.model.fields,field_description:mail_activity_done.field_mail_activity__date_done +msgid "Completed Date" +msgstr "Date de réalisation" + +#. module: mail_activity_done +#: model:ir.model.fields,field_description:mail_activity_done.field_mail_activity__done +#: model:ir.model.fields.selection,name:mail_activity_done.selection__mail_activity__state__done +msgid "Done" +msgstr "Réalisé" + +#. module: mail_activity_done +#: model_terms:ir.ui.view,arch_db:mail_activity_done.res_partner_view_search_inherit_mail +msgid "Open Activities" +msgstr "Activités ouvertes" + +#. module: mail_activity_done +#: model:ir.model.fields,field_description:mail_activity_done.field_mail_activity__state +msgid "State" +msgstr "État" + +#. module: mail_activity_done +#: model:ir.model,name:mail_activity_done.model_res_users +msgid "User" +msgstr "Utilisateur" + +#, python-format +#~ msgid "%d days overdue" +#~ msgstr "%d jours de retard" + +#, python-format +#~ msgid "Due in %d days" +#~ msgstr "Dû dans %d jours" + +#, python-format +#~ msgid "Today" +#~ msgstr "Aujourd'hui" + +#, python-format +#~ msgid "Tomorrow" +#~ msgstr "Demain" + +#, python-format +#~ msgid "Yesterday" +#~ msgstr "Hier" diff --git a/mail_activity_done/i18n/hu.po b/mail_activity_done/i18n/hu.po new file mode 100644 index 000000000..508bc75d5 --- /dev/null +++ b/mail_activity_done/i18n/hu.po @@ -0,0 +1,104 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_activity_done +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-04-16 14:36+0000\n" +"Last-Translator: Tamás Dombos \n" +"Language-Team: none\n" +"Language: hu\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 4.3.2\n" + +#. module: mail_activity_done +#: model:ir.model.fields,field_description:mail_activity_done.field_mail_activity__active +msgid "Active" +msgstr "Aktív" + +#. module: mail_activity_done +#: model:ir.model.fields,field_description:mail_activity_done.field_account_bank_statement_line__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_account_journal__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_account_move__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_account_payment__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_account_setup_bank_manual_config__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_mail_activity_mixin__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_mailing_mailing__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_product_pricelist__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_product_product__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_product_template__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_res_partner__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_res_partner_bank__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_res_users__activity_ids +msgid "Activities" +msgstr "Tevékenységek" + +#. module: mail_activity_done +#: model:ir.model,name:mail_activity_done.model_mail_activity +msgid "Activity" +msgstr "Tevékenység" + +#. module: mail_activity_done +#: model:ir.model,name:mail_activity_done.model_mail_activity_mixin +msgid "Activity Mixin" +msgstr "Tevékenység mixin" + +#. module: mail_activity_done +#: model_terms:ir.ui.view,arch_db:mail_activity_done.mail_activity_view_search +#: model_terms:ir.ui.view,arch_db:mail_activity_done.res_partner_view_search_inherit_mail +msgid "Completed Activities" +msgstr "Elkészült tevékenységek" + +#. module: mail_activity_done +#: model:ir.model.fields,field_description:mail_activity_done.field_mail_activity__date_done +msgid "Completed Date" +msgstr "Elkészülés dátuma" + +#. module: mail_activity_done +#: model:ir.model.fields,field_description:mail_activity_done.field_mail_activity__done +#: model:ir.model.fields.selection,name:mail_activity_done.selection__mail_activity__state__done +msgid "Done" +msgstr "Kész" + +#. module: mail_activity_done +#: model_terms:ir.ui.view,arch_db:mail_activity_done.res_partner_view_search_inherit_mail +msgid "Open Activities" +msgstr "Nyitott tevékenységek" + +#. module: mail_activity_done +#: model:ir.model.fields,field_description:mail_activity_done.field_mail_activity__state +msgid "State" +msgstr "Állapot" + +#. module: mail_activity_done +#: model:ir.model,name:mail_activity_done.model_res_users +msgid "User" +msgstr "" + +#, python-format +#~ msgid "%d days overdue" +#~ msgstr "%d nap késésben" + +#, python-format +#~ msgid "Due in %d days" +#~ msgstr "%d napon belül esedékes" + +#, python-format +#~ msgid "Today" +#~ msgstr "Ma" + +#, python-format +#~ msgid "Tomorrow" +#~ msgstr "Holnap" + +#, python-format +#~ msgid "Yesterday" +#~ msgstr "Tegnap" + +#~ msgid "Users" +#~ msgstr "Felhasználók" diff --git a/mail_activity_done/i18n/it.po b/mail_activity_done/i18n/it.po new file mode 100644 index 000000000..216ba8b57 --- /dev/null +++ b/mail_activity_done/i18n/it.po @@ -0,0 +1,101 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_activity_done +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-12-07 12:35+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 4.17\n" + +#. module: mail_activity_done +#: model:ir.model.fields,field_description:mail_activity_done.field_mail_activity__active +msgid "Active" +msgstr "Attiva" + +#. module: mail_activity_done +#: model:ir.model.fields,field_description:mail_activity_done.field_account_bank_statement_line__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_account_journal__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_account_move__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_account_payment__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_account_setup_bank_manual_config__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_mail_activity_mixin__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_mailing_mailing__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_product_pricelist__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_product_product__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_product_template__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_res_partner__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_res_partner_bank__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_res_users__activity_ids +msgid "Activities" +msgstr "Attività" + +#. module: mail_activity_done +#: model:ir.model,name:mail_activity_done.model_mail_activity +msgid "Activity" +msgstr "Attività" + +#. module: mail_activity_done +#: model:ir.model,name:mail_activity_done.model_mail_activity_mixin +msgid "Activity Mixin" +msgstr "Mixin attività" + +#. module: mail_activity_done +#: model_terms:ir.ui.view,arch_db:mail_activity_done.mail_activity_view_search +#: model_terms:ir.ui.view,arch_db:mail_activity_done.res_partner_view_search_inherit_mail +msgid "Completed Activities" +msgstr "Attività completate" + +#. module: mail_activity_done +#: model:ir.model.fields,field_description:mail_activity_done.field_mail_activity__date_done +msgid "Completed Date" +msgstr "Data di completamento" + +#. module: mail_activity_done +#: model:ir.model.fields,field_description:mail_activity_done.field_mail_activity__done +#: model:ir.model.fields.selection,name:mail_activity_done.selection__mail_activity__state__done +msgid "Done" +msgstr "Eseguita" + +#. module: mail_activity_done +#: model_terms:ir.ui.view,arch_db:mail_activity_done.res_partner_view_search_inherit_mail +msgid "Open Activities" +msgstr "Attività aperte" + +#. module: mail_activity_done +#: model:ir.model.fields,field_description:mail_activity_done.field_mail_activity__state +msgid "State" +msgstr "Stato" + +#. module: mail_activity_done +#: model:ir.model,name:mail_activity_done.model_res_users +msgid "User" +msgstr "Utente" + +#, python-format +#~ msgid "%d days overdue" +#~ msgstr "%d giorni di ritardo" + +#, python-format +#~ msgid "Due in %d days" +#~ msgstr "Scade tra %d giorni" + +#, python-format +#~ msgid "Today" +#~ msgstr "Oggi" + +#, python-format +#~ msgid "Tomorrow" +#~ msgstr "Domani" + +#, python-format +#~ msgid "Yesterday" +#~ msgstr "Ieri" diff --git a/mail_activity_done/i18n/mail_activity_done.pot b/mail_activity_done/i18n/mail_activity_done.pot new file mode 100644 index 000000000..e1ee3f825 --- /dev/null +++ b/mail_activity_done/i18n/mail_activity_done.pot @@ -0,0 +1,78 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_activity_done +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.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: mail_activity_done +#: model:ir.model.fields,field_description:mail_activity_done.field_mail_activity__active +msgid "Active" +msgstr "" + +#. module: mail_activity_done +#: model:ir.model.fields,field_description:mail_activity_done.field_account_bank_statement_line__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_account_journal__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_account_move__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_account_payment__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_account_setup_bank_manual_config__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_mail_activity_mixin__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_mailing_mailing__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_product_pricelist__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_product_product__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_product_template__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_res_partner__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_res_partner_bank__activity_ids +#: model:ir.model.fields,field_description:mail_activity_done.field_res_users__activity_ids +msgid "Activities" +msgstr "" + +#. module: mail_activity_done +#: model:ir.model,name:mail_activity_done.model_mail_activity +msgid "Activity" +msgstr "" + +#. module: mail_activity_done +#: model:ir.model,name:mail_activity_done.model_mail_activity_mixin +msgid "Activity Mixin" +msgstr "" + +#. module: mail_activity_done +#: model_terms:ir.ui.view,arch_db:mail_activity_done.mail_activity_view_search +#: model_terms:ir.ui.view,arch_db:mail_activity_done.res_partner_view_search_inherit_mail +msgid "Completed Activities" +msgstr "" + +#. module: mail_activity_done +#: model:ir.model.fields,field_description:mail_activity_done.field_mail_activity__date_done +msgid "Completed Date" +msgstr "" + +#. module: mail_activity_done +#: model:ir.model.fields,field_description:mail_activity_done.field_mail_activity__done +#: model:ir.model.fields.selection,name:mail_activity_done.selection__mail_activity__state__done +msgid "Done" +msgstr "" + +#. module: mail_activity_done +#: model_terms:ir.ui.view,arch_db:mail_activity_done.res_partner_view_search_inherit_mail +msgid "Open Activities" +msgstr "" + +#. module: mail_activity_done +#: model:ir.model.fields,field_description:mail_activity_done.field_mail_activity__state +msgid "State" +msgstr "" + +#. module: mail_activity_done +#: model:ir.model,name:mail_activity_done.model_res_users +msgid "User" +msgstr "" diff --git a/mail_activity_done/migrations/18.0.1.0.0/post-migration.py b/mail_activity_done/migrations/18.0.1.0.0/post-migration.py new file mode 100644 index 000000000..28a7c1a1e --- /dev/null +++ b/mail_activity_done/migrations/18.0.1.0.0/post-migration.py @@ -0,0 +1,31 @@ +import logging + +from odoo.addons.mail_activity_done.hooks import _set_keep_done + + +def migrate(cr, version): + """Deal with possible inconsistencies between active and done. + + Set done activities that were not archived to archived. + Warn about possible archived activities that were not done. + """ + logger = logging.getLogger("odoo.addons.mail_activity_done.migrations") + _set_keep_done(cr) + cr.execute( + "update mail_activity set active = false where active and done;", + ) + if cr.rowcount: + logger.info( + f"{cr.rowcount} done activities were previously unarchived. They are " + "now set back to archived for Odoo to still consider them done.", + ) + cr.execute( + "select id from mail_activity where active is not true and done is not true;", + ) + ids = [str(row[0]) for row in cr.fetchall()] + if ids: + logger.warning( + f"{len(ids)} activities were previously archived but not " + "done. Odoo will consider them done now (activities with ids " + f"{','.join(ids)})" + ) diff --git a/mail_activity_done/models/__init__.py b/mail_activity_done/models/__init__.py new file mode 100644 index 000000000..d4bcae014 --- /dev/null +++ b/mail_activity_done/models/__init__.py @@ -0,0 +1 @@ +from . import mail_activity_type diff --git a/mail_activity_done/models/mail_activity_type.py b/mail_activity_done/models/mail_activity_type.py new file mode 100644 index 000000000..31a739978 --- /dev/null +++ b/mail_activity_done/models/mail_activity_type.py @@ -0,0 +1,9 @@ +# Copyright 2018-22 ForgeFlow +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). +from odoo import fields, models + + +class MailActivityType(models.Model): + _inherit = "mail.activity.type" + + keep_done = fields.Boolean(default=True) diff --git a/mail_activity_done/pyproject.toml b/mail_activity_done/pyproject.toml new file mode 100644 index 000000000..4231d0ccc --- /dev/null +++ b/mail_activity_done/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/mail_activity_done/readme/CONTRIBUTORS.md b/mail_activity_done/readme/CONTRIBUTORS.md new file mode 100644 index 000000000..923f96eaf --- /dev/null +++ b/mail_activity_done/readme/CONTRIBUTORS.md @@ -0,0 +1,8 @@ +- Jordi Ballester \<\> + (www.forgeflow.com) +- Eduardo Magdalena \<\> (C2i Change 2 improve + ) +- Radovan Skolnik \<\> () +- Manuel Regidor \<\> () +- Bernat Puig \<\> (www.forgeflow.com) +- Stefan Rijnhart \<\> diff --git a/mail_activity_done/readme/DESCRIPTION.md b/mail_activity_done/readme/DESCRIPTION.md new file mode 100644 index 000000000..8367c5fb3 --- /dev/null +++ b/mail_activity_done/readme/DESCRIPTION.md @@ -0,0 +1,7 @@ +This module implements the capability to keep activities that have been +completed, for future reporting, by setting them with the boolean +'Done'. + +Since Odoo 18.0, this is supported natively by Odoo, depending on the +configuration of the activity types. This module ensures that the option is +active on all existing and new activity types in your setup. diff --git a/mail_activity_done/readme/USAGE.md b/mail_activity_done/readme/USAGE.md new file mode 100644 index 000000000..5aad00202 --- /dev/null +++ b/mail_activity_done/readme/USAGE.md @@ -0,0 +1 @@ +To use this module, you do not need to do anything. diff --git a/mail_activity_done/static/description/icon.png b/mail_activity_done/static/description/icon.png new file mode 100644 index 000000000..3a0328b51 Binary files /dev/null and b/mail_activity_done/static/description/icon.png differ diff --git a/mail_activity_done/static/description/index.html b/mail_activity_done/static/description/index.html new file mode 100644 index 000000000..cf7b18015 --- /dev/null +++ b/mail_activity_done/static/description/index.html @@ -0,0 +1,441 @@ + + + + + +Mail Activity Done + + + +
+

Mail Activity Done

+ + +

Beta License: LGPL-3 OCA/mail Translate me on Weblate Try me on Runboat

+

This module implements the capability to keep activities that have been +completed, for future reporting, by setting them with the boolean +‘Done’.

+

Since Odoo 18.0, this is supported natively by Odoo, depending on the +configuration of the activity types. This module ensures that the option +is active on all existing and new activity types in your setup.

+

Table of contents

+ +
+

Usage

+

To use this module, you do not need to do anything.

+
+
+

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

+
    +
  • ForgeFlow
  • +
+
+
+

Contributors

+ +
+
+

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/mail project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/mail_activity_done/tests/__init__.py b/mail_activity_done/tests/__init__.py new file mode 100644 index 000000000..1f81564cb --- /dev/null +++ b/mail_activity_done/tests/__init__.py @@ -0,0 +1 @@ +from . import test_mail_activity_done diff --git a/mail_activity_done/tests/test_mail_activity_done.py b/mail_activity_done/tests/test_mail_activity_done.py new file mode 100644 index 000000000..20b1408f7 --- /dev/null +++ b/mail_activity_done/tests/test_mail_activity_done.py @@ -0,0 +1,98 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +import os + +from odoo.modules.migration import load_script +from odoo.tools import mute_logger + +from odoo.addons.base.tests.common import BaseCommon + + +class TestMailActivityDone(BaseCommon): + @classmethod + def setUpClass(cls): + super().setUpClass() + + def test_existing_type(self): + """The post init hook has enabled keeping done activities on all types""" + self.assertTrue(self.env.ref("mail.mail_activity_data_email").keep_done) + + def test_new_type(self): + """New activities will be configured to keep done activities by default""" + activity_type = self.env["mail.activity.type"].create({"name": __name__}) + self.assertTrue(activity_type.keep_done) + + def test_migration(self): + """The migration script will set keep done for all activity types. + + Also, because in Odoo 18 all archived activities are done, the migration + will delete all archived activities that were not done before. + """ + + # Create two types with a different configuration + activity_type1 = self.env["mail.activity.type"].create( + { + "name": __name__, + "keep_done": False, + } + ) + self.assertFalse(activity_type1.keep_done) + + activity_type2 = self.env["mail.activity.type"].create({"name": __name__}) + + # Create two activities + act1 = self.env["mail.activity"].create( + { + "activity_type_id": activity_type2.id, + "res_id": self.env.user.partner_id.id, + "res_model": "res.partner", + "res_model_id": self.env["ir.model"]._get("res.partner").id, + "user_id": self.env.user.id, + "date_deadline": "2024-01-01", + } + ) + act2 = act1.copy() + act3 = act1.copy() + + # Set one activity done + act1._action_done() + self.assertEqual(act1.state, "done") + + # Set another one as archived + act2.active = False + # Archived activities are always done, which is not correct in this case + self.assertEqual(act2.state, "done") + self.env.flush_all() + + # Ressurect the obsolete 'done' column from 17.0 and set it for act1 + # to distinguish the previously done activity from the mere archived one. + self.env.cr.execute( + """ + alter table mail_activity add column done boolean; + update mail_activity set done = true where id in %(act_ids)s; + """, + {"act_ids": (act1.id, act3.id)}, + ) + # The third activity is an inconsistent state as it is still active + self.assertTrue(act3.active) + + # Run the migration script + pyfile = os.path.join( + "mail_activity_done", + "migrations", + "18.0.1.0.0", + "post-migration.py", + ) + name, ext = os.path.splitext(os.path.basename(pyfile)) + mod = load_script(pyfile, name) + with mute_logger("odoo.addons.mail_activity_done.migrations"): + mod.migrate(self.env.cr, "18.0.1.0.0") + self.env.clear() + + # All types are now configured to keep done activities + self.assertTrue(activity_type1.keep_done) + self.assertTrue(activity_type2.keep_done) + self.assertTrue(act1.exists()) + # Activities that were archived but not done are kept. + self.assertTrue(act2.exists()) + # Activities that were unarchived and done are archived. + self.assertFalse(act3.active)