Round timesheet lines amounts in sales based on project' settings.
A typical use case is: you work 5 minutes but you want to invoice 15 minutes.
With this module you can configure a rounding unit or factor on the project and all the lines tracked on this project's tasks will show a rounded amount.
If you want you can override the value manually on each entry.
The delivered quantity on the sale order line - and by consequence on the invoice - will be computed using the rounded amount. Therefore, expense lines and other non-timesheet lines will be updated with a rounded amount that is equal to the amount.
WARNING: This module cannot be used with timesheet_grid without further adapation as an update of an existing timesheet line will NOT update the rounded amount. To achieve this, you need to override adjust_grid function to pass the force_compute context key.
auto_awesome What this module does
AI-generated from the code · Odoo 18.0Round timesheet quantities per project and use the rounded quantity to compute delivered quantities on sales orders and invoices. Configure rounding unit, method and factor on each project.
This module lets you round the time recorded on timesheets according to settings defined on each project, so that the quantity billed to the customer can differ from the exact time worked.
On a project form, in the settings page, you get a "Time rounding" group with three fields: a rounding method (No rounding, Up, Closest, Down), a rounding unit (for example 0.25 for 15 minutes) and a rounding factor in percentage. The factor must stay between 0 and 500.
Each timesheet line (account.analytic.line) gets a new stored, editable field "Quantity rounded". It is computed from the project's rounding settings and the entered duration, but you can override it manually on a line. The rounded quantity is shown next to the normal duration on the timesheet form, in the timesheet list (with a total) and in the kanban view, and on the task form as "Duration (rounded)".
When the delivered quantity of a sales order line is computed, the rounded quantities are used instead of the raw durations, so invoices based on timesheets reflect the rounded amounts. The module also adjusts the behaviour when posting, cancelling, resetting to draft or deleting invoices, and when using the advance payment invoice wizard, to avoid unwanted recomputation of rounded values.
Depends on
Required by other modules
Models and fields (5)
- account.move · extends an existing model
- project.project · extends an existing modeltimesheet_rounding_unit (Rounding Unit), timesheet_rounding_factor (Timesheet rounding factor in percentage), timesheet_rounding_method (Rounding method)
- sale.order.line · extends an existing model
- account.analytic.line · extends an existing modelunit_amount_rounded (Quantity rounded)
- sale.advance.payment.inv · extends an existing model
Text generated by AI (DeepSeek) from reading the Odoo 18.0 code on GitHub; it may contain mistakes, so check the code before deciding. View the code on GitHub
Availability by version
Reviewed: 2026-11-03Confirmation status: 7 confirmed, 2 with no information of 9 versions.
Sources · Odoo 16.0
Confirmed on 2026-11-03 in branch 16.0 of OCA/timesheet.
terminal Installation and usage
OCA documentation · Odoo 18.0Configuration
Source · Odoo 18.0Go to a project and set the following fields according to your needs:
- Timesheet rounding unit
Defines the rounding unit. For instance, if you want to round to 1 hour, you can set 1.0. If you want to round to 15 min set 0.25.
- Timesheet rounding method
Options: "No" (default), "Closest", "Up", "Down".
Please refer to odoo.tools.float_utils.float_round to understand the difference.
- Timesheet rounding factor (percentage)
When round unit is not defined you can round by a fixed %.
When using both a unit and a factor, the factor will be applied first:
> result = round(amount * percentage, unit)
No verified information in OCA: Installation, Usage.
Installation instructions, the distribution package, dependencies and configuration steps are not shown because they have not yet been verified in the module documentation for any version.
Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.