OdooWiki OCA HUB

Sale Timesheet Rounded

sale_timesheet_rounded folder_open OCA/timesheet open_in_new
Sales License: AGPL-3

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

Round 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

projecthr_timesheetsale_timesheet

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-03
Confirmed (verified in repository and branch) Estimated (unverified) No information

Confirmation status: 7 confirmed, 2 with no information of 9 versions.

Sources · Odoo 13.0

Confirmed on 2026-11-03 in branch 13.0 of OCA/timesheet.

terminal Installation and usage

OCA documentation · Odoo 18.0

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

info

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.