From 101f3c2c66f74c9cd2a610227bce28126719e83d Mon Sep 17 00:00:00 2001 From: mpascual Date: Thu, 3 Apr 2025 14:13:28 +0200 Subject: [PATCH 01/23] [16.0][ADD] hr_timesheet_type_non_billable: New module hr_timesheet_type_non_billable --- hr_timesheet_type_non_billable/README.rst | 102 ++++ hr_timesheet_type_non_billable/__init__.py | 1 + .../__manifest__.py | 21 + hr_timesheet_type_non_billable/i18n/ca.po | 42 ++ hr_timesheet_type_non_billable/i18n/es.po | 42 ++ .../models/__init__.py | 7 + .../models/account_analytic_line.py | 20 + .../models/project_project.py | 30 ++ .../models/project_task.py | 22 + .../models/project_time_type.py | 10 + .../readme/CONTRIBUTORS.md | 2 + .../readme/DESCRIPTION.md | 2 + .../readme/USAGE.md | 7 + .../static/description/index.html | 444 ++++++++++++++++++ .../tests/__init__.py | 1 + .../test_hr_timesheet_type_non_billable.py | 80 ++++ .../views/project_time_type_view.xml | 29 ++ 17 files changed, 862 insertions(+) create mode 100644 hr_timesheet_type_non_billable/README.rst create mode 100644 hr_timesheet_type_non_billable/__init__.py create mode 100644 hr_timesheet_type_non_billable/__manifest__.py create mode 100644 hr_timesheet_type_non_billable/i18n/ca.po create mode 100644 hr_timesheet_type_non_billable/i18n/es.po create mode 100644 hr_timesheet_type_non_billable/models/__init__.py create mode 100644 hr_timesheet_type_non_billable/models/account_analytic_line.py create mode 100644 hr_timesheet_type_non_billable/models/project_project.py create mode 100644 hr_timesheet_type_non_billable/models/project_task.py create mode 100644 hr_timesheet_type_non_billable/models/project_time_type.py create mode 100644 hr_timesheet_type_non_billable/readme/CONTRIBUTORS.md create mode 100644 hr_timesheet_type_non_billable/readme/DESCRIPTION.md create mode 100644 hr_timesheet_type_non_billable/readme/USAGE.md create mode 100644 hr_timesheet_type_non_billable/static/description/index.html create mode 100644 hr_timesheet_type_non_billable/tests/__init__.py create mode 100644 hr_timesheet_type_non_billable/tests/test_hr_timesheet_type_non_billable.py create mode 100644 hr_timesheet_type_non_billable/views/project_time_type_view.xml diff --git a/hr_timesheet_type_non_billable/README.rst b/hr_timesheet_type_non_billable/README.rst new file mode 100644 index 0000000000..68f500b04d --- /dev/null +++ b/hr_timesheet_type_non_billable/README.rst @@ -0,0 +1,102 @@ +============================== +HR Timesheet Type Non Billable +============================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:b5e48e537c3e9c848d436da70d50711d20a378b6c1632a4b100e9c91d6dd249a + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Ftimesheet-lightgray.png?logo=github + :target: https://github.com/OCA/timesheet/tree/16.0/hr_timesheet_type_non_billable + :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_type_non_billable + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Sometimes you want to add timesheets that are not billable to clients. +With this module you can configure which timesheet type are not billable +so every timesheet with this type won't affect to project and task +remaining time computation. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +1. Go to Project > Configuration > Time Type +2. Create or edit a Time Type and mark it as Non Billable +3. Go to a project and select a task +4. Add planned hours to the task +5. Create a new timesheet with the Time Type you just created +6. You will see that the time you entered on the timesheet is not + discounted on the remaining hours or added in effective hours +7. You can also see project remaining hours are not affected by this non + billable time + +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 +------- + +* APSL-Nagarro + +Contributors +------------ + +[APSL-Nagarro](https://apsl.tech): + +- Miquel Pascual López + +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-mpascuall| image:: https://github.com/mpascuall.png?size=40px + :target: https://github.com/mpascuall + :alt: mpascuall + +Current `maintainer `__: + +|maintainer-mpascuall| + +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_type_non_billable/__init__.py b/hr_timesheet_type_non_billable/__init__.py new file mode 100644 index 0000000000..0650744f6b --- /dev/null +++ b/hr_timesheet_type_non_billable/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/hr_timesheet_type_non_billable/__manifest__.py b/hr_timesheet_type_non_billable/__manifest__.py new file mode 100644 index 0000000000..1e9474896a --- /dev/null +++ b/hr_timesheet_type_non_billable/__manifest__.py @@ -0,0 +1,21 @@ +# Copyright 2025 Miquel Pascual López(APSL-Nagarro) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +{ + "name": "HR Timesheet Type Non Billable", + "version": "16.0.1.0.0", + "category": "Timesheet", + "website": "https://github.com/OCA/timesheet", + "author": "APSL-Nagarro, Odoo Community Association (OCA)", + "maintainers": ["mpascuall"], + "license": "AGPL-3", + "application": False, + "installable": True, + "depends": [ + "hr_timesheet", + "hr_timesheet_time_type", + "sale_timesheet_line_exclude", + ], + "data": [ + "views/project_time_type_view.xml", + ], +} diff --git a/hr_timesheet_type_non_billable/i18n/ca.po b/hr_timesheet_type_non_billable/i18n/ca.po new file mode 100644 index 0000000000..5e915d573b --- /dev/null +++ b/hr_timesheet_type_non_billable/i18n/ca.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_timesheet_type_non_billable +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-04-03 12:08+0000\n" +"PO-Revision-Date: 2025-04-03 12:08+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: hr_timesheet_type_non_billable +#: model:ir.model,name:hr_timesheet_type_non_billable.model_account_analytic_line +msgid "Analytic Line" +msgstr "Línia analítica" + +#. module: hr_timesheet_type_non_billable +#: model:ir.model,name:hr_timesheet_type_non_billable.model_project_time_type +msgid "Define Time Types" +msgstr "Definir ipus de temps" + +#. module: hr_timesheet_type_non_billable +#: model:ir.model.fields,field_description:hr_timesheet_type_non_billable.field_account_analytic_line__non_billable +#: model:ir.model.fields,field_description:hr_timesheet_type_non_billable.field_project_time_type__non_billable +msgid "Non Billable" +msgstr "No Facturable" + +#. module: hr_timesheet_type_non_billable +#: model:ir.model,name:hr_timesheet_type_non_billable.model_project_project +msgid "Project" +msgstr "Projecte" + +#. module: hr_timesheet_type_non_billable +#: model:ir.model,name:hr_timesheet_type_non_billable.model_project_task +msgid "Task" +msgstr "Tasca" diff --git a/hr_timesheet_type_non_billable/i18n/es.po b/hr_timesheet_type_non_billable/i18n/es.po new file mode 100644 index 0000000000..dcd1f92572 --- /dev/null +++ b/hr_timesheet_type_non_billable/i18n/es.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_timesheet_type_non_billable +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-04-03 12:09+0000\n" +"PO-Revision-Date: 2025-04-03 12:09+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: hr_timesheet_type_non_billable +#: model:ir.model,name:hr_timesheet_type_non_billable.model_account_analytic_line +msgid "Analytic Line" +msgstr "Línea analítica" + +#. module: hr_timesheet_type_non_billable +#: model:ir.model,name:hr_timesheet_type_non_billable.model_project_time_type +msgid "Define Time Types" +msgstr "Definir tipos de tiempo" + +#. module: hr_timesheet_type_non_billable +#: model:ir.model.fields,field_description:hr_timesheet_type_non_billable.field_account_analytic_line__non_billable +#: model:ir.model.fields,field_description:hr_timesheet_type_non_billable.field_project_time_type__non_billable +msgid "Non Billable" +msgstr "No Facturable" + +#. module: hr_timesheet_type_non_billable +#: model:ir.model,name:hr_timesheet_type_non_billable.model_project_project +msgid "Project" +msgstr "Proyecto" + +#. module: hr_timesheet_type_non_billable +#: model:ir.model,name:hr_timesheet_type_non_billable.model_project_task +msgid "Task" +msgstr "Tarea" diff --git a/hr_timesheet_type_non_billable/models/__init__.py b/hr_timesheet_type_non_billable/models/__init__.py new file mode 100644 index 0000000000..590b041e60 --- /dev/null +++ b/hr_timesheet_type_non_billable/models/__init__.py @@ -0,0 +1,7 @@ +# Copyright 2025 Miquel Pascual López(APSL-Nagarro) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import project_time_type +from . import account_analytic_line +from . import project_project +from . import project_task diff --git a/hr_timesheet_type_non_billable/models/account_analytic_line.py b/hr_timesheet_type_non_billable/models/account_analytic_line.py new file mode 100644 index 0000000000..7ef9f7c4c5 --- /dev/null +++ b/hr_timesheet_type_non_billable/models/account_analytic_line.py @@ -0,0 +1,20 @@ +# Copyright 2025 Miquel Pascual López(APSL-Nagarro) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class AnalyticLine(models.Model): + _inherit = "account.analytic.line" + + non_billable = fields.Boolean( + related="time_type_id.non_billable", string="Non Billable", readonly=True + ) + + @api.onchange("time_type_id") + def _onchange_time_type_id_non_billable(self): + for line in self: + if line.time_type_id and line.time_type_id.non_billable: + line.exclude_from_sale_order = True + else: + line.exclude_from_sale_order = False diff --git a/hr_timesheet_type_non_billable/models/project_project.py b/hr_timesheet_type_non_billable/models/project_project.py new file mode 100644 index 0000000000..7703ce99ff --- /dev/null +++ b/hr_timesheet_type_non_billable/models/project_project.py @@ -0,0 +1,30 @@ +# Copyright 2025 Miquel Pascual López(APSL-Nagarro) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import api, models + + +class Project(models.Model): + _inherit = "project.project" + + @api.depends("allow_timesheets", "timesheet_ids") + def _compute_remaining_hours(self): + res = super()._compute_remaining_hours() + + timesheets_read_group = self.env["account.analytic.line"]._read_group( + [("project_id", "in", self.ids), ("non_billable", "=", False)], + ["project_id", "unit_amount"], + ["project_id"], + lazy=False, + ) + timesheet_time_dict = { + res["project_id"][0]: res["unit_amount"] for res in timesheets_read_group + } + + for project in self: + project.remaining_hours = project.allocated_hours - timesheet_time_dict.get( + project.id, 0 + ) + project.is_project_overtime = project.remaining_hours < 0 + + return res diff --git a/hr_timesheet_type_non_billable/models/project_task.py b/hr_timesheet_type_non_billable/models/project_task.py new file mode 100644 index 0000000000..ff22dd95d6 --- /dev/null +++ b/hr_timesheet_type_non_billable/models/project_task.py @@ -0,0 +1,22 @@ +# Copyright 2025 Miquel Pascual López(APSL-Nagarro) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import api, models + + +class ProjectTask(models.Model): + _inherit = "project.task" + + @api.depends("timesheet_ids.unit_amount") + def _compute_effective_hours(self): + res = super()._compute_effective_hours() + + for task in self: + non_billable_hours = sum( + timesheet.unit_amount + for timesheet in task.timesheet_ids + if timesheet.non_billable + ) + task.effective_hours -= non_billable_hours + + return res diff --git a/hr_timesheet_type_non_billable/models/project_time_type.py b/hr_timesheet_type_non_billable/models/project_time_type.py new file mode 100644 index 0000000000..c1c6fd10f1 --- /dev/null +++ b/hr_timesheet_type_non_billable/models/project_time_type.py @@ -0,0 +1,10 @@ +# Copyright 2025 Miquel Pascual López(APSL-Nagarro) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class ProjectTimeType(models.Model): + _inherit = "project.time.type" + + non_billable = fields.Boolean(default=False) diff --git a/hr_timesheet_type_non_billable/readme/CONTRIBUTORS.md b/hr_timesheet_type_non_billable/readme/CONTRIBUTORS.md new file mode 100644 index 0000000000..ede77a0fb4 --- /dev/null +++ b/hr_timesheet_type_non_billable/readme/CONTRIBUTORS.md @@ -0,0 +1,2 @@ +\[APSL-Nagarro\](): + - Miquel Pascual López \<\> \ No newline at end of file diff --git a/hr_timesheet_type_non_billable/readme/DESCRIPTION.md b/hr_timesheet_type_non_billable/readme/DESCRIPTION.md new file mode 100644 index 0000000000..1ecbe58ce1 --- /dev/null +++ b/hr_timesheet_type_non_billable/readme/DESCRIPTION.md @@ -0,0 +1,2 @@ +Sometimes you want to add timesheets that are not billable to clients. With this module you can configure which timesheet type are not billable +so every timesheet with this type won't affect to project and task remaining time computation. \ No newline at end of file diff --git a/hr_timesheet_type_non_billable/readme/USAGE.md b/hr_timesheet_type_non_billable/readme/USAGE.md new file mode 100644 index 0000000000..ed1af69fbd --- /dev/null +++ b/hr_timesheet_type_non_billable/readme/USAGE.md @@ -0,0 +1,7 @@ +1. Go to Project > Configuration > Time Type +2. Create or edit a Time Type and mark it as Non Billable +3. Go to a project and select a task +4. Add planned hours to the task +5. Create a new timesheet with the Time Type you just created +5. You will see that the time you entered on the timesheet is not discounted on the remaining hours or added in effective hours +6. You can also see project remaining hours are not affected by this non billable time \ No newline at end of file diff --git a/hr_timesheet_type_non_billable/static/description/index.html b/hr_timesheet_type_non_billable/static/description/index.html new file mode 100644 index 0000000000..ce1b15863c --- /dev/null +++ b/hr_timesheet_type_non_billable/static/description/index.html @@ -0,0 +1,444 @@ + + + + + +HR Timesheet Type Non Billable + + + +
+

HR Timesheet Type Non Billable

+ + +

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

+

Sometimes you want to add timesheets that are not billable to clients. +With this module you can configure which timesheet type are not billable +so every timesheet with this type won’t affect to project and task +remaining time computation.

+

Table of contents

+ +
+

Usage

+
    +
  1. Go to Project > Configuration > Time Type
  2. +
  3. Create or edit a Time Type and mark it as Non Billable
  4. +
  5. Go to a project and select a task
  6. +
  7. Add planned hours to the task
  8. +
  9. Create a new timesheet with the Time Type you just created
  10. +
  11. You will see that the time you entered on the timesheet is not +discounted on the remaining hours or added in effective hours
  12. +
  13. You can also see project remaining hours are not affected by this non +billable time
  14. +
+
+
+

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

+
    +
  • 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:

+

mpascuall

+

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_type_non_billable/tests/__init__.py b/hr_timesheet_type_non_billable/tests/__init__.py new file mode 100644 index 0000000000..c449da17b3 --- /dev/null +++ b/hr_timesheet_type_non_billable/tests/__init__.py @@ -0,0 +1 @@ +from . import test_hr_timesheet_type_non_billable diff --git a/hr_timesheet_type_non_billable/tests/test_hr_timesheet_type_non_billable.py b/hr_timesheet_type_non_billable/tests/test_hr_timesheet_type_non_billable.py new file mode 100644 index 0000000000..479f7955f3 --- /dev/null +++ b/hr_timesheet_type_non_billable/tests/test_hr_timesheet_type_non_billable.py @@ -0,0 +1,80 @@ +from odoo.tests.common import TransactionCase + + +class TestHrTimesheetTypeNonBillable(TransactionCase): + @classmethod + def setUpClass(cls): + + super().setUpClass() + + cls.employee = cls.env["hr.employee"].create( + { + "name": "Test Employee", + } + ) + cls.project = cls.env["project.project"].create( + { + "name": "Test Project", + "allocated_hours": 50, + } + ) + cls.billable_type = cls.env["project.time.type"].create( + { + "name": "Billable", + "non_billable": False, + } + ) + cls.non_billable_type = cls.env["project.time.type"].create( + { + "name": "Non-Billable", + "non_billable": True, + } + ) + cls.task = cls.env["project.task"].create( + { + "name": "Test Task", + "project_id": cls.project.id, + "planned_hours": 10, + } + ) + + def test_non_billable_timesheet(self): + self.env["account.analytic.line"].create( + { + "employee_id": self.employee.id, + "name": "Non-Billable Timesheet", + "project_id": self.project.id, + "task_id": self.task.id, + "unit_amount": 2, + "time_type_id": self.non_billable_type.id, + } + ) + + self.env["account.analytic.line"].create( + { + "employee_id": self.employee.id, + "name": "Billable Timesheet", + "project_id": self.project.id, + "task_id": self.task.id, + "unit_amount": 3, + "time_type_id": self.billable_type.id, + } + ) + + self.assertEqual( + self.task.remaining_hours, + 7, + "Task remaining hours should exclude non-billable timesheets.", + ) + + self.assertEqual( + self.task.effective_hours, + 3, + "Task effective hours should only include billable timesheets.", + ) + + self.assertEqual( + self.project.remaining_hours, + 47, + "Project remaining hours should exclude non-billable timesheets.", + ) diff --git a/hr_timesheet_type_non_billable/views/project_time_type_view.xml b/hr_timesheet_type_non_billable/views/project_time_type_view.xml new file mode 100644 index 0000000000..422ad8b2b8 --- /dev/null +++ b/hr_timesheet_type_non_billable/views/project_time_type_view.xml @@ -0,0 +1,29 @@ + + + project.time.type.tree.inherit + project.time.type + + + + + + + + + + project.time.type.form.inherit + project.time.type + + + + + + + + From be8a8edcaf3807507de2fb800b4ea6abc0773a6b Mon Sep 17 00:00:00 2001 From: oca-ci Date: Mon, 14 Apr 2025 06:32:27 +0000 Subject: [PATCH 02/23] [UPD] Update hr_timesheet_type_non_billable.pot --- hr_timesheet_type_non_billable/i18n/ca.po | 1 + hr_timesheet_type_non_billable/i18n/es.po | 1 + .../i18n/hr_timesheet_type_non_billable.pot | 40 +++++++++++++++++++ 3 files changed, 42 insertions(+) create mode 100644 hr_timesheet_type_non_billable/i18n/hr_timesheet_type_non_billable.pot diff --git a/hr_timesheet_type_non_billable/i18n/ca.po b/hr_timesheet_type_non_billable/i18n/ca.po index 5e915d573b..8808812a6b 100644 --- a/hr_timesheet_type_non_billable/i18n/ca.po +++ b/hr_timesheet_type_non_billable/i18n/ca.po @@ -10,6 +10,7 @@ msgstr "" "PO-Revision-Date: 2025-04-03 12:08+0000\n" "Last-Translator: \n" "Language-Team: \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" diff --git a/hr_timesheet_type_non_billable/i18n/es.po b/hr_timesheet_type_non_billable/i18n/es.po index dcd1f92572..45934503bf 100644 --- a/hr_timesheet_type_non_billable/i18n/es.po +++ b/hr_timesheet_type_non_billable/i18n/es.po @@ -10,6 +10,7 @@ msgstr "" "PO-Revision-Date: 2025-04-03 12:09+0000\n" "Last-Translator: \n" "Language-Team: \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" diff --git a/hr_timesheet_type_non_billable/i18n/hr_timesheet_type_non_billable.pot b/hr_timesheet_type_non_billable/i18n/hr_timesheet_type_non_billable.pot new file mode 100644 index 0000000000..d288d54b49 --- /dev/null +++ b/hr_timesheet_type_non_billable/i18n/hr_timesheet_type_non_billable.pot @@ -0,0 +1,40 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_timesheet_type_non_billable +# +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_type_non_billable +#: model:ir.model,name:hr_timesheet_type_non_billable.model_account_analytic_line +msgid "Analytic Line" +msgstr "" + +#. module: hr_timesheet_type_non_billable +#: model:ir.model,name:hr_timesheet_type_non_billable.model_project_time_type +msgid "Define Time Types" +msgstr "" + +#. module: hr_timesheet_type_non_billable +#: model:ir.model.fields,field_description:hr_timesheet_type_non_billable.field_account_analytic_line__non_billable +#: model:ir.model.fields,field_description:hr_timesheet_type_non_billable.field_project_time_type__non_billable +msgid "Non Billable" +msgstr "" + +#. module: hr_timesheet_type_non_billable +#: model:ir.model,name:hr_timesheet_type_non_billable.model_project_project +msgid "Project" +msgstr "" + +#. module: hr_timesheet_type_non_billable +#: model:ir.model,name:hr_timesheet_type_non_billable.model_project_task +msgid "Task" +msgstr "" From eb38ee6b2aa6d64a7587bcc6b077ea3e65a9a44d Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 14 Apr 2025 06:36:55 +0000 Subject: [PATCH 03/23] [BOT] post-merge updates --- hr_timesheet_type_non_billable/README.rst | 4 ++-- .../static/description/icon.png | Bin 0 -> 10254 bytes .../static/description/index.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 hr_timesheet_type_non_billable/static/description/icon.png diff --git a/hr_timesheet_type_non_billable/README.rst b/hr_timesheet_type_non_billable/README.rst index 68f500b04d..68d698b4b3 100644 --- a/hr_timesheet_type_non_billable/README.rst +++ b/hr_timesheet_type_non_billable/README.rst @@ -7,7 +7,7 @@ HR Timesheet Type Non Billable !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:b5e48e537c3e9c848d436da70d50711d20a378b6c1632a4b100e9c91d6dd249a + !! source digest: sha256:58c6b7ead4a4237cc1703c795afd958d04c19e9d29a693787e34bdd93147e991 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png @@ -74,7 +74,7 @@ Contributors [APSL-Nagarro](https://apsl.tech): -- Miquel Pascual López +- Miquel Pascual López Maintainers ----------- diff --git a/hr_timesheet_type_non_billable/static/description/icon.png b/hr_timesheet_type_non_billable/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1dcc49c24f364e9adf0afbc6fc0bac6dbecdeb11 GIT binary patch literal 10254 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 Timesheet Type Non Billable !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:b5e48e537c3e9c848d436da70d50711d20a378b6c1632a4b100e9c91d6dd249a +!! source digest: sha256:58c6b7ead4a4237cc1703c795afd958d04c19e9d29a693787e34bdd93147e991 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

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

Sometimes you want to add timesheets that are not billable to clients. From c7c04b78275d1094b987f7cf88f26d925d1b3c94 Mon Sep 17 00:00:00 2001 From: mpascual Date: Mon, 14 Apr 2025 10:31:21 +0200 Subject: [PATCH 04/23] [IMP] hr_timesheet_type_non_billable: pre-commit auto fixes --- hr_timesheet_type_non_billable/pyproject.toml | 3 +++ .../tests/test_hr_timesheet_type_non_billable.py | 1 - 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 hr_timesheet_type_non_billable/pyproject.toml diff --git a/hr_timesheet_type_non_billable/pyproject.toml b/hr_timesheet_type_non_billable/pyproject.toml new file mode 100644 index 0000000000..4231d0cccb --- /dev/null +++ b/hr_timesheet_type_non_billable/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/hr_timesheet_type_non_billable/tests/test_hr_timesheet_type_non_billable.py b/hr_timesheet_type_non_billable/tests/test_hr_timesheet_type_non_billable.py index 479f7955f3..b320b25afb 100644 --- a/hr_timesheet_type_non_billable/tests/test_hr_timesheet_type_non_billable.py +++ b/hr_timesheet_type_non_billable/tests/test_hr_timesheet_type_non_billable.py @@ -4,7 +4,6 @@ class TestHrTimesheetTypeNonBillable(TransactionCase): @classmethod def setUpClass(cls): - super().setUpClass() cls.employee = cls.env["hr.employee"].create( From 215a121554db3c70871e5c3cd46f218c8a0a67a1 Mon Sep 17 00:00:00 2001 From: mpascual Date: Mon, 14 Apr 2025 11:22:06 +0200 Subject: [PATCH 05/23] [MIG] hr_timesheet_type_non_billable: Migration to 17.0 --- hr_timesheet_type_non_billable/README.rst | 12 ++++++------ hr_timesheet_type_non_billable/__manifest__.py | 2 +- .../models/project_project.py | 7 +++---- .../static/description/index.html | 6 +++--- .../tests/test_hr_timesheet_type_non_billable.py | 2 +- 5 files changed, 14 insertions(+), 15 deletions(-) diff --git a/hr_timesheet_type_non_billable/README.rst b/hr_timesheet_type_non_billable/README.rst index 68d698b4b3..098fa7be18 100644 --- a/hr_timesheet_type_non_billable/README.rst +++ b/hr_timesheet_type_non_billable/README.rst @@ -17,13 +17,13 @@ HR Timesheet Type Non Billable :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-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_type_non_billable + :target: https://github.com/OCA/timesheet/tree/17.0/hr_timesheet_type_non_billable :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_type_non_billable + :target: https://translation.odoo-community.org/projects/timesheet-17-0/timesheet-17-0-hr_timesheet_type_non_billable :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=16.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/timesheet&target_branch=17.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -57,7 +57,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. @@ -74,7 +74,7 @@ Contributors [APSL-Nagarro](https://apsl.tech): -- Miquel Pascual López +- Miquel Pascual López Maintainers ----------- @@ -97,6 +97,6 @@ Current `maintainer `__: |maintainer-mpascuall| -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_type_non_billable/__manifest__.py b/hr_timesheet_type_non_billable/__manifest__.py index 1e9474896a..a47fd6563d 100644 --- a/hr_timesheet_type_non_billable/__manifest__.py +++ b/hr_timesheet_type_non_billable/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "HR Timesheet Type Non Billable", - "version": "16.0.1.0.0", + "version": "17.0.1.0.0", "category": "Timesheet", "website": "https://github.com/OCA/timesheet", "author": "APSL-Nagarro, Odoo Community Association (OCA)", diff --git a/hr_timesheet_type_non_billable/models/project_project.py b/hr_timesheet_type_non_billable/models/project_project.py index 7703ce99ff..40d65be4f3 100644 --- a/hr_timesheet_type_non_billable/models/project_project.py +++ b/hr_timesheet_type_non_billable/models/project_project.py @@ -13,14 +13,13 @@ def _compute_remaining_hours(self): timesheets_read_group = self.env["account.analytic.line"]._read_group( [("project_id", "in", self.ids), ("non_billable", "=", False)], - ["project_id", "unit_amount"], ["project_id"], - lazy=False, + ["unit_amount:sum"], ) timesheet_time_dict = { - res["project_id"][0]: res["unit_amount"] for res in timesheets_read_group + project.id: unit_amount_sum + for project, unit_amount_sum in timesheets_read_group } - for project in self: project.remaining_hours = project.allocated_hours - timesheet_time_dict.get( project.id, 0 diff --git a/hr_timesheet_type_non_billable/static/description/index.html b/hr_timesheet_type_non_billable/static/description/index.html index 69c9cc88d2..b5d04bb26b 100644 --- a/hr_timesheet_type_non_billable/static/description/index.html +++ b/hr_timesheet_type_non_billable/static/description/index.html @@ -369,7 +369,7 @@

HR Timesheet Type Non Billable

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:58c6b7ead4a4237cc1703c795afd958d04c19e9d29a693787e34bdd93147e991 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

+

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

Sometimes you want to add timesheets that are not billable to clients. With this module you can configure which timesheet type are not billable so every timesheet with this type won’t affect to project and task @@ -406,7 +406,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.

@@ -435,7 +435,7 @@

Maintainers

promote its widespread use.

Current maintainer:

mpascuall

-

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_type_non_billable/tests/test_hr_timesheet_type_non_billable.py b/hr_timesheet_type_non_billable/tests/test_hr_timesheet_type_non_billable.py index b320b25afb..6f059d4406 100644 --- a/hr_timesheet_type_non_billable/tests/test_hr_timesheet_type_non_billable.py +++ b/hr_timesheet_type_non_billable/tests/test_hr_timesheet_type_non_billable.py @@ -33,7 +33,7 @@ def setUpClass(cls): { "name": "Test Task", "project_id": cls.project.id, - "planned_hours": 10, + "allocated_hours": 10, } ) From 651a79d77e9884aa262637d7522e0b7d8086e8db Mon Sep 17 00:00:00 2001 From: oca-ci Date: Thu, 24 Apr 2025 20:00:48 +0000 Subject: [PATCH 06/23] [UPD] Update hr_timesheet_type_non_billable.pot --- .../i18n/hr_timesheet_type_non_billable.pot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hr_timesheet_type_non_billable/i18n/hr_timesheet_type_non_billable.pot b/hr_timesheet_type_non_billable/i18n/hr_timesheet_type_non_billable.pot index d288d54b49..7e6229ee11 100644 --- a/hr_timesheet_type_non_billable/i18n/hr_timesheet_type_non_billable.pot +++ b/hr_timesheet_type_non_billable/i18n/hr_timesheet_type_non_billable.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 16.0\n" +"Project-Id-Version: Odoo Server 17.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" From 8d1eb69712871618d1e3424bf040a07b8f3b7a19 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 24 Apr 2025 20:04:13 +0000 Subject: [PATCH 07/23] [BOT] post-merge updates --- hr_timesheet_type_non_billable/README.rst | 4 ++-- hr_timesheet_type_non_billable/static/description/index.html | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/hr_timesheet_type_non_billable/README.rst b/hr_timesheet_type_non_billable/README.rst index 098fa7be18..6c6a95d53a 100644 --- a/hr_timesheet_type_non_billable/README.rst +++ b/hr_timesheet_type_non_billable/README.rst @@ -7,7 +7,7 @@ HR Timesheet Type Non Billable !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:58c6b7ead4a4237cc1703c795afd958d04c19e9d29a693787e34bdd93147e991 + !! source digest: sha256:f2970b50d05d1a94078f3959f77d260887bd8642bf21c298bdf40183a08beaa0 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png @@ -74,7 +74,7 @@ Contributors [APSL-Nagarro](https://apsl.tech): -- Miquel Pascual López +- Miquel Pascual López Maintainers ----------- diff --git a/hr_timesheet_type_non_billable/static/description/index.html b/hr_timesheet_type_non_billable/static/description/index.html index b5d04bb26b..5845d59ab5 100644 --- a/hr_timesheet_type_non_billable/static/description/index.html +++ b/hr_timesheet_type_non_billable/static/description/index.html @@ -367,7 +367,7 @@

HR Timesheet Type Non Billable

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:58c6b7ead4a4237cc1703c795afd958d04c19e9d29a693787e34bdd93147e991 +!! source digest: sha256:f2970b50d05d1a94078f3959f77d260887bd8642bf21c298bdf40183a08beaa0 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

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

Sometimes you want to add timesheets that are not billable to clients. From 2aaecc133fd3c9d70d8eb3406493cfc2021b90e8 Mon Sep 17 00:00:00 2001 From: mymage Date: Mon, 28 Apr 2025 13:33:38 +0000 Subject: [PATCH 08/23] Added translation using Weblate (Italian) --- hr_timesheet_type_non_billable/i18n/it.po | 41 +++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 hr_timesheet_type_non_billable/i18n/it.po diff --git a/hr_timesheet_type_non_billable/i18n/it.po b/hr_timesheet_type_non_billable/i18n/it.po new file mode 100644 index 0000000000..81d0246d1a --- /dev/null +++ b/hr_timesheet_type_non_billable/i18n/it.po @@ -0,0 +1,41 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_timesheet_type_non_billable +# +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: 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" + +#. module: hr_timesheet_type_non_billable +#: model:ir.model,name:hr_timesheet_type_non_billable.model_account_analytic_line +msgid "Analytic Line" +msgstr "" + +#. module: hr_timesheet_type_non_billable +#: model:ir.model,name:hr_timesheet_type_non_billable.model_project_time_type +msgid "Define Time Types" +msgstr "" + +#. module: hr_timesheet_type_non_billable +#: model:ir.model.fields,field_description:hr_timesheet_type_non_billable.field_account_analytic_line__non_billable +#: model:ir.model.fields,field_description:hr_timesheet_type_non_billable.field_project_time_type__non_billable +msgid "Non Billable" +msgstr "" + +#. module: hr_timesheet_type_non_billable +#: model:ir.model,name:hr_timesheet_type_non_billable.model_project_project +msgid "Project" +msgstr "" + +#. module: hr_timesheet_type_non_billable +#: model:ir.model,name:hr_timesheet_type_non_billable.model_project_task +msgid "Task" +msgstr "" From 56528b3b7d3b6e1663f2d56d8aa05e0ca9e02c37 Mon Sep 17 00:00:00 2001 From: mymage Date: Sat, 3 May 2025 14:26:50 +0000 Subject: [PATCH 09/23] Translated using Weblate (Italian) Currently translated at 100.0% (5 of 5 strings) Translation: timesheet-17.0/timesheet-17.0-hr_timesheet_type_non_billable Translate-URL: https://translation.odoo-community.org/projects/timesheet-17-0/timesheet-17-0-hr_timesheet_type_non_billable/it/ --- hr_timesheet_type_non_billable/i18n/it.po | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/hr_timesheet_type_non_billable/i18n/it.po b/hr_timesheet_type_non_billable/i18n/it.po index 81d0246d1a..fd6557893e 100644 --- a/hr_timesheet_type_non_billable/i18n/it.po +++ b/hr_timesheet_type_non_billable/i18n/it.po @@ -6,36 +6,38 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 17.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2025-05-03 17:24+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.10.4\n" #. module: hr_timesheet_type_non_billable #: model:ir.model,name:hr_timesheet_type_non_billable.model_account_analytic_line msgid "Analytic Line" -msgstr "" +msgstr "Riga analitica" #. module: hr_timesheet_type_non_billable #: model:ir.model,name:hr_timesheet_type_non_billable.model_project_time_type msgid "Define Time Types" -msgstr "" +msgstr "Definizione tipi orario" #. module: hr_timesheet_type_non_billable #: model:ir.model.fields,field_description:hr_timesheet_type_non_billable.field_account_analytic_line__non_billable #: model:ir.model.fields,field_description:hr_timesheet_type_non_billable.field_project_time_type__non_billable msgid "Non Billable" -msgstr "" +msgstr "Non fatturabile" #. module: hr_timesheet_type_non_billable #: model:ir.model,name:hr_timesheet_type_non_billable.model_project_project msgid "Project" -msgstr "" +msgstr "Progetto" #. module: hr_timesheet_type_non_billable #: model:ir.model,name:hr_timesheet_type_non_billable.model_project_task msgid "Task" -msgstr "" +msgstr "Lavoro" From 3a251ddb3f14463ff81318252f72df0c4a5fed4d Mon Sep 17 00:00:00 2001 From: mpascual Date: Thu, 12 Jun 2025 13:20:43 +0200 Subject: [PATCH 10/23] [IMP] hr_timesheet_type_non_billable: Now works with helpdesk_ticket too --- hr_timesheet_type_non_billable/README.rst | 2 +- .../__manifest__.py | 2 + .../models/__init__.py | 1 + .../models/helpdesk_ticket.py | 14 ++++++ .../test_hr_timesheet_type_non_billable.py | 43 +++++++++++++++++++ 5 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 hr_timesheet_type_non_billable/models/helpdesk_ticket.py diff --git a/hr_timesheet_type_non_billable/README.rst b/hr_timesheet_type_non_billable/README.rst index 6c6a95d53a..3cb948acfa 100644 --- a/hr_timesheet_type_non_billable/README.rst +++ b/hr_timesheet_type_non_billable/README.rst @@ -74,7 +74,7 @@ Contributors [APSL-Nagarro](https://apsl.tech): -- Miquel Pascual López +- Miquel Pascual López Maintainers ----------- diff --git a/hr_timesheet_type_non_billable/__manifest__.py b/hr_timesheet_type_non_billable/__manifest__.py index a47fd6563d..bf40a299f5 100644 --- a/hr_timesheet_type_non_billable/__manifest__.py +++ b/hr_timesheet_type_non_billable/__manifest__.py @@ -14,6 +14,8 @@ "hr_timesheet", "hr_timesheet_time_type", "sale_timesheet_line_exclude", + "helpdesk_mgmt_timesheet", + "helpdesk_timesheet_time_type", ], "data": [ "views/project_time_type_view.xml", diff --git a/hr_timesheet_type_non_billable/models/__init__.py b/hr_timesheet_type_non_billable/models/__init__.py index 590b041e60..eea3446aac 100644 --- a/hr_timesheet_type_non_billable/models/__init__.py +++ b/hr_timesheet_type_non_billable/models/__init__.py @@ -5,3 +5,4 @@ from . import account_analytic_line from . import project_project from . import project_task +from . import helpdesk_ticket diff --git a/hr_timesheet_type_non_billable/models/helpdesk_ticket.py b/hr_timesheet_type_non_billable/models/helpdesk_ticket.py new file mode 100644 index 0000000000..0840527596 --- /dev/null +++ b/hr_timesheet_type_non_billable/models/helpdesk_ticket.py @@ -0,0 +1,14 @@ +from odoo import api, models + + +class HelpdeskTicket(models.Model): + _inherit = "helpdesk.ticket" + + @api.depends("timesheet_ids.unit_amount", "timesheet_ids.time_type_id.non_billable") + def _compute_total_hours(self): + for record in self: + record.total_hours = sum( + line.unit_amount + for line in record.timesheet_ids + if not line.time_type_id.non_billable + ) diff --git a/hr_timesheet_type_non_billable/tests/test_hr_timesheet_type_non_billable.py b/hr_timesheet_type_non_billable/tests/test_hr_timesheet_type_non_billable.py index 6f059d4406..655b71b485 100644 --- a/hr_timesheet_type_non_billable/tests/test_hr_timesheet_type_non_billable.py +++ b/hr_timesheet_type_non_billable/tests/test_hr_timesheet_type_non_billable.py @@ -36,6 +36,14 @@ def setUpClass(cls): "allocated_hours": 10, } ) + cls.ticket = cls.env["helpdesk.ticket"].create( + { + "name": "Test Ticket", + "project_id": cls.project.id, + "planned_hours": 8, + "description": "Test Helpdesk Ticket", + } + ) def test_non_billable_timesheet(self): self.env["account.analytic.line"].create( @@ -77,3 +85,38 @@ def test_non_billable_timesheet(self): 47, "Project remaining hours should exclude non-billable timesheets.", ) + + def test_helpdesk_ticket_non_billable_timesheet(self): + self.env["account.analytic.line"].create( + { + "employee_id": self.employee.id, + "name": "Non-Billable Helpdesk Timesheet", + "project_id": self.project.id, + "ticket_id": self.ticket.id, + "unit_amount": 1, + "time_type_id": self.non_billable_type.id, + } + ) + + self.env["account.analytic.line"].create( + { + "employee_id": self.employee.id, + "name": "Billable Helpdesk Timesheet", + "project_id": self.project.id, + "ticket_id": self.ticket.id, + "unit_amount": 2, + "time_type_id": self.billable_type.id, + } + ) + + self.assertEqual( + self.ticket.total_hours, + 2, + "Helpdesk ticket total hours should exclude non-billable timesheets.", + ) + + self.assertEqual( + self.ticket.remaining_hours, + 6, + "Helpdesk ticket effective hours should only include billable timesheets.", + ) From c4542166112eec57e30c78a02fc0ee044b5211b3 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Tue, 17 Jun 2025 05:10:22 +0000 Subject: [PATCH 11/23] [UPD] Update hr_timesheet_type_non_billable.pot --- .../i18n/hr_timesheet_type_non_billable.pot | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hr_timesheet_type_non_billable/i18n/hr_timesheet_type_non_billable.pot b/hr_timesheet_type_non_billable/i18n/hr_timesheet_type_non_billable.pot index 7e6229ee11..d7515a15c4 100644 --- a/hr_timesheet_type_non_billable/i18n/hr_timesheet_type_non_billable.pot +++ b/hr_timesheet_type_non_billable/i18n/hr_timesheet_type_non_billable.pot @@ -23,6 +23,11 @@ msgstr "" msgid "Define Time Types" msgstr "" +#. module: hr_timesheet_type_non_billable +#: model:ir.model,name:hr_timesheet_type_non_billable.model_helpdesk_ticket +msgid "Helpdesk Ticket" +msgstr "" + #. module: hr_timesheet_type_non_billable #: model:ir.model.fields,field_description:hr_timesheet_type_non_billable.field_account_analytic_line__non_billable #: model:ir.model.fields,field_description:hr_timesheet_type_non_billable.field_project_time_type__non_billable From b7ba1ac17132736345fac0771b59216cb8c051fd Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Tue, 17 Jun 2025 05:14:13 +0000 Subject: [PATCH 12/23] [BOT] post-merge updates --- hr_timesheet_type_non_billable/README.rst | 10 +++++-- .../static/description/index.html | 28 +++++++++++-------- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/hr_timesheet_type_non_billable/README.rst b/hr_timesheet_type_non_billable/README.rst index 3cb948acfa..9e4711c2cb 100644 --- a/hr_timesheet_type_non_billable/README.rst +++ b/hr_timesheet_type_non_billable/README.rst @@ -1,3 +1,7 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + ============================== HR Timesheet Type Non Billable ============================== @@ -7,13 +11,13 @@ HR Timesheet Type Non Billable !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:f2970b50d05d1a94078f3959f77d260887bd8642bf21c298bdf40183a08beaa0 + !! source digest: sha256:3d73175bb234acc00538dd2157157bd838d21033398e1a6253bf203545ef3d56 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status :alt: Beta -.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png +.. |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%2Ftimesheet-lightgray.png?logo=github @@ -74,7 +78,7 @@ Contributors [APSL-Nagarro](https://apsl.tech): -- Miquel Pascual López +- Miquel Pascual López Maintainers ----------- diff --git a/hr_timesheet_type_non_billable/static/description/index.html b/hr_timesheet_type_non_billable/static/description/index.html index 5845d59ab5..7db01722fd 100644 --- a/hr_timesheet_type_non_billable/static/description/index.html +++ b/hr_timesheet_type_non_billable/static/description/index.html @@ -3,7 +3,7 @@ -HR Timesheet Type Non Billable +README.rst -

-

HR Timesheet Type Non Billable

+
+ + +Odoo Community Association + +
+

HR Timesheet Type Non Billable

-

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

+

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

Sometimes you want to add timesheets that are not billable to clients. With this module you can configure which timesheet type are not billable so every timesheet with this type won’t affect to project and task @@ -388,7 +393,7 @@

HR Timesheet Type Non Billable

-

Usage

+

Usage

  1. Go to Project > Configuration > Time Type
  2. Create or edit a Time Type and mark it as Non Billable
  3. @@ -402,7 +407,7 @@

    Usage

-

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 @@ -410,22 +415,22 @@

Bug Tracker

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

-

Credits

+

Credits

-

Authors

+

Authors

  • APSL-Nagarro
-

Contributors

+

Contributors

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

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association @@ -440,5 +445,6 @@

Maintainers

+
From 2d9038100135fbc9c16fe07ed83e3ff8012cfc52 Mon Sep 17 00:00:00 2001 From: Weblate Date: Tue, 17 Jun 2025 05:14:21 +0000 Subject: [PATCH 13/23] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: timesheet-17.0/timesheet-17.0-hr_timesheet_type_non_billable Translate-URL: https://translation.odoo-community.org/projects/timesheet-17-0/timesheet-17-0-hr_timesheet_type_non_billable/ --- hr_timesheet_type_non_billable/i18n/ca.po | 5 +++++ hr_timesheet_type_non_billable/i18n/es.po | 5 +++++ hr_timesheet_type_non_billable/i18n/it.po | 5 +++++ 3 files changed, 15 insertions(+) diff --git a/hr_timesheet_type_non_billable/i18n/ca.po b/hr_timesheet_type_non_billable/i18n/ca.po index 8808812a6b..0730fc31f4 100644 --- a/hr_timesheet_type_non_billable/i18n/ca.po +++ b/hr_timesheet_type_non_billable/i18n/ca.po @@ -26,6 +26,11 @@ msgstr "Línia analítica" msgid "Define Time Types" msgstr "Definir ipus de temps" +#. module: hr_timesheet_type_non_billable +#: model:ir.model,name:hr_timesheet_type_non_billable.model_helpdesk_ticket +msgid "Helpdesk Ticket" +msgstr "" + #. module: hr_timesheet_type_non_billable #: model:ir.model.fields,field_description:hr_timesheet_type_non_billable.field_account_analytic_line__non_billable #: model:ir.model.fields,field_description:hr_timesheet_type_non_billable.field_project_time_type__non_billable diff --git a/hr_timesheet_type_non_billable/i18n/es.po b/hr_timesheet_type_non_billable/i18n/es.po index 45934503bf..184a31ec1d 100644 --- a/hr_timesheet_type_non_billable/i18n/es.po +++ b/hr_timesheet_type_non_billable/i18n/es.po @@ -26,6 +26,11 @@ msgstr "Línea analítica" msgid "Define Time Types" msgstr "Definir tipos de tiempo" +#. module: hr_timesheet_type_non_billable +#: model:ir.model,name:hr_timesheet_type_non_billable.model_helpdesk_ticket +msgid "Helpdesk Ticket" +msgstr "" + #. module: hr_timesheet_type_non_billable #: model:ir.model.fields,field_description:hr_timesheet_type_non_billable.field_account_analytic_line__non_billable #: model:ir.model.fields,field_description:hr_timesheet_type_non_billable.field_project_time_type__non_billable diff --git a/hr_timesheet_type_non_billable/i18n/it.po b/hr_timesheet_type_non_billable/i18n/it.po index fd6557893e..0fbcb8e6c0 100644 --- a/hr_timesheet_type_non_billable/i18n/it.po +++ b/hr_timesheet_type_non_billable/i18n/it.po @@ -26,6 +26,11 @@ msgstr "Riga analitica" msgid "Define Time Types" msgstr "Definizione tipi orario" +#. module: hr_timesheet_type_non_billable +#: model:ir.model,name:hr_timesheet_type_non_billable.model_helpdesk_ticket +msgid "Helpdesk Ticket" +msgstr "" + #. module: hr_timesheet_type_non_billable #: model:ir.model.fields,field_description:hr_timesheet_type_non_billable.field_account_analytic_line__non_billable #: model:ir.model.fields,field_description:hr_timesheet_type_non_billable.field_project_time_type__non_billable From 22a95063b487041434f060bf716ab9170aab34bb Mon Sep 17 00:00:00 2001 From: mymage Date: Tue, 17 Jun 2025 06:07:00 +0000 Subject: [PATCH 14/23] Translated using Weblate (Italian) Currently translated at 100.0% (6 of 6 strings) Translation: timesheet-17.0/timesheet-17.0-hr_timesheet_type_non_billable Translate-URL: https://translation.odoo-community.org/projects/timesheet-17-0/timesheet-17-0-hr_timesheet_type_non_billable/it/ --- hr_timesheet_type_non_billable/i18n/it.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hr_timesheet_type_non_billable/i18n/it.po b/hr_timesheet_type_non_billable/i18n/it.po index 0fbcb8e6c0..f9598a9c12 100644 --- a/hr_timesheet_type_non_billable/i18n/it.po +++ b/hr_timesheet_type_non_billable/i18n/it.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 17.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2025-05-03 17:24+0000\n" +"PO-Revision-Date: 2025-06-17 08:26+0000\n" "Last-Translator: mymage \n" "Language-Team: none\n" "Language: it\n" @@ -29,7 +29,7 @@ msgstr "Definizione tipi orario" #. module: hr_timesheet_type_non_billable #: model:ir.model,name:hr_timesheet_type_non_billable.model_helpdesk_ticket msgid "Helpdesk Ticket" -msgstr "" +msgstr "Ticket assistenza clienti" #. module: hr_timesheet_type_non_billable #: model:ir.model.fields,field_description:hr_timesheet_type_non_billable.field_account_analytic_line__non_billable From e31bfaf3edd17a7df61d73258ceb6ac389b47a00 Mon Sep 17 00:00:00 2001 From: mpascual Date: Wed, 30 Jul 2025 12:43:46 +0200 Subject: [PATCH 15/23] [17.0][FIX] hr_timesheet_type_non_billable: Fixed dependencies --- hr_timesheet_type_non_billable/README.rst | 8 +--- .../__manifest__.py | 2 - .../models/__init__.py | 1 - .../models/helpdesk_ticket.py | 14 ------ .../static/description/index.html | 26 +++++------ .../test_hr_timesheet_type_non_billable.py | 43 ------------------- 6 files changed, 12 insertions(+), 82 deletions(-) delete mode 100644 hr_timesheet_type_non_billable/models/helpdesk_ticket.py diff --git a/hr_timesheet_type_non_billable/README.rst b/hr_timesheet_type_non_billable/README.rst index 9e4711c2cb..85f436fb10 100644 --- a/hr_timesheet_type_non_billable/README.rst +++ b/hr_timesheet_type_non_billable/README.rst @@ -1,7 +1,3 @@ -.. image:: https://odoo-community.org/readme-banner-image - :target: https://odoo-community.org/get-involved?utm_source=readme - :alt: Odoo Community Association - ============================== HR Timesheet Type Non Billable ============================== @@ -17,7 +13,7 @@ HR Timesheet Type Non Billable .. |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 +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Ftimesheet-lightgray.png?logo=github @@ -78,7 +74,7 @@ Contributors [APSL-Nagarro](https://apsl.tech): -- Miquel Pascual López +- Miquel Pascual López Maintainers ----------- diff --git a/hr_timesheet_type_non_billable/__manifest__.py b/hr_timesheet_type_non_billable/__manifest__.py index bf40a299f5..a47fd6563d 100644 --- a/hr_timesheet_type_non_billable/__manifest__.py +++ b/hr_timesheet_type_non_billable/__manifest__.py @@ -14,8 +14,6 @@ "hr_timesheet", "hr_timesheet_time_type", "sale_timesheet_line_exclude", - "helpdesk_mgmt_timesheet", - "helpdesk_timesheet_time_type", ], "data": [ "views/project_time_type_view.xml", diff --git a/hr_timesheet_type_non_billable/models/__init__.py b/hr_timesheet_type_non_billable/models/__init__.py index eea3446aac..590b041e60 100644 --- a/hr_timesheet_type_non_billable/models/__init__.py +++ b/hr_timesheet_type_non_billable/models/__init__.py @@ -5,4 +5,3 @@ from . import account_analytic_line from . import project_project from . import project_task -from . import helpdesk_ticket diff --git a/hr_timesheet_type_non_billable/models/helpdesk_ticket.py b/hr_timesheet_type_non_billable/models/helpdesk_ticket.py deleted file mode 100644 index 0840527596..0000000000 --- a/hr_timesheet_type_non_billable/models/helpdesk_ticket.py +++ /dev/null @@ -1,14 +0,0 @@ -from odoo import api, models - - -class HelpdeskTicket(models.Model): - _inherit = "helpdesk.ticket" - - @api.depends("timesheet_ids.unit_amount", "timesheet_ids.time_type_id.non_billable") - def _compute_total_hours(self): - for record in self: - record.total_hours = sum( - line.unit_amount - for line in record.timesheet_ids - if not line.time_type_id.non_billable - ) diff --git a/hr_timesheet_type_non_billable/static/description/index.html b/hr_timesheet_type_non_billable/static/description/index.html index 7db01722fd..494396f769 100644 --- a/hr_timesheet_type_non_billable/static/description/index.html +++ b/hr_timesheet_type_non_billable/static/description/index.html @@ -3,7 +3,7 @@ -README.rst +HR Timesheet Type Non Billable -
+
+

HR Timesheet Type Non Billable

- - -Odoo Community Association - -
-

HR Timesheet Type Non Billable

-

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

+

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

Sometimes you want to add timesheets that are not billable to clients. With this module you can configure which timesheet type are not billable so every timesheet with this type won’t affect to project and task @@ -393,7 +388,7 @@

HR Timesheet Type Non Billable

-

Usage

+

Usage

  1. Go to Project > Configuration > Time Type
  2. Create or edit a Time Type and mark it as Non Billable
  3. @@ -407,7 +402,7 @@

    Usage

-

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 @@ -415,22 +410,22 @@

Bug Tracker

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

-

Credits

+

Credits

-

Authors

+

Authors

  • APSL-Nagarro
-

Contributors

+

Contributors

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

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association @@ -445,6 +440,5 @@

Maintainers

-
diff --git a/hr_timesheet_type_non_billable/tests/test_hr_timesheet_type_non_billable.py b/hr_timesheet_type_non_billable/tests/test_hr_timesheet_type_non_billable.py index 655b71b485..6f059d4406 100644 --- a/hr_timesheet_type_non_billable/tests/test_hr_timesheet_type_non_billable.py +++ b/hr_timesheet_type_non_billable/tests/test_hr_timesheet_type_non_billable.py @@ -36,14 +36,6 @@ def setUpClass(cls): "allocated_hours": 10, } ) - cls.ticket = cls.env["helpdesk.ticket"].create( - { - "name": "Test Ticket", - "project_id": cls.project.id, - "planned_hours": 8, - "description": "Test Helpdesk Ticket", - } - ) def test_non_billable_timesheet(self): self.env["account.analytic.line"].create( @@ -85,38 +77,3 @@ def test_non_billable_timesheet(self): 47, "Project remaining hours should exclude non-billable timesheets.", ) - - def test_helpdesk_ticket_non_billable_timesheet(self): - self.env["account.analytic.line"].create( - { - "employee_id": self.employee.id, - "name": "Non-Billable Helpdesk Timesheet", - "project_id": self.project.id, - "ticket_id": self.ticket.id, - "unit_amount": 1, - "time_type_id": self.non_billable_type.id, - } - ) - - self.env["account.analytic.line"].create( - { - "employee_id": self.employee.id, - "name": "Billable Helpdesk Timesheet", - "project_id": self.project.id, - "ticket_id": self.ticket.id, - "unit_amount": 2, - "time_type_id": self.billable_type.id, - } - ) - - self.assertEqual( - self.ticket.total_hours, - 2, - "Helpdesk ticket total hours should exclude non-billable timesheets.", - ) - - self.assertEqual( - self.ticket.remaining_hours, - 6, - "Helpdesk ticket effective hours should only include billable timesheets.", - ) From 0807bd137fe1f2860ec75bc870ed1c08d11dcb7d Mon Sep 17 00:00:00 2001 From: oca-ci Date: Wed, 30 Jul 2025 12:57:17 +0000 Subject: [PATCH 16/23] [UPD] Update hr_timesheet_type_non_billable.pot --- .../i18n/hr_timesheet_type_non_billable.pot | 5 ----- 1 file changed, 5 deletions(-) diff --git a/hr_timesheet_type_non_billable/i18n/hr_timesheet_type_non_billable.pot b/hr_timesheet_type_non_billable/i18n/hr_timesheet_type_non_billable.pot index d7515a15c4..7e6229ee11 100644 --- a/hr_timesheet_type_non_billable/i18n/hr_timesheet_type_non_billable.pot +++ b/hr_timesheet_type_non_billable/i18n/hr_timesheet_type_non_billable.pot @@ -23,11 +23,6 @@ msgstr "" msgid "Define Time Types" msgstr "" -#. module: hr_timesheet_type_non_billable -#: model:ir.model,name:hr_timesheet_type_non_billable.model_helpdesk_ticket -msgid "Helpdesk Ticket" -msgstr "" - #. module: hr_timesheet_type_non_billable #: model:ir.model.fields,field_description:hr_timesheet_type_non_billable.field_account_analytic_line__non_billable #: model:ir.model.fields,field_description:hr_timesheet_type_non_billable.field_project_time_type__non_billable From 9c67d3917757916e361744a9c0ee8ca063102751 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 30 Jul 2025 13:01:06 +0000 Subject: [PATCH 17/23] [BOT] post-merge updates --- hr_timesheet_type_non_billable/README.rst | 10 +++++-- .../static/description/index.html | 28 +++++++++++-------- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/hr_timesheet_type_non_billable/README.rst b/hr_timesheet_type_non_billable/README.rst index 85f436fb10..5a1eaea36d 100644 --- a/hr_timesheet_type_non_billable/README.rst +++ b/hr_timesheet_type_non_billable/README.rst @@ -1,3 +1,7 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + ============================== HR Timesheet Type Non Billable ============================== @@ -7,13 +11,13 @@ HR Timesheet Type Non Billable !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:3d73175bb234acc00538dd2157157bd838d21033398e1a6253bf203545ef3d56 + !! source digest: sha256:f2970b50d05d1a94078f3959f77d260887bd8642bf21c298bdf40183a08beaa0 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status :alt: Beta -.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png +.. |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%2Ftimesheet-lightgray.png?logo=github @@ -74,7 +78,7 @@ Contributors [APSL-Nagarro](https://apsl.tech): -- Miquel Pascual López +- Miquel Pascual López Maintainers ----------- diff --git a/hr_timesheet_type_non_billable/static/description/index.html b/hr_timesheet_type_non_billable/static/description/index.html index 494396f769..a6ab760108 100644 --- a/hr_timesheet_type_non_billable/static/description/index.html +++ b/hr_timesheet_type_non_billable/static/description/index.html @@ -3,7 +3,7 @@ -HR Timesheet Type Non Billable +README.rst -
-

HR Timesheet Type Non Billable

+
+ + +Odoo Community Association + +
+

HR Timesheet Type Non Billable

-

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

+

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

Sometimes you want to add timesheets that are not billable to clients. With this module you can configure which timesheet type are not billable so every timesheet with this type won’t affect to project and task @@ -388,7 +393,7 @@

HR Timesheet Type Non Billable

-

Usage

+

Usage

  1. Go to Project > Configuration > Time Type
  2. Create or edit a Time Type and mark it as Non Billable
  3. @@ -402,7 +407,7 @@

    Usage

-

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 @@ -410,22 +415,22 @@

Bug Tracker

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

-

Credits

+

Credits

-

Authors

+

Authors

  • APSL-Nagarro
-

Contributors

+

Contributors

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

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association @@ -440,5 +445,6 @@

Maintainers

+
From 1e79738750c0310f805ac872fea35d88a6296286 Mon Sep 17 00:00:00 2001 From: Weblate Date: Wed, 30 Jul 2025 13:01:15 +0000 Subject: [PATCH 18/23] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: timesheet-17.0/timesheet-17.0-hr_timesheet_type_non_billable Translate-URL: https://translation.odoo-community.org/projects/timesheet-17-0/timesheet-17-0-hr_timesheet_type_non_billable/ --- hr_timesheet_type_non_billable/i18n/ca.po | 5 ----- hr_timesheet_type_non_billable/i18n/es.po | 5 ----- hr_timesheet_type_non_billable/i18n/it.po | 8 +++----- 3 files changed, 3 insertions(+), 15 deletions(-) diff --git a/hr_timesheet_type_non_billable/i18n/ca.po b/hr_timesheet_type_non_billable/i18n/ca.po index 0730fc31f4..8808812a6b 100644 --- a/hr_timesheet_type_non_billable/i18n/ca.po +++ b/hr_timesheet_type_non_billable/i18n/ca.po @@ -26,11 +26,6 @@ msgstr "Línia analítica" msgid "Define Time Types" msgstr "Definir ipus de temps" -#. module: hr_timesheet_type_non_billable -#: model:ir.model,name:hr_timesheet_type_non_billable.model_helpdesk_ticket -msgid "Helpdesk Ticket" -msgstr "" - #. module: hr_timesheet_type_non_billable #: model:ir.model.fields,field_description:hr_timesheet_type_non_billable.field_account_analytic_line__non_billable #: model:ir.model.fields,field_description:hr_timesheet_type_non_billable.field_project_time_type__non_billable diff --git a/hr_timesheet_type_non_billable/i18n/es.po b/hr_timesheet_type_non_billable/i18n/es.po index 184a31ec1d..45934503bf 100644 --- a/hr_timesheet_type_non_billable/i18n/es.po +++ b/hr_timesheet_type_non_billable/i18n/es.po @@ -26,11 +26,6 @@ msgstr "Línea analítica" msgid "Define Time Types" msgstr "Definir tipos de tiempo" -#. module: hr_timesheet_type_non_billable -#: model:ir.model,name:hr_timesheet_type_non_billable.model_helpdesk_ticket -msgid "Helpdesk Ticket" -msgstr "" - #. module: hr_timesheet_type_non_billable #: model:ir.model.fields,field_description:hr_timesheet_type_non_billable.field_account_analytic_line__non_billable #: model:ir.model.fields,field_description:hr_timesheet_type_non_billable.field_project_time_type__non_billable diff --git a/hr_timesheet_type_non_billable/i18n/it.po b/hr_timesheet_type_non_billable/i18n/it.po index f9598a9c12..8db7ac8118 100644 --- a/hr_timesheet_type_non_billable/i18n/it.po +++ b/hr_timesheet_type_non_billable/i18n/it.po @@ -26,11 +26,6 @@ msgstr "Riga analitica" msgid "Define Time Types" msgstr "Definizione tipi orario" -#. module: hr_timesheet_type_non_billable -#: model:ir.model,name:hr_timesheet_type_non_billable.model_helpdesk_ticket -msgid "Helpdesk Ticket" -msgstr "Ticket assistenza clienti" - #. module: hr_timesheet_type_non_billable #: model:ir.model.fields,field_description:hr_timesheet_type_non_billable.field_account_analytic_line__non_billable #: model:ir.model.fields,field_description:hr_timesheet_type_non_billable.field_project_time_type__non_billable @@ -46,3 +41,6 @@ msgstr "Progetto" #: model:ir.model,name:hr_timesheet_type_non_billable.model_project_task msgid "Task" msgstr "Lavoro" + +#~ msgid "Helpdesk Ticket" +#~ msgstr "Ticket assistenza clienti" From ad87e014f93b57c9acf867057f59be33b30cfdd6 Mon Sep 17 00:00:00 2001 From: Lansana Barry Sow Date: Wed, 4 Mar 2026 09:12:51 +0100 Subject: [PATCH 19/23] [MIG] hr_timesheet_type_non_billable: Migration to 18.0 --- hr_timesheet_type_non_billable/README.rst | 18 +++++------ .../__manifest__.py | 2 +- .../static/description/index.html | 30 ++++++++----------- .../views/project_time_type_view.xml | 2 +- 4 files changed, 21 insertions(+), 31 deletions(-) diff --git a/hr_timesheet_type_non_billable/README.rst b/hr_timesheet_type_non_billable/README.rst index 5a1eaea36d..70f5df3c0f 100644 --- a/hr_timesheet_type_non_billable/README.rst +++ b/hr_timesheet_type_non_billable/README.rst @@ -1,7 +1,3 @@ -.. image:: https://odoo-community.org/readme-banner-image - :target: https://odoo-community.org/get-involved?utm_source=readme - :alt: Odoo Community Association - ============================== HR Timesheet Type Non Billable ============================== @@ -17,17 +13,17 @@ HR Timesheet Type Non Billable .. |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 +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Ftimesheet-lightgray.png?logo=github - :target: https://github.com/OCA/timesheet/tree/17.0/hr_timesheet_type_non_billable + :target: https://github.com/OCA/timesheet/tree/18.0/hr_timesheet_type_non_billable :alt: OCA/timesheet .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/timesheet-17-0/timesheet-17-0-hr_timesheet_type_non_billable + :target: https://translation.odoo-community.org/projects/timesheet-18-0/timesheet-18-0-hr_timesheet_type_non_billable :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=17.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/timesheet&target_branch=18.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -61,7 +57,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. @@ -78,7 +74,7 @@ Contributors [APSL-Nagarro](https://apsl.tech): -- Miquel Pascual López +- Miquel Pascual López Maintainers ----------- @@ -101,6 +97,6 @@ Current `maintainer `__: |maintainer-mpascuall| -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_type_non_billable/__manifest__.py b/hr_timesheet_type_non_billable/__manifest__.py index a47fd6563d..c278f39734 100644 --- a/hr_timesheet_type_non_billable/__manifest__.py +++ b/hr_timesheet_type_non_billable/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "HR Timesheet Type Non Billable", - "version": "17.0.1.0.0", + "version": "18.0.1.0.0", "category": "Timesheet", "website": "https://github.com/OCA/timesheet", "author": "APSL-Nagarro, Odoo Community Association (OCA)", diff --git a/hr_timesheet_type_non_billable/static/description/index.html b/hr_timesheet_type_non_billable/static/description/index.html index a6ab760108..61aa78be6e 100644 --- a/hr_timesheet_type_non_billable/static/description/index.html +++ b/hr_timesheet_type_non_billable/static/description/index.html @@ -3,7 +3,7 @@ -README.rst +HR Timesheet Type Non Billable -
+
+

HR Timesheet Type Non Billable

- - -Odoo Community Association - -
-

HR Timesheet Type Non Billable

-

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

+

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

Sometimes you want to add timesheets that are not billable to clients. With this module you can configure which timesheet type are not billable so every timesheet with this type won’t affect to project and task @@ -393,7 +388,7 @@

HR Timesheet Type Non Billable

-

Usage

+

Usage

  1. Go to Project > Configuration > Time Type
  2. Create or edit a Time Type and mark it as Non Billable
  3. @@ -407,30 +402,30 @@

    Usage

-

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 -feedback.

+feedback.

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

-

Credits

+

Credits

-

Authors

+

Authors

  • APSL-Nagarro
-

Contributors

+

Contributors

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

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association @@ -440,11 +435,10 @@

Maintainers

promote its widespread use.

Current maintainer:

mpascuall

-

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_type_non_billable/views/project_time_type_view.xml b/hr_timesheet_type_non_billable/views/project_time_type_view.xml index 422ad8b2b8..bdac3379da 100644 --- a/hr_timesheet_type_non_billable/views/project_time_type_view.xml +++ b/hr_timesheet_type_non_billable/views/project_time_type_view.xml @@ -7,7 +7,7 @@ ref="hr_timesheet_time_type.view_project_time_type_tree" /> - + From 7a50a735c2a423290c764e9773beb93acd541658 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Wed, 15 Apr 2026 06:31:40 +0000 Subject: [PATCH 20/23] [UPD] Update hr_timesheet_type_non_billable.pot --- .../i18n/hr_timesheet_type_non_billable.pot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hr_timesheet_type_non_billable/i18n/hr_timesheet_type_non_billable.pot b/hr_timesheet_type_non_billable/i18n/hr_timesheet_type_non_billable.pot index 7e6229ee11..c07a8ec44e 100644 --- a/hr_timesheet_type_non_billable/i18n/hr_timesheet_type_non_billable.pot +++ b/hr_timesheet_type_non_billable/i18n/hr_timesheet_type_non_billable.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 17.0\n" +"Project-Id-Version: Odoo Server 18.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" From 35110f5b6efed5cfd198555f821e595b89f5363a Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 15 Apr 2026 06:37:34 +0000 Subject: [PATCH 21/23] [BOT] post-merge updates --- hr_timesheet_type_non_billable/README.rst | 10 +++++-- .../static/description/index.html | 28 +++++++++++-------- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/hr_timesheet_type_non_billable/README.rst b/hr_timesheet_type_non_billable/README.rst index 70f5df3c0f..c2e13d2a6d 100644 --- a/hr_timesheet_type_non_billable/README.rst +++ b/hr_timesheet_type_non_billable/README.rst @@ -1,3 +1,7 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + ============================== HR Timesheet Type Non Billable ============================== @@ -7,13 +11,13 @@ HR Timesheet Type Non Billable !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:f2970b50d05d1a94078f3959f77d260887bd8642bf21c298bdf40183a08beaa0 + !! source digest: sha256:8bd8d899b1da2f36c476cfc8bee33223bb56e1a87fb01ff9a301284b013bfdbc !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status :alt: Beta -.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png +.. |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%2Ftimesheet-lightgray.png?logo=github @@ -74,7 +78,7 @@ Contributors [APSL-Nagarro](https://apsl.tech): -- Miquel Pascual López +- Miquel Pascual López Maintainers ----------- diff --git a/hr_timesheet_type_non_billable/static/description/index.html b/hr_timesheet_type_non_billable/static/description/index.html index 61aa78be6e..6898276502 100644 --- a/hr_timesheet_type_non_billable/static/description/index.html +++ b/hr_timesheet_type_non_billable/static/description/index.html @@ -3,7 +3,7 @@ -HR Timesheet Type Non Billable +README.rst -
-

HR Timesheet Type Non Billable

+
+ + +Odoo Community Association + +
+

HR Timesheet Type Non Billable

-

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

+

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

Sometimes you want to add timesheets that are not billable to clients. With this module you can configure which timesheet type are not billable so every timesheet with this type won’t affect to project and task @@ -388,7 +393,7 @@

HR Timesheet Type Non Billable

-

Usage

+

Usage

  1. Go to Project > Configuration > Time Type
  2. Create or edit a Time Type and mark it as Non Billable
  3. @@ -402,7 +407,7 @@

    Usage

-

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 @@ -410,22 +415,22 @@

Bug Tracker

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

-

Credits

+

Credits

-

Authors

+

Authors

  • APSL-Nagarro
-

Contributors

+

Contributors

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

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association @@ -440,5 +445,6 @@

Maintainers

+
From 7abee277091c5c1b3601a816595e9e6d0c324484 Mon Sep 17 00:00:00 2001 From: Bhavesh Heliconia Date: Wed, 20 May 2026 17:09:14 +0530 Subject: [PATCH 22/23] [MIG] hr_timesheet_type_non_billable: Migration to 19.0 --- hr_timesheet_type_non_billable/README.rst | 10 +++++----- hr_timesheet_type_non_billable/__manifest__.py | 2 +- .../models/project_project.py | 3 ++- .../static/description/index.html | 6 +++--- .../tests/test_hr_timesheet_type_non_billable.py | 4 ++-- 5 files changed, 13 insertions(+), 12 deletions(-) diff --git a/hr_timesheet_type_non_billable/README.rst b/hr_timesheet_type_non_billable/README.rst index c2e13d2a6d..8d2afa179d 100644 --- a/hr_timesheet_type_non_billable/README.rst +++ b/hr_timesheet_type_non_billable/README.rst @@ -21,13 +21,13 @@ HR Timesheet Type Non Billable :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-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_type_non_billable + :target: https://github.com/OCA/timesheet/tree/19.0/hr_timesheet_type_non_billable :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_type_non_billable + :target: https://translation.odoo-community.org/projects/timesheet-19-0/timesheet-19-0-hr_timesheet_type_non_billable :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| @@ -61,7 +61,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. @@ -101,6 +101,6 @@ Current `maintainer `__: |maintainer-mpascuall| -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_type_non_billable/__manifest__.py b/hr_timesheet_type_non_billable/__manifest__.py index c278f39734..fd51f7483a 100644 --- a/hr_timesheet_type_non_billable/__manifest__.py +++ b/hr_timesheet_type_non_billable/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "HR Timesheet Type Non Billable", - "version": "18.0.1.0.0", + "version": "19.0.1.0.0", "category": "Timesheet", "website": "https://github.com/OCA/timesheet", "author": "APSL-Nagarro, Odoo Community Association (OCA)", diff --git a/hr_timesheet_type_non_billable/models/project_project.py b/hr_timesheet_type_non_billable/models/project_project.py index 40d65be4f3..842042c544 100644 --- a/hr_timesheet_type_non_billable/models/project_project.py +++ b/hr_timesheet_type_non_billable/models/project_project.py @@ -2,6 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from odoo import api, models +from odoo.fields import Domain class Project(models.Model): @@ -12,7 +13,7 @@ def _compute_remaining_hours(self): res = super()._compute_remaining_hours() timesheets_read_group = self.env["account.analytic.line"]._read_group( - [("project_id", "in", self.ids), ("non_billable", "=", False)], + Domain([("project_id", "in", self.ids), ("non_billable", "=", False)]), ["project_id"], ["unit_amount:sum"], ) diff --git a/hr_timesheet_type_non_billable/static/description/index.html b/hr_timesheet_type_non_billable/static/description/index.html index 6898276502..e21fbb2181 100644 --- a/hr_timesheet_type_non_billable/static/description/index.html +++ b/hr_timesheet_type_non_billable/static/description/index.html @@ -374,7 +374,7 @@

HR Timesheet Type Non Billable

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:8bd8d899b1da2f36c476cfc8bee33223bb56e1a87fb01ff9a301284b013bfdbc !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

+

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

Sometimes you want to add timesheets that are not billable to clients. With this module you can configure which timesheet type are not billable so every timesheet with this type won’t affect to project and task @@ -411,7 +411,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.

@@ -440,7 +440,7 @@

Maintainers

promote its widespread use.

Current maintainer:

mpascuall

-

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_type_non_billable/tests/test_hr_timesheet_type_non_billable.py b/hr_timesheet_type_non_billable/tests/test_hr_timesheet_type_non_billable.py index 6f059d4406..43c4f00f6f 100644 --- a/hr_timesheet_type_non_billable/tests/test_hr_timesheet_type_non_billable.py +++ b/hr_timesheet_type_non_billable/tests/test_hr_timesheet_type_non_billable.py @@ -1,7 +1,7 @@ -from odoo.tests.common import TransactionCase +from odoo.addons.base.tests.common import BaseCommon -class TestHrTimesheetTypeNonBillable(TransactionCase): +class TestHrTimesheetTypeNonBillable(BaseCommon): @classmethod def setUpClass(cls): super().setUpClass() From dfa856bd88f79538f0c2d978f021b0b12c23277f Mon Sep 17 00:00:00 2001 From: Bhavesh Heliconia Date: Wed, 20 May 2026 17:12:14 +0530 Subject: [PATCH 23/23] [DON'T MERGE] test-requirements.txt --- test-requirements.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 test-requirements.txt diff --git a/test-requirements.txt b/test-requirements.txt new file mode 100644 index 0000000000..b8da36ee91 --- /dev/null +++ b/test-requirements.txt @@ -0,0 +1 @@ +odoo-addon-hr_timesheet_time_type @ git+https://github.com/OCA/timesheet.git@refs/pull/824/head#subdirectory=hr_timesheet_time_type