Sale Order Update Timesheet Price

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