From 251c7393fb62bbbbfe9c26c7ac6beb2f5660eab3 Mon Sep 17 00:00:00 2001 From: oca-git-bot Date: Mon, 12 Dec 2022 00:24:13 +0100 Subject: [PATCH 01/12] [16.0][ADD] hr_timesheet_name_customer:custom desc This module added new field Customer Description in list view In this module in report pdf instead of Description you can see Customer Description. This field can see only Timesheets:Administrator --- hr_timesheet_name_customer/README.rst | 103 ++++ hr_timesheet_name_customer/__init__.py | 1 + hr_timesheet_name_customer/__manifest__.py | 17 + .../i18n/hr_timesheet_name_customer.pot | 49 ++ hr_timesheet_name_customer/models/__init__.py | 1 + .../models/hr_timesheet_name_customer.py | 17 + .../readme/DESCRIPTION.rst | 7 + hr_timesheet_name_customer/readme/HISTORY.rst | 5 + hr_timesheet_name_customer/readme/USAGE.rst | 5 + .../report/name_customer_template.xml | 83 ++++ .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 442 ++++++++++++++++++ hr_timesheet_name_customer/tests/__init__.py | 2 + hr_timesheet_name_customer/tests/common.py | 79 ++++ .../tests/test_name_customer.py | 35 ++ .../hr_timesheet_name_customer_views.xml | 17 + 16 files changed, 863 insertions(+) create mode 100644 hr_timesheet_name_customer/README.rst create mode 100644 hr_timesheet_name_customer/__init__.py create mode 100644 hr_timesheet_name_customer/__manifest__.py create mode 100644 hr_timesheet_name_customer/i18n/hr_timesheet_name_customer.pot create mode 100644 hr_timesheet_name_customer/models/__init__.py create mode 100644 hr_timesheet_name_customer/models/hr_timesheet_name_customer.py create mode 100644 hr_timesheet_name_customer/readme/DESCRIPTION.rst create mode 100644 hr_timesheet_name_customer/readme/HISTORY.rst create mode 100644 hr_timesheet_name_customer/readme/USAGE.rst create mode 100644 hr_timesheet_name_customer/report/name_customer_template.xml create mode 100644 hr_timesheet_name_customer/static/description/icon.png create mode 100644 hr_timesheet_name_customer/static/description/index.html create mode 100644 hr_timesheet_name_customer/tests/__init__.py create mode 100644 hr_timesheet_name_customer/tests/common.py create mode 100644 hr_timesheet_name_customer/tests/test_name_customer.py create mode 100644 hr_timesheet_name_customer/views/hr_timesheet_name_customer_views.xml diff --git a/hr_timesheet_name_customer/README.rst b/hr_timesheet_name_customer/README.rst new file mode 100644 index 0000000000..c1ede8f877 --- /dev/null +++ b/hr_timesheet_name_customer/README.rst @@ -0,0 +1,103 @@ +============================== +Timesheet Description Customer +============================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Ftimesheet-lightgray.png?logo=github + :target: https://github.com/OCA/timesheet/tree/16.0/hr_timesheet_name_customer + :alt: OCA/timesheet +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/timesheet-16-0/timesheet-16-0-hr_timesheet_name_customer + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/117/16.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module adds additional field "Description Customer" which is used for customer timesheet reports. +This might be useful if you need to translate original timesheet description or add some additional information into it while leaving original description intact. +This field is visible only for "Timesheets: Administrator" group. + +By default this field will be populated from the "Description" field of the timesheet. + +New report "Timesheet Customer" is used to print timesheets with "Customer Description" instead of the "Description" field. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +To use this module you need to: + +#. Modify "Description Customer" field value. +#. Select timesheets you want to print add choose "Timesheets Customer" report. +#. "Description" column values will be populated from the "Description Customer" field. + +Changelog +========= + +16.0.1.0.0 (2023-02-26) +~~~~~~~~~~~~~~~~~~~~~~~ + +* [ADD] Initial release for Odoo 16. + (`#568 `_) + +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 smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Cetmix + +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-solo4games| image:: https://github.com/solo4games.png?size=40px + :target: https://github.com/solo4games + :alt: solo4games +.. |maintainer-CetmixGitDrone| image:: https://github.com/CetmixGitDrone.png?size=40px + :target: https://github.com/CetmixGitDrone + :alt: CetmixGitDrone + +Current `maintainers `__: + +|maintainer-solo4games| |maintainer-CetmixGitDrone| + +This module is part of the `OCA/timesheet `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/hr_timesheet_name_customer/__init__.py b/hr_timesheet_name_customer/__init__.py new file mode 100644 index 0000000000..0650744f6b --- /dev/null +++ b/hr_timesheet_name_customer/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/hr_timesheet_name_customer/__manifest__.py b/hr_timesheet_name_customer/__manifest__.py new file mode 100644 index 0000000000..3dce212ed4 --- /dev/null +++ b/hr_timesheet_name_customer/__manifest__.py @@ -0,0 +1,17 @@ +{ + "name": "Timesheet Description Customer", + "summary": "Add ‘Description Customer’ field for timesheets", + "version": "16.0.1.0.0", + "category": "Timesheet", + "website": "https://github.com/OCA/timesheet", + "maintainers": ["solo4games", "CetmixGitDrone"], + "author": "Odoo Community Association (OCA), Cetmix", + "license": "LGPL-3", + "application": False, + "installable": True, + "depends": ["hr_timesheet"], + "data": [ + "views/hr_timesheet_name_customer_views.xml", + "report/name_customer_template.xml", + ], +} diff --git a/hr_timesheet_name_customer/i18n/hr_timesheet_name_customer.pot b/hr_timesheet_name_customer/i18n/hr_timesheet_name_customer.pot new file mode 100644 index 0000000000..8df8fab00b --- /dev/null +++ b/hr_timesheet_name_customer/i18n/hr_timesheet_name_customer.pot @@ -0,0 +1,49 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_timesheet_name_customer +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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: hr_timesheet_name_customer +#: model_terms:ir.ui.view,arch_db:hr_timesheet_name_customer.name_customer_table +msgid "Description" +msgstr "" + +#. module: hr_timesheet_name_customer +#: model:ir.model,name:hr_timesheet_name_customer.model_account_analytic_line +msgid "Analytic Line" +msgstr "" + +#. module: hr_timesheet_name_customer +#: model:ir.model.fields,field_description:hr_timesheet_name_customer.field_account_analytic_line__name_customer +msgid "Customer Description" +msgstr "" + +#. module: hr_timesheet_name_customer +#: model_terms:ir.ui.view,arch_db:hr_timesheet_name_customer.report_timesheet_custom +msgid "Project" +msgstr "" + +#. module: hr_timesheet_name_customer +#: model:ir.actions.report,name:hr_timesheet_name_customer.timesheet_report_name_custom +msgid "Timesheet Customer" +msgstr "" + +#. module: hr_timesheet_name_customer +#: model_terms:ir.ui.view,arch_db:hr_timesheet_name_customer.report_timesheet_custom +msgid "Timesheets" +msgstr "" + +#. module: hr_timesheet_name_customer +#: model_terms:ir.ui.view,arch_db:hr_timesheet_name_customer.report_timesheet_custom +msgid "for the" +msgstr "" diff --git a/hr_timesheet_name_customer/models/__init__.py b/hr_timesheet_name_customer/models/__init__.py new file mode 100644 index 0000000000..0aa7ac196f --- /dev/null +++ b/hr_timesheet_name_customer/models/__init__.py @@ -0,0 +1 @@ +from . import hr_timesheet_name_customer diff --git a/hr_timesheet_name_customer/models/hr_timesheet_name_customer.py b/hr_timesheet_name_customer/models/hr_timesheet_name_customer.py new file mode 100644 index 0000000000..d766ce3a7f --- /dev/null +++ b/hr_timesheet_name_customer/models/hr_timesheet_name_customer.py @@ -0,0 +1,17 @@ +# Copyright 2023-nowdays Cetmix OU (https://cetmix.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) +from odoo import api, fields, models + + +class NameCustomer(models.Model): + _inherit = "account.analytic.line" + + name_customer = fields.Char(string="Customer Description") + """override create method, initialize name_customer""" + + @api.model_create_multi + def create(self, vals_list): + for vals in vals_list: + if not vals.get("name_customer"): + vals["name_customer"] = vals["name"] + return super(NameCustomer, self).create(vals_list) diff --git a/hr_timesheet_name_customer/readme/DESCRIPTION.rst b/hr_timesheet_name_customer/readme/DESCRIPTION.rst new file mode 100644 index 0000000000..90aa7c8322 --- /dev/null +++ b/hr_timesheet_name_customer/readme/DESCRIPTION.rst @@ -0,0 +1,7 @@ +This module adds additional field "Description Customer" which is used for customer timesheet reports. +This might be useful if you need to translate original timesheet description or add some additional information into it while leaving original description intact. +This field is visible only for "Timesheets: Administrator" group. + +By default this field will be populated from the "Description" field of the timesheet. + +New report "Timesheet Customer" is used to print timesheets with "Customer Description" instead of the "Description" field. diff --git a/hr_timesheet_name_customer/readme/HISTORY.rst b/hr_timesheet_name_customer/readme/HISTORY.rst new file mode 100644 index 0000000000..4edc788a54 --- /dev/null +++ b/hr_timesheet_name_customer/readme/HISTORY.rst @@ -0,0 +1,5 @@ +16.0.1.0.0 (2023-02-26) +~~~~~~~~~~~~~~~~~~~~~~~ + +* [ADD] Initial release for Odoo 16. + (`#568 `_) diff --git a/hr_timesheet_name_customer/readme/USAGE.rst b/hr_timesheet_name_customer/readme/USAGE.rst new file mode 100644 index 0000000000..311b8bce06 --- /dev/null +++ b/hr_timesheet_name_customer/readme/USAGE.rst @@ -0,0 +1,5 @@ +To use this module you need to: + +#. Modify "Description Customer" field value. +#. Select timesheets you want to print add choose "Timesheets Customer" report. +#. "Description" column values will be populated from the "Description Customer" field. diff --git a/hr_timesheet_name_customer/report/name_customer_template.xml b/hr_timesheet_name_customer/report/name_customer_template.xml new file mode 100644 index 0000000000..3b728f7429 --- /dev/null +++ b/hr_timesheet_name_customer/report/name_customer_template.xml @@ -0,0 +1,83 @@ + + + + + + + + + Timesheet Customer + account.analytic.line + qweb-pdf + hr_timesheet_name_customer.report_timesheet_custom + report_timesheet_custom + + report + + diff --git a/hr_timesheet_name_customer/static/description/icon.png b/hr_timesheet_name_customer/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/hr_timesheet_name_customer/static/description/index.html b/hr_timesheet_name_customer/static/description/index.html new file mode 100644 index 0000000000..8a99f820be --- /dev/null +++ b/hr_timesheet_name_customer/static/description/index.html @@ -0,0 +1,442 @@ + + + + + + +Timesheet Description Customer + + + +
+

Timesheet Description Customer

+ + +

Beta License: LGPL-3 OCA/timesheet Translate me on Weblate Try me on Runbot

+

This module adds additional field “Description Customer” which is used for customer timesheet reports. +This might be useful if you need to translate original timesheet description or add some additional information into it while leaving original description intact. +This field is visible only for “Timesheets: Administrator” group.

+

By default this field will be populated from the “Description” field of the timesheet.

+

New report “Timesheet Customer” is used to print timesheets with “Customer Description” instead of the “Description” field.

+

Table of contents

+ +
+

Usage

+

To use this module you need to:

+
    +
  1. Modify “Description Customer” field value.
  2. +
  3. Select timesheets you want to print add choose “Timesheets Customer” report.
  4. +
  5. “Description” column values will be populated from the “Description Customer” field.
  6. +
+
+
+

Changelog

+
+

16.0.1.0.0 (2023-02-26)

+
    +
  • [ADD] Initial release for Odoo 16. +(#568)
  • +
+
+
+
+

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 smashing it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Cetmix
  • +
+
+
+

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 maintainers:

+

solo4games CetmixGitDrone

+

This module is part of the OCA/timesheet project on GitHub.

+

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

+
+
+
+ + diff --git a/hr_timesheet_name_customer/tests/__init__.py b/hr_timesheet_name_customer/tests/__init__.py new file mode 100644 index 0000000000..41567ecdfe --- /dev/null +++ b/hr_timesheet_name_customer/tests/__init__.py @@ -0,0 +1,2 @@ +from . import test_name_customer +from . import common diff --git a/hr_timesheet_name_customer/tests/common.py b/hr_timesheet_name_customer/tests/common.py new file mode 100644 index 0000000000..4f9d2175f1 --- /dev/null +++ b/hr_timesheet_name_customer/tests/common.py @@ -0,0 +1,79 @@ +# Copyright 2023-nowdays Cetmix OU (https://cetmix.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) +from odoo.tests.common import TransactionCase + + +class TestCommonNameCustomer(TransactionCase): + @classmethod + def setUpClass(cls): + super(TestCommonNameCustomer, cls).setUpClass() + + # customer partner + cls.partner = cls.env["res.partner"].create( + { + "name": "Customer For Analytic Account", + "email": "customer@task.com", + "phone": "42", + } + ) + + cls.analytic_plan = cls.env["account.analytic.plan"].create( + { + "name": "Plan Test", + "company_id": False, + } + ) + cls.analytic_account = cls.env["account.analytic.account"].create( + { + "name": "Analytic Account for Test Customer", + "partner_id": cls.partner.id, + "plan_id": cls.analytic_plan.id, + "code": "TEST", + } + ) + + # project and tasks + cls.project_customer = cls.env["project.project"].create( + { + "name": "Project X", + "allow_timesheets": True, + "partner_id": cls.partner.id, + "analytic_account_id": cls.analytic_account.id, + } + ) + cls.task1 = cls.env["project.task"].create( + { + "name": "Task One", + "priority": "0", + "kanban_state": "normal", + "project_id": cls.project_customer.id, + "partner_id": cls.partner.id, + } + ) + cls.task2 = cls.env["project.task"].create( + { + "name": "Task Two", + "priority": "1", + "kanban_state": "done", + "project_id": cls.project_customer.id, + } + ) + # users + cls.user_employee = cls.env["res.users"].create( + { + "name": "User Employee", + "login": "user_employee", + "email": "useremployee@test.com", + "groups_id": [ + (6, 0, [cls.env.ref("hr_timesheet.group_hr_timesheet_user").id]) + ], + } + ) + + # employees + cls.empl_employee = cls.env["hr.employee"].create( + { + "name": "User Empl Employee", + "user_id": cls.user_employee.id, + } + ) diff --git a/hr_timesheet_name_customer/tests/test_name_customer.py b/hr_timesheet_name_customer/tests/test_name_customer.py new file mode 100644 index 0000000000..d08af9d261 --- /dev/null +++ b/hr_timesheet_name_customer/tests/test_name_customer.py @@ -0,0 +1,35 @@ +# Copyright 2023-nowdays Cetmix OU (https://cetmix.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) +from .common import TestCommonNameCustomer + + +class TestTimesheet(TestCommonNameCustomer): + def test_custom_name(self): + """Test when Customer Description set or not: check name and name_customer equality""" + Timesheet = self.env["account.analytic.line"] + timesheet1 = Timesheet.with_user(self.user_employee).create( + { + "project_id": self.project_customer.id, + "task_id": self.task1.id, + "name": "my first timesheet", + } + ) + self.assertEqual( + timesheet1.name, + timesheet1.name_customer, + "Description and Custom Description should be the same", + ) + + timesheet2 = Timesheet.with_user(self.user_employee).create( + { + "project_id": self.project_customer.id, + "task_id": self.task2.id, + "name": "my second timesheet", + "name_customer": "my second timesheet with another description", + } + ) + self.assertNotEqual( + timesheet2.name, + timesheet2.name_customer, + "Description and Custom Description should be different", + ) diff --git a/hr_timesheet_name_customer/views/hr_timesheet_name_customer_views.xml b/hr_timesheet_name_customer/views/hr_timesheet_name_customer_views.xml new file mode 100644 index 0000000000..ffe9210469 --- /dev/null +++ b/hr_timesheet_name_customer/views/hr_timesheet_name_customer_views.xml @@ -0,0 +1,17 @@ + + + + Name Customer + account.analytic.line + + + + + + + + From 7fb758ae31e1d5ba59e1b8683f17769d08b113d0 Mon Sep 17 00:00:00 2001 From: mymage Date: Sat, 8 Jul 2023 08:40:12 +0000 Subject: [PATCH 02/12] Added translation using Weblate (Italian) --- hr_timesheet_name_customer/i18n/it.po | 52 +++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 hr_timesheet_name_customer/i18n/it.po diff --git a/hr_timesheet_name_customer/i18n/it.po b/hr_timesheet_name_customer/i18n/it.po new file mode 100644 index 0000000000..a623b11363 --- /dev/null +++ b/hr_timesheet_name_customer/i18n/it.po @@ -0,0 +1,52 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_timesheet_name_customer +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-07-08 08:43+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: hr_timesheet_name_customer +#: model_terms:ir.ui.view,arch_db:hr_timesheet_name_customer.name_customer_table +msgid "Description" +msgstr "Descrizione" + +#. module: hr_timesheet_name_customer +#: model:ir.model,name:hr_timesheet_name_customer.model_account_analytic_line +msgid "Analytic Line" +msgstr "Riga analitica" + +#. module: hr_timesheet_name_customer +#: model:ir.model.fields,field_description:hr_timesheet_name_customer.field_account_analytic_line__name_customer +msgid "Customer Description" +msgstr "Descrizione cliente" + +#. module: hr_timesheet_name_customer +#: model_terms:ir.ui.view,arch_db:hr_timesheet_name_customer.report_timesheet_custom +msgid "Project" +msgstr "Progetto" + +#. module: hr_timesheet_name_customer +#: model:ir.actions.report,name:hr_timesheet_name_customer.timesheet_report_name_custom +msgid "Timesheet Customer" +msgstr "Foglio ore cliente" + +#. module: hr_timesheet_name_customer +#: model_terms:ir.ui.view,arch_db:hr_timesheet_name_customer.report_timesheet_custom +msgid "Timesheets" +msgstr "Foglio ore" + +#. module: hr_timesheet_name_customer +#: model_terms:ir.ui.view,arch_db:hr_timesheet_name_customer.report_timesheet_custom +msgid "for the" +msgstr "per il" From ea9c77b186ff4eed9a2ae8bd4b3a1291f3727af1 Mon Sep 17 00:00:00 2001 From: Ivorra78 Date: Sun, 27 Aug 2023 17:19:51 +0000 Subject: [PATCH 03/12] Translated using Weblate (Spanish) Currently translated at 100.0% (7 of 7 strings) Translation: timesheet-16.0/timesheet-16.0-hr_timesheet_name_customer Translate-URL: https://translation.odoo-community.org/projects/timesheet-16-0/timesheet-16-0-hr_timesheet_name_customer/es/ --- hr_timesheet_name_customer/README.rst | 15 +++--- hr_timesheet_name_customer/i18n/es.po | 52 +++++++++++++++++++ .../static/description/index.html | 46 ++++++++-------- 3 files changed, 85 insertions(+), 28 deletions(-) create mode 100644 hr_timesheet_name_customer/i18n/es.po diff --git a/hr_timesheet_name_customer/README.rst b/hr_timesheet_name_customer/README.rst index c1ede8f877..6f9b2ce00a 100644 --- a/hr_timesheet_name_customer/README.rst +++ b/hr_timesheet_name_customer/README.rst @@ -2,10 +2,13 @@ Timesheet Description Customer ============================== -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:a139b3ee9578cb57ab839882d7f212465c84cd1bb3e1afc9136455876194e7f3 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ Timesheet Description Customer .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png :target: https://translation.odoo-community.org/projects/timesheet-16-0/timesheet-16-0-hr_timesheet_name_customer :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/117/16.0 - :alt: Try me on Runbot +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/timesheet&target_branch=16.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| This module adds additional field "Description Customer" which is used for customer timesheet reports. This might be useful if you need to translate original timesheet description or add some additional information into it while leaving original description intact. @@ -61,7 +64,7 @@ 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 smashing it by providing a detailed and welcomed +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. diff --git a/hr_timesheet_name_customer/i18n/es.po b/hr_timesheet_name_customer/i18n/es.po new file mode 100644 index 0000000000..e376f6dd54 --- /dev/null +++ b/hr_timesheet_name_customer/i18n/es.po @@ -0,0 +1,52 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_timesheet_name_customer +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-09-03 05:14+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: hr_timesheet_name_customer +#: model_terms:ir.ui.view,arch_db:hr_timesheet_name_customer.name_customer_table +msgid "Description" +msgstr "Descripción" + +#. module: hr_timesheet_name_customer +#: model:ir.model,name:hr_timesheet_name_customer.model_account_analytic_line +msgid "Analytic Line" +msgstr "Línea Analítica" + +#. module: hr_timesheet_name_customer +#: model:ir.model.fields,field_description:hr_timesheet_name_customer.field_account_analytic_line__name_customer +msgid "Customer Description" +msgstr "Descripción del Cliente" + +#. module: hr_timesheet_name_customer +#: model_terms:ir.ui.view,arch_db:hr_timesheet_name_customer.report_timesheet_custom +msgid "Project" +msgstr "Proyecto" + +#. module: hr_timesheet_name_customer +#: model:ir.actions.report,name:hr_timesheet_name_customer.timesheet_report_name_custom +msgid "Timesheet Customer" +msgstr "Hoja de horas del cliente" + +#. module: hr_timesheet_name_customer +#: model_terms:ir.ui.view,arch_db:hr_timesheet_name_customer.report_timesheet_custom +msgid "Timesheets" +msgstr "Hojas de Tiempo" + +#. module: hr_timesheet_name_customer +#: model_terms:ir.ui.view,arch_db:hr_timesheet_name_customer.report_timesheet_custom +msgid "for the" +msgstr "para la/el" diff --git a/hr_timesheet_name_customer/static/description/index.html b/hr_timesheet_name_customer/static/description/index.html index 8a99f820be..092f020aa9 100644 --- a/hr_timesheet_name_customer/static/description/index.html +++ b/hr_timesheet_name_customer/static/description/index.html @@ -1,20 +1,20 @@ - + - + Timesheet Description Customer -
-

Timesheet Description Customer

+
+ + +Odoo Community Association + +
+

Timesheet Description Customer

-

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

+

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

This module adds additional field “Description Customer” which is used for customer timesheet reports. It also shows the “Description Customer” instead of the “Description” field in the customer portal. By default @@ -396,18 +401,18 @@

Timesheet Description Customer

-

Use Cases / Context

+

Use Cases / Context

Sometimes you might need to add different description for customer timesheets while keeping the original description for internal use. Eg your team records timesheets in English but your customer prefers to see timesheets in French.

-

Configuration

+

Configuration

No configuration is required.

-

Usage

+

Usage

New field “Description Customer” is added to the timesheet list and form views. This field is visible only for “Timesheets/Administrator” group. If this field is not set, the “Description” field value will be @@ -420,9 +425,9 @@

Usage

-

Changelog

+

Changelog

-

16.0.1.0.0 (2023-02-26)

+

16.0.1.0.0 (2023-02-26)

-

Bug Tracker

+

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 @@ -438,15 +443,15 @@

Bug Tracker

Do not contact contributors directly about support or help with technical issues.

-

Credits

+

Credits

-

Authors

+

Authors

  • Cetmix
-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association @@ -459,5 +464,6 @@

Maintainers

+
From 3dfc227e489a98e3a9ebaebf4bbd818c848cf5db Mon Sep 17 00:00:00 2001 From: uncannycs Date: Wed, 20 May 2026 18:11:58 +0530 Subject: [PATCH 12/12] [19.0] [MIG] hr_timesheet_name_customer : Migration to 19.0. --- hr_timesheet_name_customer/README.rst | 10 ++-- hr_timesheet_name_customer/__manifest__.py | 2 +- .../models/hr_timesheet_name_customer.py | 5 +- .../static/description/index.html | 6 +-- hr_timesheet_name_customer/tests/common.py | 4 +- .../tests/test_name_customer.py | 51 +++++++++++++------ 6 files changed, 49 insertions(+), 29 deletions(-) diff --git a/hr_timesheet_name_customer/README.rst b/hr_timesheet_name_customer/README.rst index e2e1eb23e2..3a563af632 100644 --- a/hr_timesheet_name_customer/README.rst +++ b/hr_timesheet_name_customer/README.rst @@ -21,13 +21,13 @@ Timesheet Description Customer :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html :alt: License: LGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Ftimesheet-lightgray.png?logo=github - :target: https://github.com/OCA/timesheet/tree/18.0/hr_timesheet_name_customer + :target: https://github.com/OCA/timesheet/tree/19.0/hr_timesheet_name_customer :alt: OCA/timesheet .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/timesheet-18-0/timesheet-18-0-hr_timesheet_name_customer + :target: https://translation.odoo-community.org/projects/timesheet-19-0/timesheet-19-0-hr_timesheet_name_customer :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/timesheet&target_branch=18.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/timesheet&target_branch=19.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -88,7 +88,7 @@ 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 `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -113,6 +113,6 @@ 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/timesheet `_ project on GitHub. +This module is part of the `OCA/timesheet `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/hr_timesheet_name_customer/__manifest__.py b/hr_timesheet_name_customer/__manifest__.py index 5fd2638bdb..25d62d6862 100644 --- a/hr_timesheet_name_customer/__manifest__.py +++ b/hr_timesheet_name_customer/__manifest__.py @@ -1,7 +1,7 @@ { "name": "Timesheet Description Customer", "summary": "Add 'Description Customer' field for timesheets", - "version": "18.0.1.0.0", + "version": "19.0.1.0.0", "category": "Timesheet", "website": "https://github.com/OCA/timesheet", "author": "Odoo Community Association (OCA), Cetmix", diff --git a/hr_timesheet_name_customer/models/hr_timesheet_name_customer.py b/hr_timesheet_name_customer/models/hr_timesheet_name_customer.py index d73744a1a5..70c06beeea 100644 --- a/hr_timesheet_name_customer/models/hr_timesheet_name_customer.py +++ b/hr_timesheet_name_customer/models/hr_timesheet_name_customer.py @@ -15,6 +15,5 @@ class NameCustomer(models.Model): @api.depends("name") def _compute_name_customer(self): - for rec in self: - if not rec.name_customer and rec.name: - rec.name_customer = rec.name + for rec in self.filtered(lambda r: r.name and r.name != "/"): + rec.name_customer = rec.name diff --git a/hr_timesheet_name_customer/static/description/index.html b/hr_timesheet_name_customer/static/description/index.html index 3b066dbcd3..af8fea7f5c 100644 --- a/hr_timesheet_name_customer/static/description/index.html +++ b/hr_timesheet_name_customer/static/description/index.html @@ -374,7 +374,7 @@

Timesheet Description Customer

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:ddb3b4ce95637877dc62ac4a21cfef0021f6ad8da4aaf6d34f3a9b26ad050b46 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

+

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

This module adds additional field “Description Customer” which is used for customer timesheet reports. It also shows the “Description Customer” instead of the “Description” field in the customer portal. By default @@ -439,7 +439,7 @@

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.

+feedback.

Do not contact contributors directly about support or help with technical issues.

@@ -459,7 +459,7 @@

Maintainers

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

+

This module is part of the OCA/timesheet project on GitHub.

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

diff --git a/hr_timesheet_name_customer/tests/common.py b/hr_timesheet_name_customer/tests/common.py index 8a1e32988f..a0f97573ad 100644 --- a/hr_timesheet_name_customer/tests/common.py +++ b/hr_timesheet_name_customer/tests/common.py @@ -7,7 +7,7 @@ class TestCommonNameCustomer(TransactionCase): @classmethod def setUpClass(cls): super().setUpClass() - + cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True)) # customer partner cls.partner = cls.env["res.partner"].create( { @@ -60,7 +60,7 @@ def setUpClass(cls): "name": "User Employee", "login": "user_employee", "email": "useremployee@test.com", - "groups_id": [ + "group_ids": [ (6, 0, [cls.env.ref("hr_timesheet.group_hr_timesheet_user").id]) ], } diff --git a/hr_timesheet_name_customer/tests/test_name_customer.py b/hr_timesheet_name_customer/tests/test_name_customer.py index 259721a42f..f100802c1d 100644 --- a/hr_timesheet_name_customer/tests/test_name_customer.py +++ b/hr_timesheet_name_customer/tests/test_name_customer.py @@ -4,33 +4,54 @@ class TestTimesheet(TestCommonNameCustomer): - def test_custom_name(self): - """Test when Customer Description set or not: - check name and name_customer equality""" + def test_01_create_default(self): + """Test unset Customer Description: check name equality""" Timesheet = self.env["account.analytic.line"] - timesheet1 = Timesheet.with_user(self.user_employee).create( + timesheet = Timesheet.with_user(self.user_employee).create( { "project_id": self.project_customer.id, "task_id": self.task1.id, "name": "my first timesheet", } ) - self.assertEqual( - timesheet1.name, - timesheet1.name_customer, - "Description and Custom Description should be the same", + self.assertEqual(timesheet.name_customer, "my first timesheet") + + def test_02_update_recompute(self): + """Test if name_customer recomputes when name changes""" + Timesheet = self.env["account.analytic.line"] + timesheet = Timesheet.with_user(self.user_employee).create( + { + "project_id": self.project_customer.id, + "task_id": self.task1.id, + "name": "initial", + } ) + timesheet.name = "updated" + # Force recompute if necessary + timesheet._compute_name_customer() + self.assertEqual(timesheet.name_customer, "updated") - timesheet2 = Timesheet.with_user(self.user_employee).create( + def test_03_explicit_value(self): + """Test when Customer Description is explicitly set""" + Timesheet = self.env["account.analytic.line"] + timesheet = Timesheet.with_user(self.user_employee).create( { "project_id": self.project_customer.id, "task_id": self.task2.id, - "name": "my second timesheet", - "name_customer": "my second timesheet with another description", + "name": "technical name", + "name_customer": "customer friendly name", } ) - self.assertNotEqual( - timesheet2.name, - timesheet2.name_customer, - "Description and Custom Description should be different", + self.assertEqual(timesheet.name_customer, "customer friendly name") + + def test_04_empty_name(self): + """Test with empty name""" + Timesheet = self.env["account.analytic.line"] + timesheet = Timesheet.with_user(self.user_employee).create( + { + "project_id": self.project_customer.id, + "task_id": self.task1.id, + "name": False, + } ) + self.assertFalse(timesheet.name_customer)