diff --git a/project_working_time_task_portal/i18n/fr.po b/project_working_time_task_portal/i18n/fr.po index ac029cc..9eab4d9 100644 --- a/project_working_time_task_portal/i18n/fr.po +++ b/project_working_time_task_portal/i18n/fr.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-18 14:17+0000\n" -"PO-Revision-Date: 2025-11-18 14:17+0000\n" +"POT-Creation-Date: 2025-11-18 16:44+0000\n" +"PO-Revision-Date: 2025-11-18 16:44+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -67,6 +67,15 @@ msgstr "Jours restants facturables" msgid "Billable Remaining Hours" msgstr "Heures restantes facturables" +#. module: project_working_time_task_portal +#: model:ir.model.fields,help:project_working_time_task_portal.field_project_task__total_billable_hours_spent +msgid "" +"Billable time spent on this task and its sub-tasks (and their own sub-" +"tasks)." +msgstr "" +"Temps facturable passé sur cette tâche et ses sous-tâches (et leurs propres sous-" +"tâches)." + #. module: project_working_time_task_portal #: model_terms:ir.ui.view,arch_db:project_working_time_task_portal.project_working_time_view_task_form msgid "Non Billable Effective Days" @@ -78,6 +87,15 @@ msgstr "Jours passés non facturables" msgid "Non Billable Effective Hours" msgstr "Heures passées non facturables" +#. module: project_working_time_task_portal +#: model:ir.model.fields,help:project_working_time_task_portal.field_project_task__total_non_billable_hours_spent +msgid "" +"Non billable time spent on this task and its sub-tasks (and their own sub-" +"tasks)." +msgstr "" +"Temps non facturable passé sur cette tâche et ses sous-tâches (et leurs propres sous-" +"tâches)." + #. module: project_working_time_task_portal #: model_terms:ir.ui.view,arch_db:project_working_time_task_portal.portal_my_task_remaining_hours msgid "Remaining Hours:" @@ -116,9 +134,32 @@ msgstr "Sous-tâches heures passées non facturables" msgid "Task" msgstr "Tâche" +#. module: project_working_time_task_portal +#: model_terms:ir.ui.view,arch_db:project_working_time_task_portal.project_working_time_view_task_form +msgid "Total Billable Days" +msgstr "Total des jours facturables" + +#. module: project_working_time_task_portal +#: model:ir.model.fields,field_description:project_working_time_task_portal.field_project_task__total_billable_hours_spent +#: model_terms:ir.ui.view,arch_db:project_working_time_task_portal.project_working_time_view_task_form +msgid "Total Billable Hours" +msgstr "Total des heures facturables" + #. module: project_working_time_task_portal #: model:ir.model.fields,help:project_working_time_task_portal.field_project_task__billable_remaining_hours msgid "" "Total Billable remaining time (without exclude_from_sale_order timesheet " "lines), can be re-estimated periodically by the assignee of the task." msgstr "" +"Nombre d'heures allouées moins le nombre d'heures passées facturées." + +#. module: project_working_time_task_portal +#: model_terms:ir.ui.view,arch_db:project_working_time_task_portal.project_working_time_view_task_form +msgid "Total Non Billable Days" +msgstr "Total des jours non facturables" + +#. module: project_working_time_task_portal +#: model:ir.model.fields,field_description:project_working_time_task_portal.field_project_task__total_non_billable_hours_spent +#: model_terms:ir.ui.view,arch_db:project_working_time_task_portal.project_working_time_view_task_form +msgid "Total Non Billable Hours" +msgstr "Total des heures non facturables" diff --git a/project_working_time_task_portal/models/billable_time.py b/project_working_time_task_portal/models/billable_time.py index 6260516..5bec0e5 100644 --- a/project_working_time_task_portal/models/billable_time.py +++ b/project_working_time_task_portal/models/billable_time.py @@ -45,6 +45,20 @@ class Task(models.Model): recursive=True, ) + total_billable_hours_spent = fields.Float( + "Total Billable Hours", + compute="_compute_total_billable_hours_spent", + store=True, + help="Billable time spent on this task and its sub-tasks (and their own sub-tasks).", + ) + + total_non_billable_hours_spent = fields.Float( + "Total Non Billable Hours", + compute="_compute_total_non_billable_hours_spent", + store=True, + help="Non billable time spent on this task and its sub-tasks (and their own sub-tasks).", + ) + @api.depends('timesheet_ids.unit_amount') def _compute_billable_effective_hours(self): if not any(self._ids): @@ -94,3 +108,17 @@ class Task(models.Model): task.billable_progress = round(100.0 * task_total_hours / task.planned_hours, 2) else: task.billable_progress = 0.0 + + @api.depends('billable_effective_hours', 'subtask_billable_effective_hours') + def _compute_total_billable_hours_spent(self): + for task in self: + task.total_billable_hours_spent = ( + task.billable_effective_hours + task.subtask_billable_effective_hours + ) + + @api.depends("non_billable_effective_hours", "subtask_non_billable_effective_hours") + def _compute_total_non_billable_hours_spent(self): + for task in self: + task.total_non_billable_hours_spent = ( + task.non_billable_effective_hours + task.subtask_non_billable_effective_hours + ) diff --git a/project_working_time_task_portal/views/hr_timesheet_view_task_form2.xml b/project_working_time_task_portal/views/hr_timesheet_view_task_form2.xml index b9f382c..3db45ab 100644 --- a/project_working_time_task_portal/views/hr_timesheet_view_task_form2.xml +++ b/project_working_time_task_portal/views/hr_timesheet_view_task_form2.xml @@ -31,6 +31,24 @@ + + + + + + + +