TIP: You can type at any time to perform a new search.
Sale Order Update Timesheet Price
sale_order_update_timesheet_price · OCA/timesheet
- 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 ID | Name | Model | Type | Status |
|---|---|---|---|---|
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_updatedBooleanhelp='Technical field to know if the price has been updated' -
show_update_price_buttonBooleancompute='_compute_show_update_price_button'
No public methods.
New fields (5)
-
new_unit_priceFloatdigits='Product Price'required=True -
old_line_prefixChardefault='[Old Rate]' -
old_unit_priceFloatreadonly=Truerelated='order_line_id.price_unit' -
order_line_idMany2one → sale.order.linecomodel_name='sale.order.line'default=<expr>required=Truestring='Order Line' -
order_line_nameTextreadonly=Truerelated='order_line_id.name'
-
action_update_unit_price(self)