Thursday, February 12, 2026
1 change · master
New functionality added to Odoo
Sales users can now add extra delivered services and consumable materials directly from a sales order, with related order lines and delivered quantities updated automatically. This makes it easier to bill additional work or materials accurately and track the analytic details behind invoices.
Original PR description
_*= sale_project, sale_timesheet Added a new *Services & Materials* view to allow users to create additional delivered flat fees service or consumable product entries directly in a sale order. This…
_*= sale_project, sale_timesheet Added a new *Services & Materials* view to allow users to create additional delivered flat fees service or consumable product entries directly in a sale order. This feature allows: * Creating analytic lines from a sale order for extra services and materials. * Automatically creating or updating related sale order lines from those analytic lines. * Handling SO line creation based on product expense policy: * `cost` → create a new SO line. * `sales_price` → update an existing line if available. * Updating delivered quantities when analytic lines are changed. * Reverting effect/deleting SO line when analytic lines are deleted. All analytic lines created from this flow are assigned to the analytic plan `sale.analytic_plan_sale_orders`, which ensures an analytic account is created and set on the sale order. Products with reinvoicing policy `no` will only be eligible for manual delivery. If a product has reinvoicing policy anything other than `no` it will be eligible for upselling from our new view, and delivered quantity will be aggregated from AALs. If a project is selected on the sale order, the analytic account is deduced from that project instead. Added a stat button on invoices to easily view analytic lines linked to that invoice. Technical changes: * Field `timesheet_invoice_id` is renamed to `reinvoice_move_id` as it's not timesheet specific anymore. * Made `product_uom_id` field on AAL compute to make sure we get expected `uom_id` on AAL. * Changed field `order_id` from `related` to `compute` since we need it to work as normal m2o in sale. * Centralized analytic line reinvoicing logic in the sale module. * Improved `_get_analytic_lines_to_link` to support timesheet-based subscriptions with date filtering. * `qty_delivered` will now be sum of upsell AALs and stock moves(for consu products) and recorded timesheet hours(for timesheets). task-5490517 See Also: - https://github.com/odoo/enterprise/pull/105158 - https://github.com/odoo/upgrade/pull/9366 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr