Sale Timesheet Rounded

sale_timesheet_rounded
REPOSITORY
REPOSITORYOCA/timesheet
GIT
GIThttps://github.com/OCA/timesheet.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/timesheet/tree/18.0/sale_timesheet_rounded
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYSales
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, Mvillaescusa
WEBSITE
WEBSITEhttps://github.com/OCA/timesheet
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:17
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - project
    - analytic
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - uom
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - rating
    - resource
    - digest
    - hr_timesheet
    - hr
    - phone_validation
    - resource_mail
    - hr_hourly_cost
    - sale_timesheet
    - sale_project
    - sale_management
    - sale
    - sales_team
    - account_payment
    - account
    - onboarding
    - product
    - payment
    - utm
    - sale_service
    - project_account
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
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.

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
account_analytic_line_kanban_inherit account.analytic.line.kanban.inherit account.analytic.line xpath Inherits hr_timesheet.view_kanban_account_analytic_line
account_analytic_line_tree_inherit account.analytic.line.list.inherit account.analytic.line xpath Inherits hr_timesheet.hr_timesheet_line_tree
hr_timesheet_view_task_form2_inherited_inherit hr.timesheet.view.task.form2.inherited.inherit project.task xpath Inherits hr_timesheet.view_task_form2_inherited
project_project_form_inherit project.project.form.inherit project.project xpath Inherits project.edit_project
view_account_analytic_line_form_inherit account.analytic.line.form.inherit account.analytic.line xpath Inherits hr_timesheet.hr_timesheet_line_form
Models touched (5)

New fields (1)
  • unit_amount_rounded Float
    compute='_compute_unit_rounded' copy=False readonly=False store=True string='Quantity rounded'
Public methods (1)
  • read(self, fields=None, load='_classic_read')
    Replace the value of unit_amount by unit_amount_rounded. When context key `timesheet_rounding` is True we change the value of unit_amount with the rounded one. This affects `account_analytic_line._sale_determine_order_line`.

New fields (0)

No new fields.

Public methods (3)
  • button_cancel(self)
  • button_draft(self)
  • unlink(self)

New fields (3)
  • timesheet_rounding_factor Float
    default=100.0 string='Timesheet rounding factor in percentage'
  • timesheet_rounding_method Selection
    default='NO' help='If you activate the rounding of timesheet lines, only new entries will be rounded (i.e. existing lines will not be rounded automatically).' required=True selection=[('NO', 'No rounding'), ('UP', 'Up'), ('HALF-UP', 'Closest'), ('DOWN', 'Down')] string='Rounding method'
  • timesheet_rounding_unit Float
    default=0.0 help='1.0 = hour\n 0.25 = 15 min\n 0.084 ~= 5 min\n 0.017 ~= 1 min\n ' string='Rounding Unit'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • create_invoices(self)
    Override method from sale/wizard/sale_make_invoice_advance.py When the user want to invoice the timesheets to the SO up to a specific period then we need to recompute the qty_to_invoice for each product_id in sale.order.line, before creating the invoice.

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/timesheet
GIT
GIThttps://github.com/OCA/timesheet.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/timesheet/tree/17.0/sale_timesheet_rounded
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYSales
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSWeblate, oca-ci, sonhd91
WEBSITE
WEBSITEhttps://github.com/OCA/timesheet
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:09
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - project
    - analytic
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - rating
    - resource
    - digest
    - hr_timesheet
    - hr
    - phone_validation
    - hr_hourly_cost
    - sale_timesheet
    - sale_project
    - sale_management
    - sale
    - sales_team
    - account_payment
    - account
    - onboarding
    - product
    - payment
    - utm
    - sale_service
    - project_account
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
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.

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
account_analytic_line_kanban_inherit account.analytic.line.kanban.inherit account.analytic.line xpath Inherits hr_timesheet.view_kanban_account_analytic_line
account_analytic_line_tree_inherit account.analytic.line.tree.inherit account.analytic.line xpath Inherits hr_timesheet.hr_timesheet_line_tree
hr_timesheet_view_task_form2_inherited_inherit hr.timesheet.view.task.form2.inherited.inherit project.task xpath Inherits hr_timesheet.view_task_form2_inherited
project_project_form_inherit project.project.form.inherit project.project xpath Inherits project.edit_project
view_account_analytic_line_form_inherit account.analytic.line.form.inherit account.analytic.line xpath Inherits hr_timesheet.hr_timesheet_line_form
Models touched (5)

New fields (1)
  • unit_amount_rounded Float
    compute='_compute_unit_rounded' copy=False readonly=False store=True string='Quantity rounded'
Public methods (1)
  • read(self, fields=None, load='_classic_read')
    Replace the value of unit_amount by unit_amount_rounded. When context key `timesheet_rounding` is True we change the value of unit_amount with the rounded one. This affects `account_analytic_line._sale_determine_order_line`.

New fields (0)

No new fields.

Public methods (3)
  • button_cancel(self)
  • button_draft(self)
  • unlink(self)

New fields (3)
  • timesheet_rounding_factor Float
    default=100.0 string='Timesheet rounding factor in percentage'
  • timesheet_rounding_method Selection
    default='NO' help='If you activate the rounding of timesheet lines, only new entries will be rounded (i.e. existing lines will not be rounded automatically).' required=True selection=[('NO', 'No rounding'), ('UP', 'Up'), ('HALF_UP', 'Closest'), ('DOWN', 'Down')] string='Rounding method'
  • timesheet_rounding_unit Float
    default=0.0 help='1.0 = hour\n 0.25 = 15 min\n 0.084 ~= 5 min\n 0.017 ~= 1 min\n ' string='Rounding Unit'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • create_invoices(self)
    Override method from sale/wizard/sale_make_invoice_advance.py When the user want to invoice the timesheets to the SO up to a specific period then we need to recompute the qty_to_invoice for each product_id in sale.order.line, before creating the invoice.

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/timesheet
GIT
GIThttps://github.com/OCA/timesheet.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/timesheet/tree/16.0/sale_timesheet_rounded
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYSales
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSNils Hamerlinck, Weblate, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/timesheet
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:56
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - project
    - analytic
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - rating
    - resource
    - digest
    - hr_timesheet
    - hr
    - hr_hourly_cost
    - sale_timesheet
    - sale_project
    - sale_management
    - sale
    - sales_team
    - account_payment
    - account
    - product
    - payment
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
account_analytic_line_kanban_inherit account.analytic.line.kanban.inherit account.analytic.line xpath Inherits hr_timesheet.view_kanban_account_analytic_line
account_analytic_line_tree_inherit account.analytic.line.tree.inherit account.analytic.line xpath Inherits hr_timesheet.hr_timesheet_line_tree
hr_timesheet_view_task_form2_inherited_inherit hr.timesheet.view.task.form2.inherited.inherit project.task xpath Inherits hr_timesheet.view_task_form2_inherited
project_project_form_inherit project.project.form.inherit project.project xpath Inherits project.edit_project
view_account_analytic_line_form_inherit account.analytic.line.form.inherit account.analytic.line xpath Inherits hr_timesheet.hr_timesheet_line_form
Models touched (5)

New fields (1)
  • unit_amount_rounded Float
    compute='_compute_unit_rounded' copy=False readonly=False store=True string='Quantity rounded'
Public methods (2)
  • read(self, fields=None, load='_classic_read')
    Replace the value of unit_amount by unit_amount_rounded. When context key `timesheet_rounding` is True we change the value of unit_amount with the rounded one. This affects `account_analytic_line._sale_determine_order_line`.
  • read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
    @api.model
    Replace the value of unit_amount by unit_amount_rounded. When context key `timesheet_rounding` is True we change the value of unit_amount with the rounded one. This affects `sale_order_line._compute_delivered_quantity` which in turns compute the delivered qty on SO line.

New fields (0)

No new fields.

Public methods (3)
  • button_cancel(self)
  • button_draft(self)
  • unlink(self)

New fields (3)
  • timesheet_rounding_factor Float
    default=100.0 string='Timesheet rounding factor in percentage'
  • timesheet_rounding_method Selection
    default='NO' help='If you activate the rounding of timesheet lines, only new entries will be rounded (i.e. existing lines will not be rounded automatically).' required=True selection=[('NO', 'No rounding'), ('UP', 'Up'), ('HALF_UP', 'Closest'), ('DOWN', 'Down')] string='Rounding method'
  • timesheet_rounding_unit Float
    default=0.0 help='1.0 = hour\n 0.25 = 15 min\n 0.084 ~= 5 min\n 0.017 ~= 1 min\n ' string='Rounding Unit'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • create_invoices(self)
    Override method from sale/wizard/sale_make_invoice_advance.py When the user want to invoice the timesheets to the SO up to a specific period then we need to recompute the qty_to_invoice for each product_id in sale.order.line, before creating the invoice.

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/timesheet
GIT
GIThttps://github.com/OCA/timesheet.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/timesheet/tree/15.0/sale_timesheet_rounded
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYSales
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSDenis Leemann, Weblate, OCA-git-bot, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/timesheet
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:41
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - project
    - analytic
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - rating
    - resource
    - digest
    - hr_timesheet
    - hr
    - sale_timesheet
    - sale_project
    - sale_management
    - sale
    - sales_team
    - payment
    - account
    - product
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
account_analytic_line_kanban_inherit account.analytic.line.kanban.inherit account.analytic.line xpath Inherits hr_timesheet.view_kanban_account_analytic_line
account_analytic_line_tree_inherit account.analytic.line.tree.inherit account.analytic.line xpath Inherits hr_timesheet.hr_timesheet_line_tree
hr_timesheet_view_task_form2_inherited_inherit hr.timesheet.view.task.form2.inherited.inherit project.task xpath Inherits hr_timesheet.view_task_form2_inherited
project_project_form_inherit project.project.form.inherit project.project xpath Inherits project.edit_project
view_account_analytic_line_form_inherit account.analytic.line.form.inherit account.analytic.line xpath Inherits analytic.view_account_analytic_line_form
Models touched (3)

New fields (1)
  • unit_amount_rounded Float
    compute='_compute_unit_rounded' copy=False readonly=False store=True string='Quantity rounded'
Public methods (2)
  • read(self, fields=None, load='_classic_read')
    Replace the value of unit_amount by unit_amount_rounded. When context key `timesheet_rounding` is True we change the value of unit_amount with the rounded one. This affects `account_analytic_line._sale_determine_order_line`.
  • read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
    @api.model
    Replace the value of unit_amount by unit_amount_rounded. When context key `timesheet_rounding` is True we change the value of unit_amount with the rounded one. This affects `sale_order_line._compute_delivered_quantity` which in turns compute the delivered qty on SO line.

New fields (3)
  • timesheet_rounding_factor Float
    default=100.0 string='Timesheet rounding factor in percentage'
  • timesheet_rounding_method Selection
    default='NO' help='If you activate the rounding of timesheet lines, only new entries will be rounded (i.e. existing lines will not be rounded automatically).' required=True selection=[('NO', 'No rounding'), ('UP', 'Up'), ('HALF_UP', 'Closest'), ('DOWN', 'Down')] string='Rounding method'
  • timesheet_rounding_unit Float
    default=0.0 help='1.0 = hour\n 0.25 = 15 min\n 0.084 ~= 5 min\n 0.017 ~= 1 min\n ' string='Rounding Unit'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/timesheet
GIT
GIThttps://github.com/OCA/timesheet.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/timesheet/tree/14.0/sale_timesheet_rounded
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYSales
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSOCA Transbot, oca-travis, Weblate, OCA-git-bot, bosd, Juany Davila, fshah-initos
WEBSITE
WEBSITEhttps://github.com/OCA/timesheet
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:09
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - project
    - analytic
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - rating
    - resource
    - digest
    - hr_timesheet
    - hr
    - sale_timesheet
    - sale_project
    - sale_management
    - sale
    - sales_team
    - payment
    - account
    - product
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
account_analytic_line_kanban_inherit account.analytic.line.kanban.inherit account.analytic.line xpath Inherits hr_timesheet.view_kanban_account_analytic_line
account_analytic_line_tree_inherit account.analytic.line.tree.inherit account.analytic.line xpath Inherits hr_timesheet.hr_timesheet_line_tree
hr_timesheet_view_task_form2_inherited_inherit hr.timesheet.view.task.form2.inherited.inherit project.task xpath Inherits hr_timesheet.view_task_form2_inherited
project_project_form_inherit project.project.form.inherit project.project xpath Inherits project.edit_project
view_account_analytic_line_form_inherit account.analytic.line.form.inherit account.analytic.line xpath Inherits analytic.view_account_analytic_line_form
Models touched (3)

New fields (1)
  • unit_amount_rounded Float
    compute='_compute_unit_rounded' copy=False readonly=False store=True string='Quantity rounded'
Public methods (2)
  • read(self, fields=None, load='_classic_read')
    Replace the value of unit_amount by unit_amount_rounded. When context key `timesheet_rounding` is True we change the value of unit_amount with the rounded one. This affects `account_analytic_line._sale_determine_order_line`.
  • read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
    @api.model
    Replace the value of unit_amount by unit_amount_rounded. When context key `timesheet_rounding` is True we change the value of unit_amount with the rounded one. This affects `sale_order_line._compute_delivered_quantity` which in turns compute the delivered qty on SO line.

New fields (3)
  • timesheet_rounding_factor Float
    default=100.0 string='Timesheet rounding factor in percentage'
  • timesheet_rounding_method Selection
    default='NO' help='If you activate the rounding of timesheet lines, only new entries will be rounded (i.e. existing lines will not be rounded automatically).' required=True selection=[('NO', 'No rounding'), ('UP', 'Up'), ('HALF_UP', 'Closest'), ('DOWN', 'Down')] string='Timesheet rounding method'
  • timesheet_rounding_unit Float
    default=0.0 help='1.0 = hour\n 0.25 = 15 min\n 0.084 ~= 5 min\n 0.017 ~= 1 min\n ' string='Timesheet rounding unit'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/timesheet
GIT
GIThttps://github.com/OCA/timesheet.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/timesheet/tree/13.0/sale_timesheet_rounded
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYSales
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSPedro M. Baeza, OCA Transbot, Adrien Peiffer, oca-travis, Weblate, OCA-git-bot, bosd
WEBSITE
WEBSITEhttps://github.com/OCA/timesheet
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:19
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - project
    - analytic
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - rating
    - resource
    - digest
    - hr_timesheet
    - hr
    - mail_bot
    - sale_timesheet
    - sale_management
    - sale
    - sales_team
    - payment
    - account
    - product
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
account_analytic_line_kanban_inherit account.analytic.line.kanban.inherit account.analytic.line xpath Inherits hr_timesheet.view_kanban_account_analytic_line
account_analytic_line_tree_inherit account.analytic.line.tree.inherit account.analytic.line xpath Inherits hr_timesheet.hr_timesheet_line_tree
hr_timesheet_view_task_form2_inherited_inherit hr.timesheet.view.task.form2.inherited.inherit project.task xpath Inherits hr_timesheet.view_task_form2_inherited
project_project_form_inherit project.project.form.inherit project.project xpath Inherits project.edit_project
view_account_analytic_line_form_inherit account.analytic.line.form.inherit account.analytic.line xpath Inherits analytic.view_account_analytic_line_form
Models touched (3)

New fields (1)
  • unit_amount_rounded Float
    compute='_compute_unit_rounded' copy=False readonly=False store=True string='Quantity rounded'
Public methods (2)
  • read(self, fields=None, load='_classic_read')
    Replace the value of unit_amount by unit_amount_rounded. When context key `timesheet_rounding` is True we change the value of unit_amount with the rounded one. This affects `account_analytic_line._sale_determine_order_line`.
  • read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
    @api.model
    Replace the value of unit_amount by unit_amount_rounded. When context key `timesheet_rounding` is True we change the value of unit_amount with the rounded one. This affects `sale_order_line._compute_delivered_quantity` which in turns compute the delivered qty on SO line.

New fields (3)
  • timesheet_rounding_factor Float
    default=100.0 string='Timesheet rounding factor in percentage'
  • timesheet_rounding_method Selection
    default='NO' help='If you activate the rounding of timesheet lines, only new entries will be rounded (i.e. existing lines will not be rounded automatically).' required=True selection=[('NO', 'No rounding'), ('UP', 'Up'), ('HALF_UP', 'Closest'), ('DOWN', 'Down')] string='Timesheet rounding method'
  • timesheet_rounding_unit Float
    default=0.0 help='1.0 = hour\n 0.25 = 15 min\n 0.084 ~= 5 min\n 0.017 ~= 1 min\n ' string='Timesheet rounding unit'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/timesheet
GIT
GIThttps://github.com/OCA/timesheet.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/timesheet/tree/12.0/sale_timesheet_rounded
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYSales
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSOCA Transbot, oca-travis, Weblate, OCA-git-bot, Jon Zaballa
WEBSITE
WEBSITEhttps://github.com/OCA/timesheet
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:23
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - project
    - base_setup
    - base
    - web
    - mail
    - bus
    - web_tour
    - portal
    - http_routing
    - rating
    - resource
    - digest
    - hr_timesheet
    - hr
    - analytic
    - decimal_precision
    - uom
    - sale_timesheet
    - sale_management
    - sale
    - sales_team
    - payment
    - account
    - product
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
account_analytic_line_kanban_inherit account.analytic.line.kanban.inherit account.analytic.line xpath Inherits hr_timesheet.view_kanban_account_analytic_line
account_analytic_line_tree_inherit account.analytic.line.tree.inherit account.analytic.line xpath Inherits hr_timesheet.hr_timesheet_line_tree
hr_timesheet_view_task_form2_inherited_inherit hr.timesheet.view.task.form2.inherited.inherit project.task xpath Inherits hr_timesheet.view_task_form2_inherited
project_project_form_inherit project.project.form.inherit project.project xpath Inherits project.edit_project
view_account_analytic_line_form_inherit account.analytic.line.form.inherit account.analytic.line xpath Inherits analytic.view_account_analytic_line_form
Models touched (3)

New fields (1)
  • unit_amount_rounded Float
    copy=False string='Quantity rounded'
Public methods (4)
  • create(self, values)
    @api.model
  • read(self, fields=None, load='_classic_read')
    @api.multi
    Replace the value of unit_amount by unit_amount_rounded. When context key `timesheet_rounding` is True we change the value of unit_amount with the rounded one. This affects `account_anaytic_line._sale_determine_order_line`.
  • read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
    @api.model
    Replace the value of unit_amount by unit_amount_rounded. When context key `timesheet_rounding` is True we change the value of unit_amount with the rounded one. This affects `sale_order_line._compute_delivered_quantity` which in turns compute the delivered qty on SO line.
  • write(self, values)
    @api.multi

New fields (3)
  • timesheet_rounding_factor Float
    default=100.0 string='Timesheet rounding factor in percentage'
  • timesheet_rounding_method Selection
    default='NO' help='If you activate the rounding of timesheet lines, only new entries will be rounded (i.e. existing lines will not be rounded automatically).' required=True selection=[('NO', 'No rounding'), ('UP', 'Up'), ('HALF_UP', 'Closest'), ('DOWN', 'Down')] string='Timesheet rounding method'
  • timesheet_rounding_unit Float
    default=0.0 help='1.0 = hour\n 0.25 = 15 min\n 0.084 ~= 5 min\n 0.017 ~= 1 min\n ' string='Timesheet rounding unit'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/timesheet
PULL REQUEST
PULL REQUEST[MIG] sale_timesheet_rounded : Migration to 19.0 (#917)