diff --git a/hr_timesheet_overtime/README.rst b/hr_timesheet_overtime/README.rst index 72b1faf..1bc6c3e 100644 --- a/hr_timesheet_overtime/README.rst +++ b/hr_timesheet_overtime/README.rst @@ -29,32 +29,6 @@ Computes overtime hours according to employee's contracts. .. contents:: :local: -Known issues / Roadmap -====================== - -There is a problem with the way this module handles rates for overtime. If the -rate ever changes, things will start to break. - -At time of writing (2024-06-28), the way a rate is computed for a date is by -looking _exclusively_ at the corresponding day of the week. This should be more -robust. - -Furthermore, when inserting hours worked, the actual hours worked get lost. You -(try to) write a value to ``unit_amount``, but an augmented value gets written -to the field instead. This is rather ugly. - -We can improve this by relying on the computation of ``unit_amount`` in Odoo -≥16: create a new field ``hours_worked``, which contains the actual hours worked -sans rate. Then, compute ``unit_amount`` from ``hours_worked`` (in a more robust -fashion than is presently the case). In the interface, show ``hours_worked`` -more prominently than ``unit_amount`` as the main editable field. - -To make this module subsequently compatible with ``hr_timesheet_begin_end``, -``hours_worked`` must be computed from ``time_stop`` and ``time_start``, and -``unit_amount`` must use this module's computation method instead of -``hr_timesheet_begin_end``'s. The compatibility layer should go into its own -module. - Bug Tracker =========== diff --git a/hr_timesheet_overtime/__manifest__.py b/hr_timesheet_overtime/__manifest__.py index dd04421..80fef81 100644 --- a/hr_timesheet_overtime/__manifest__.py +++ b/hr_timesheet_overtime/__manifest__.py @@ -15,10 +15,7 @@ "resource_work_time_from_contracts", ], "data": [ - "security/ir.model.access.csv", - "views/account_analytic_line_views.xml", "views/hr_employee_view.xml", - "views/resource_view.xml", "views/hr_timesheet_sheet_view.xml", ], "demo": [ diff --git a/hr_timesheet_overtime/models/__init__.py b/hr_timesheet_overtime/models/__init__.py index 4f13953..88ae19e 100644 --- a/hr_timesheet_overtime/models/__init__.py +++ b/hr_timesheet_overtime/models/__init__.py @@ -1,6 +1,2 @@ -from . import account_analytic_line from . import hr_employee from . import hr_timesheet_sheet -from . import hr_timesheet_sheet_line -from . import resource_overtime -from . import resource_overtime_rate diff --git a/hr_timesheet_overtime/models/hr_timesheet_sheet.py b/hr_timesheet_overtime/models/hr_timesheet_sheet.py index 17a8ec2..08b9ec1 100644 --- a/hr_timesheet_overtime/models/hr_timesheet_sheet.py +++ b/hr_timesheet_overtime/models/hr_timesheet_sheet.py @@ -148,8 +148,3 @@ def _compute_timesheet_overtime_trimmed(self): working_time = employee.get_working_time(start_date, end_date) worked_time = sheet.get_worked_time(start_date, end_date) sheet.timesheet_overtime_trimmed = worked_time - working_time - - def _get_default_sheet_line(self, matrix, key): - result = super()._get_default_sheet_line(matrix, key) - result["hours_worked"] = sum(t.hours_worked for t in matrix[key]) - return result diff --git a/hr_timesheet_overtime/readme/ROADMAP.rst b/hr_timesheet_overtime/readme/ROADMAP.rst deleted file mode 100644 index 08e5a7f..0000000 --- a/hr_timesheet_overtime/readme/ROADMAP.rst +++ /dev/null @@ -1,22 +0,0 @@ -There is a problem with the way this module handles rates for overtime. If the -rate ever changes, things will start to break. - -At time of writing (2024-06-28), the way a rate is computed for a date is by -looking _exclusively_ at the corresponding day of the week. This should be more -robust. - -Furthermore, when inserting hours worked, the actual hours worked get lost. You -(try to) write a value to ``unit_amount``, but an augmented value gets written -to the field instead. This is rather ugly. - -We can improve this by relying on the computation of ``unit_amount`` in Odoo -≥16: create a new field ``hours_worked``, which contains the actual hours worked -sans rate. Then, compute ``unit_amount`` from ``hours_worked`` (in a more robust -fashion than is presently the case). In the interface, show ``hours_worked`` -more prominently than ``unit_amount`` as the main editable field. - -To make this module subsequently compatible with ``hr_timesheet_begin_end``, -``hours_worked`` must be computed from ``time_stop`` and ``time_start``, and -``unit_amount`` must use this module's computation method instead of -``hr_timesheet_begin_end``'s. The compatibility layer should go into its own -module. diff --git a/hr_timesheet_overtime/static/description/index.html b/hr_timesheet_overtime/static/description/index.html index fdf16be..9e211b7 100644 --- a/hr_timesheet_overtime/static/description/index.html +++ b/hr_timesheet_overtime/static/description/index.html @@ -374,40 +374,18 @@

Timesheet/Contract - Overtime

Table of contents

-
-

Known issues / Roadmap

-

There is a problem with the way this module handles rates for overtime. If the -rate ever changes, things will start to break.

-

At time of writing (2024-06-28), the way a rate is computed for a date is by -looking _exclusively_ at the corresponding day of the week. This should be more -robust.

-

Furthermore, when inserting hours worked, the actual hours worked get lost. You -(try to) write a value to unit_amount, but an augmented value gets written -to the field instead. This is rather ugly.

-

We can improve this by relying on the computation of unit_amount in Odoo -≥16: create a new field hours_worked, which contains the actual hours worked -sans rate. Then, compute unit_amount from hours_worked (in a more robust -fashion than is presently the case). In the interface, show hours_worked -more prominently than unit_amount as the main editable field.

-

To make this module subsequently compatible with hr_timesheet_begin_end, -hours_worked must be computed from time_stop and time_start, and -unit_amount must use this module’s computation method instead of -hr_timesheet_begin_end’s. The compatibility layer should go into its own -module.

-
-

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

Bug Tracker

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

-

Credits

+

Credits

-

Authors

+

Authors

-

Contributors

+

Contributors

-

Other credits

+

Other credits

The development of this module has been paid for by Pro Velo.

-

Maintainers

+

Maintainers

This module is part of the coopiteasy/cie-timesheet project on GitHub.

You are welcome to contribute.

diff --git a/hr_timesheet_overtime/tests/test_overtime.py b/hr_timesheet_overtime/tests/test_overtime.py index b4ff636..52f12e9 100644 --- a/hr_timesheet_overtime/tests/test_overtime.py +++ b/hr_timesheet_overtime/tests/test_overtime.py @@ -72,7 +72,7 @@ def setUpClass(cls): "date": "2019-12-02", "name": "-", "sheet_id": cls.ts1.id, - "hours_worked": 10.0, # 1 hour overtime + "unit_amount": 10.0, # 1 hour overtime "user_id": cls.employee1.user_id.id, } ) @@ -85,7 +85,7 @@ def setUpClass(cls): "date": date(2019, 12, day), "name": "-", "sheet_id": cls.ts1.id, - "hours_worked": 9.0, # expected time + "unit_amount": 9.0, # expected time "user_id": cls.employee1.user_id.id, } ) @@ -121,7 +121,7 @@ def test_overtime_02(self): "date": date(2019, 12, day), "name": "-", "sheet_id": ts2.id, - "hours_worked": 10.0, # 1 hour overtime + "unit_amount": 10.0, # 1 hour overtime "user_id": self.employee1.user_id.id, } ) @@ -134,7 +134,7 @@ def test_overtime_02(self): "date": date(2019, 12, day), "name": "-", "sheet_id": ts2.id, - "hours_worked": 9.0, # expected time + "unit_amount": 9.0, # expected time "user_id": self.employee1.user_id.id, } ) @@ -182,7 +182,7 @@ def test_overtime_04(self): "date": "2019-12-09", "name": "-", "sheet_id": ts2.id, - "hours_worked": 10.0, # 1 hour overtime + "unit_amount": 10.0, # 1 hour overtime "user_id": self.employee1.user_id.id, } ) @@ -195,7 +195,7 @@ def test_overtime_04(self): "date": date(2019, 12, day), "name": "-", "sheet_id": ts2.id, - "hours_worked": 9.0, # expected time + "unit_amount": 9.0, # expected time "user_id": self.employee1.user_id.id, } ) @@ -256,7 +256,7 @@ def test_overtime_05(self): "date": "2020-01-06", "name": "-", "sheet_id": self.ts2.id, - "hours_worked": 9.0, # expected time from previous contract + "unit_amount": 9.0, # expected time from previous contract "user_id": self.employee1.user_id.id, } ) @@ -270,7 +270,7 @@ def test_overtime_05(self): "date": date(2020, 1, day), "name": "-", "sheet_id": self.ts2.id, - "hours_worked": 4.0, # expected time from new contract + "unit_amount": 4.0, # expected time from new contract "user_id": self.employee1.user_id.id, } ) @@ -301,7 +301,7 @@ def test_overtime_archived_timesheet(self): "date": date(2019, 12, day), "name": "-", "sheet_id": ts2.id, - "hours_worked": 10.0, # 1 hour overtime + "unit_amount": 10.0, # 1 hour overtime "user_id": self.employee1.user_id.id, } ) @@ -406,8 +406,7 @@ def test_stored_change_today(self): ("sheet_id", "=", self.ts1.id), ] ) - line.hours_worked = 10 - self.assertEqual(line.unit_amount, 10) + line.unit_amount = 10 self.assertEqual(self.ts1.timesheet_overtime_trimmed, 2) self.assertEqual(self.ts1.timesheet_overtime, 2) self.assertEqual(self.ts1.total_overtime, 2) diff --git a/hr_timesheet_overtime/views/hr_timesheet_sheet_view.xml b/hr_timesheet_overtime/views/hr_timesheet_sheet_view.xml index ef491c2..eb30eb0 100644 --- a/hr_timesheet_overtime/views/hr_timesheet_sheet_view.xml +++ b/hr_timesheet_overtime/views/hr_timesheet_sheet_view.xml @@ -58,40 +58,6 @@ decoration-info="total_overtime >= 0" /> - - - - hours_worked - - - - - - - - - - - - - - - @@ -129,20 +95,4 @@ - - - - diff --git a/hr_timesheet_overtime_rate/README.rst b/hr_timesheet_overtime_rate/README.rst new file mode 100644 index 0000000..9baae5f --- /dev/null +++ b/hr_timesheet_overtime_rate/README.rst @@ -0,0 +1,87 @@ +============= +Overtime Rate +============= + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:36d3b7bc33750523cfa2cc468002678f8db599e083759ba12ede988ee84d6431 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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-coopiteasy%2Fcie--timesheet-lightgray.png?logo=github + :target: https://github.com/coopiteasy/cie-timesheet/tree/16.0/hr_timesheet_overtime_rate + :alt: coopiteasy/cie-timesheet + +|badge1| |badge2| |badge3| + +Define an extra rate for working certain days. + +**Table of contents** + +.. contents:: + :local: + +Known issues / Roadmap +====================== + +There is a problem with the way this module handles rates for overtime. If the +rate ever changes, things will start to break. + +At time of writing (2024-06-28), the way a rate is computed for a date is by +looking _exclusively_ at the corresponding day of the week. This should be more +robust. + +Because ``unit_amount`` is computed from ``hours_worked``, this module is not +compatible with ``hr_timesheet_begin_end``.To make this module subsequently +compatible with ``hr_timesheet_begin_end``, ``hours_worked`` must be computed +from ``time_stop`` and ``time_start``, and ``unit_amount`` must use this +module's computation method instead of ``hr_timesheet_begin_end``'s. The +compatibility layer should go into its own module. + +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 +~~~~~~~ + +* Coop IT Easy SC + +Contributors +~~~~~~~~~~~~ + +* `Coop IT Easy SC `_: + + * Carmen Bianca BAKKER + +Maintainers +~~~~~~~~~~~ + +.. |maintainer-carmenbianca| image:: https://github.com/carmenbianca.png?size=40px + :target: https://github.com/carmenbianca + :alt: carmenbianca + +Current maintainer: + +|maintainer-carmenbianca| + +This module is part of the `coopiteasy/cie-timesheet `_ project on GitHub. + +You are welcome to contribute. diff --git a/hr_timesheet_overtime_rate/__init__.py b/hr_timesheet_overtime_rate/__init__.py new file mode 100644 index 0000000..3eb7887 --- /dev/null +++ b/hr_timesheet_overtime_rate/__init__.py @@ -0,0 +1,5 @@ +# SPDX-FileCopyrightText: 2024 Coop IT Easy SC +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +from . import models diff --git a/hr_timesheet_overtime_rate/__manifest__.py b/hr_timesheet_overtime_rate/__manifest__.py new file mode 100644 index 0000000..b8c3f79 --- /dev/null +++ b/hr_timesheet_overtime_rate/__manifest__.py @@ -0,0 +1,28 @@ +# SPDX-FileCopyrightText: 2024 Coop IT Easy SC +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +{ + "name": "Overtime Rate", + "summary": """ + Define an extra rate for working certain days.""", + "version": "16.0.1.0.0", + "category": "Human Resources", + "website": "https://github.com/coopiteasy/cie-timesheet", + "author": "Coop IT Easy SC", + "maintainers": ["carmenbianca"], + "license": "AGPL-3", + "application": False, + "depends": [ + "hr_timesheet_sheet", + ], + "excludes": [], + "data": [ + "security/ir.model.access.csv", + "views/resource_views.xml", + "views/account_analytic_line_views.xml", + "views/hr_timesheet_sheet_views.xml", + ], + "demo": [], + "qweb": [], +} diff --git a/hr_timesheet_overtime/migrations/16.0.3.0.0/post-upgrade.py b/hr_timesheet_overtime_rate/migrations/16.0.1.0.0/post-upgrade.py similarity index 93% rename from hr_timesheet_overtime/migrations/16.0.3.0.0/post-upgrade.py rename to hr_timesheet_overtime_rate/migrations/16.0.1.0.0/post-upgrade.py index 508abce..9cc5489 100644 --- a/hr_timesheet_overtime/migrations/16.0.3.0.0/post-upgrade.py +++ b/hr_timesheet_overtime_rate/migrations/16.0.1.0.0/post-upgrade.py @@ -8,7 +8,7 @@ def migrate(cr, version): # with sensible data. # # TODO: Does this run upon module installation? This needs to be run on - # module installation as well. + # module installation. cr.execute( # Perfect symmetry is joyous """ diff --git a/hr_timesheet_overtime_rate/models/__init__.py b/hr_timesheet_overtime_rate/models/__init__.py new file mode 100644 index 0000000..8bfbbd0 --- /dev/null +++ b/hr_timesheet_overtime_rate/models/__init__.py @@ -0,0 +1,9 @@ +# SPDX-FileCopyrightText: 2024 Coop IT Easy SC +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +from . import account_analytic_line +from . import hr_timesheet_sheet +from . import hr_timesheet_sheet_line +from . import resource_overtime +from . import resource_overtime_rate diff --git a/hr_timesheet_overtime/models/account_analytic_line.py b/hr_timesheet_overtime_rate/models/account_analytic_line.py similarity index 88% rename from hr_timesheet_overtime/models/account_analytic_line.py rename to hr_timesheet_overtime_rate/models/account_analytic_line.py index 5706ffc..d27e8a0 100644 --- a/hr_timesheet_overtime/models/account_analytic_line.py +++ b/hr_timesheet_overtime_rate/models/account_analytic_line.py @@ -1,12 +1,9 @@ -# Copyright 2020 Coop IT Easy SC -# - Vincent Van Rossem -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -import logging +# SPDX-FileCopyrightText: 2024 Coop IT Easy SC +# +# SPDX-License-Identifier: AGPL-3.0-or-later from odoo import api, fields, models -_logger = logging.getLogger(__name__) - class AnalyticLine(models.Model): """ diff --git a/hr_timesheet_overtime_rate/models/hr_timesheet_sheet.py b/hr_timesheet_overtime_rate/models/hr_timesheet_sheet.py new file mode 100644 index 0000000..9489431 --- /dev/null +++ b/hr_timesheet_overtime_rate/models/hr_timesheet_sheet.py @@ -0,0 +1,14 @@ +# SPDX-FileCopyrightText: 2024 Coop IT Easy SC +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +from odoo import models + + +class HrTimesheetSheet(models.Model): + _inherit = "hr_timesheet.sheet" + + def _get_default_sheet_line(self, matrix, key): + result = super()._get_default_sheet_line(matrix, key) + result["hours_worked"] = sum(t.hours_worked for t in matrix[key]) + return result diff --git a/hr_timesheet_overtime/models/hr_timesheet_sheet_line.py b/hr_timesheet_overtime_rate/models/hr_timesheet_sheet_line.py similarity index 100% rename from hr_timesheet_overtime/models/hr_timesheet_sheet_line.py rename to hr_timesheet_overtime_rate/models/hr_timesheet_sheet_line.py diff --git a/hr_timesheet_overtime/models/resource_overtime.py b/hr_timesheet_overtime_rate/models/resource_overtime.py similarity index 100% rename from hr_timesheet_overtime/models/resource_overtime.py rename to hr_timesheet_overtime_rate/models/resource_overtime.py diff --git a/hr_timesheet_overtime/models/resource_overtime_rate.py b/hr_timesheet_overtime_rate/models/resource_overtime_rate.py similarity index 100% rename from hr_timesheet_overtime/models/resource_overtime_rate.py rename to hr_timesheet_overtime_rate/models/resource_overtime_rate.py diff --git a/hr_timesheet_overtime_rate/readme/CONTRIBUTORS.rst b/hr_timesheet_overtime_rate/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..f1ac675 --- /dev/null +++ b/hr_timesheet_overtime_rate/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* `Coop IT Easy SC `_: + + * Carmen Bianca BAKKER diff --git a/hr_timesheet_overtime_rate/readme/DESCRIPTION.rst b/hr_timesheet_overtime_rate/readme/DESCRIPTION.rst new file mode 100644 index 0000000..2f57b00 --- /dev/null +++ b/hr_timesheet_overtime_rate/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +Define an extra rate for working certain days. diff --git a/hr_timesheet_overtime_rate/readme/ROADMAP.rst b/hr_timesheet_overtime_rate/readme/ROADMAP.rst new file mode 100644 index 0000000..b590c14 --- /dev/null +++ b/hr_timesheet_overtime_rate/readme/ROADMAP.rst @@ -0,0 +1,13 @@ +There is a problem with the way this module handles rates for overtime. If the +rate ever changes, things will start to break. + +At time of writing (2024-06-28), the way a rate is computed for a date is by +looking _exclusively_ at the corresponding day of the week. This should be more +robust. + +Because ``unit_amount`` is computed from ``hours_worked``, this module is not +compatible with ``hr_timesheet_begin_end``.To make this module subsequently +compatible with ``hr_timesheet_begin_end``, ``hours_worked`` must be computed +from ``time_stop`` and ``time_start``, and ``unit_amount`` must use this +module's computation method instead of ``hr_timesheet_begin_end``'s. The +compatibility layer should go into its own module. diff --git a/hr_timesheet_overtime/security/ir.model.access.csv b/hr_timesheet_overtime_rate/security/ir.model.access.csv similarity index 100% rename from hr_timesheet_overtime/security/ir.model.access.csv rename to hr_timesheet_overtime_rate/security/ir.model.access.csv diff --git a/hr_timesheet_overtime_rate/static/description/index.html b/hr_timesheet_overtime_rate/static/description/index.html new file mode 100644 index 0000000..85c3b42 --- /dev/null +++ b/hr_timesheet_overtime_rate/static/description/index.html @@ -0,0 +1,436 @@ + + + + + +Overtime Rate + + + +
+

Overtime Rate

+ + +

Beta License: AGPL-3 coopiteasy/cie-timesheet

+

Define an extra rate for working certain days.

+

Table of contents

+ +
+

Known issues / Roadmap

+

There is a problem with the way this module handles rates for overtime. If the +rate ever changes, things will start to break.

+

At time of writing (2024-06-28), the way a rate is computed for a date is by +looking _exclusively_ at the corresponding day of the week. This should be more +robust.

+

Because unit_amount is computed from hours_worked, this module is not +compatible with hr_timesheet_begin_end.To make this module subsequently +compatible with hr_timesheet_begin_end, hours_worked must be computed +from time_stop and time_start, and unit_amount must use this +module’s computation method instead of hr_timesheet_begin_end’s. The +compatibility layer should go into its own module.

+
+
+

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

+
    +
  • Coop IT Easy SC
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

Current maintainer:

+

carmenbianca

+

This module is part of the coopiteasy/cie-timesheet project on GitHub.

+

You are welcome to contribute.

+
+
+
+ + diff --git a/hr_timesheet_overtime_rate/tests/__init__.py b/hr_timesheet_overtime_rate/tests/__init__.py new file mode 100644 index 0000000..f143b69 --- /dev/null +++ b/hr_timesheet_overtime_rate/tests/__init__.py @@ -0,0 +1,5 @@ +# SPDX-FileCopyrightText: 2024 Coop IT Easy SC +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +from . import test_overtime diff --git a/hr_timesheet_overtime_rate/tests/test_overtime.py b/hr_timesheet_overtime_rate/tests/test_overtime.py new file mode 100644 index 0000000..ab23cfe --- /dev/null +++ b/hr_timesheet_overtime_rate/tests/test_overtime.py @@ -0,0 +1,58 @@ +# SPDX-FileCopyrightText: 2024 Coop IT Easy SC +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +from datetime import date + +from odoo.tests.common import TransactionCase + + +class TestOvertime(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + # users + user1_dict = {"name": "User 1", "login": "user1", "password": "user1"} + cls.user1 = cls.env["res.users"].create(user1_dict) + # employees + employee1_dict = { + "name": "Employee 1", + "user_id": cls.user1.id, + "address_id": cls.user1.partner_id.id, + } + cls.employee1 = cls.env["hr.employee"].create(employee1_dict) + # projects + cls.project_01 = cls.env["project.project"].create({"name": "Project 01"}) + + def test_write_multiple_lines(self): + """When writing multiple analytic lines, overtime rates are applied + separately to each record. + """ + overtime = self.env["resource.overtime"].create({"name": "test"}) + self.env["resource.overtime.rate"].create( + { + "name": "test", + "dayofweek": "0", # Monday + "rate": 2.0, + "overtime_id": overtime.id, + } + ) + + lines = self.env["account.analytic.line"].browse() + # monday and tuesday + for day in range(9, 11): + lines += self.env["account.analytic.line"].create( + { + "project_id": self.project_01.id, + "amount": 0.0, + "date": date(2019, 12, day), + "name": "-", + "employee_id": self.employee1.id, + } + ) + lines.write({"hours_worked": 1}) + + self.assertEqual(lines[0].unit_amount, 2) + self.assertEqual(lines[0].hours_worked, 1) + self.assertEqual(lines[1].unit_amount, 1) + self.assertEqual(lines[1].hours_worked, 1) diff --git a/hr_timesheet_overtime/views/account_analytic_line_views.xml b/hr_timesheet_overtime_rate/views/account_analytic_line_views.xml similarity index 100% rename from hr_timesheet_overtime/views/account_analytic_line_views.xml rename to hr_timesheet_overtime_rate/views/account_analytic_line_views.xml diff --git a/hr_timesheet_overtime_rate/views/hr_timesheet_sheet_views.xml b/hr_timesheet_overtime_rate/views/hr_timesheet_sheet_views.xml new file mode 100644 index 0000000..88eeea4 --- /dev/null +++ b/hr_timesheet_overtime_rate/views/hr_timesheet_sheet_views.xml @@ -0,0 +1,59 @@ + + + + hr.timesheet.sheet.form + hr_timesheet.sheet + + + + + + hours_worked + + + + + + + + + + + + + + + + + + + + + diff --git a/hr_timesheet_overtime/views/resource_view.xml b/hr_timesheet_overtime_rate/views/resource_views.xml similarity index 100% rename from hr_timesheet_overtime/views/resource_view.xml rename to hr_timesheet_overtime_rate/views/resource_views.xml diff --git a/setup/hr_timesheet_overtime_rate/odoo/addons/hr_timesheet_overtime_rate b/setup/hr_timesheet_overtime_rate/odoo/addons/hr_timesheet_overtime_rate new file mode 120000 index 0000000..cb4c829 --- /dev/null +++ b/setup/hr_timesheet_overtime_rate/odoo/addons/hr_timesheet_overtime_rate @@ -0,0 +1 @@ +../../../../hr_timesheet_overtime_rate \ No newline at end of file diff --git a/setup/hr_timesheet_overtime_rate/setup.py b/setup/hr_timesheet_overtime_rate/setup.py new file mode 100644 index 0000000..28c57bb --- /dev/null +++ b/setup/hr_timesheet_overtime_rate/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +)