Sale Order Invoicing Finished Task
This module brings the possibility to indicate if a task is available to be invoiced or not, within the task itself. Moreover, even if the task is not finished yet, it can be set as invoiceable.
As an option, you can relate this control to a Project Stage ( project.task.type ). For example, if you want to assign 'Invoiceable' to Done stage always.
auto_awesome What this module does
AI-generated from the code · Odoo 18.0Adds an "Invoiceable" control on tasks so that service order lines linked to tasks can only be invoiced once the task is marked as invoiceable. It can also be automated through project stages.
This module adds an invoicing control based on tasks for services sold with timesheets.
On a service product, a new option "Invoicing control by task" appears when the product is tracked by a task (global project or project). When enabled, the related sales order line will not be invoiced until its task is marked as invoiceable.
On each task, a button in the top button box shows "Invoiceable" or "Not Invoiceable" and lets users switch the status. The button is only visible when the product of the linked sales order line uses this control. If the sales order line is cancelled, already invoiced, or its order is locked, the task cannot be created or modified with that link and an error is shown.
Project stages can also carry an "Invoiceable" flag. When a task moves to a stage marked as invoiceable, the task is automatically set to invoiceable (if the product uses the control and the task was not already invoiceable).
Behind the scenes, the invoice status and quantities to invoice of the sales order line are recalculated based on the invoiceable status of its tasks, and delivered quantities from timesheets are adjusted accordingly. This affects product.template, project.task, project.task.type and sale.order.line.
Depends on
Models and fields (4)
- project.task · extends an existing modelinvoiceable, invoicing_finished_task
- sale.order.line · extends an existing modeltask_ids (Tasks)
- product.template · extends an existing modelinvoicing_finished_task (Invoicing control by task)
- project.task.type · extends an existing modelinvoiceable
Text generated by AI (DeepSeek) from reading the Odoo 18.0 code on GitHub; it may contain mistakes, so check the code before deciding. View the code on GitHub
Availability by version
Reviewed: 2026-11-03Confirmation status: 7 confirmed, 2 with no information of 9 versions.
Sources · Odoo 12.0
Confirmed on 2026-11-03 in branch 12.0 of OCA/sale-workflow.
terminal Installation and usage
OCA documentation · Odoo 18.0Usage
Source · Odoo 18.0To use this module, you need to:
- Go to Sales \> Products \> Products and create a service product.
- Within the product, choose your preferences under General Information tab, as follows:
- From Create on Order select Task or Project & Task.
- Tick off Invoicing control by task checkbox, and save.
- Go to Sales \> Orders \> Orders and create a new one. Add a customer and the product you have created.
- Confirm the sales order. It will create a new task on your selected project.
- Go to the task and you will find a smartbutton named Not invoiceable. When you click on it, you will indicate that the task can be invoiced. If the product is configured with an invoicing policy "Timesheets on tasks", time spent on the task is used to compute the delivered quantity.
- Optional: if you want to use project stages to control this, go to Project \> Configuration \> Task Stages, and in the stages that you consider are invoiceable, you have to set the Invoiceable field to true.
No verified information in OCA: Installation, Configuration.
Installation instructions, the distribution package, dependencies and configuration steps are not shown because they have not yet been verified in the module documentation for any version.
Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.