Repository
OCA/timesheet · module folder · Try on Runboat
Module version
1.0.0
Category
Uncategorized
Folder size
0.05 MB
License
AGPL-3
Application
No
Auto-installable
No
Website
https://github.com/OCA/timesheet
Last tracking update
2026-08-07 09:06:28
Authors
ACSONE SA/NV, Odoo Community Association (OCA)
Maintainers
ACSONE SA/NV, Odoo Community Association (OCA)
Committers
Weblate, OCA-git-bot, oca-ci, hda
Odoo dependencies
Python dependencies
None
System dependencies
None
Required by
None
Description
When a sale order line billed on delivered timesheets has been invoiced, Odoo forbids
modification of the unit price. When a price update is necessary, one can create a new
sale order or sale order line, but it is painful to link all projects, tasks, milestones
to the new order line.

This modules adds a button on already invoiced timesheet sale order lines to update the
unit price. It creates a new order line with the new price and re-links projects, tasks,
milestones and so line employee maps from the old line to the new line.

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
sale_order_form_view sale.order list Inherits sale.view_order_form
sale_order_unit_price_update_view_form sale.order.unit.price.update.view.form sale.order.unit.price.update form New
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (3)

New fields (0)

No new fields.

Public methods (1)
  • copy(self, default=None)
    This override is needed because in the timesheet_grid module of Odoo Enterprise a new timesheet is created by copy of another in some cases (see adjust_grid method). In these cases the _compute_so_line is not triggered and the so_line is taken from the copied timesheet and may not be the updated one.

New fields (2)
  • price_unit_updated Boolean
    help='Technical field to know if the price has been updated'
  • show_update_price_button Boolean
    compute='_compute_show_update_price_button'
Public methods (0)

No public methods.

New fields (5)
  • new_unit_price Float
    digits='Product Price' required=True
  • old_line_prefix Char
    default='[Old Rate]'
  • old_unit_price Float
    readonly=True related='order_line_id.price_unit'
  • order_line_id Many2one → sale.order.line
    comodel_name='sale.order.line' default=<expr> required=True string='Order Line'
  • order_line_name Text
    readonly=True related='order_line_id.name'
Public methods (1)
  • action_update_unit_price(self)