Project Profitability for Odoo 19 Community documentation
A guide to project profitability: how the figures are made, the report, the project tab, the target margin and the warning, and the access rights.
Documents version 1.0.0Updated Oct 24, 2026
Start here
In plain words: Does this project make money? The answer is scattered: the timesheets are in one place, the vendor bills in another, the invoices in a third. Project Profitability puts them together. Every project already has an analytic account: the timesheets, the vendor bills and the customer invoices that reach it become one list, with revenue, costs, margin and margin % per project, per month, per customer or per kind. Give each project a target margin and Odoo tells you which ones fall below it.
Tip: No new data entry: it reads what Odoo already records when people log time and post bills and invoices.
What you get
| Feature | What it does |
|---|---|
| One report | Revenue, costs, margin and hours of all the projects: pivot, graph and list. |
| Split by kind | Timesheets (valued at the cost of the employee), vendor bills, customer invoices and other entries. |
| Group by anything | Project, customer, project manager, kind, month; filters for this year and the last 90 days. |
| On the project | A Profitability tab with the figures and the hours, and a Margin % button that opens the detail. |
| Target margin | A percentage per project (20% by default), a red warning on the project and a Below target margin filter. |
| Weekly warning | An optional scheduled action gives the project manager an activity for each project below target, at most once a month. |
| Rights | Project managers and accounting managers see the figures; other project users do not. |
| Multi-company | Each company sees its own projects. |
| Arabic | Everything is translated and works right to left. |
Requirements
| Item | Details |
|---|---|
| Odoo | 19.0 (Community or Enterprise) |
| Apps needed | Project (project), Timesheets (hr_timesheet) and Invoicing (account) |
| License | OPL-1 (Odoo Proprietary License v1.0) |
Install
- Unzip the package. Inside is
taqnix_project_profitability.zip; unzip it to get the foldertaqnix_project_profitability. - Copy the folder into one of the
addons_pathfolders of your Odoo server and restart Odoo. - Log in as an administrator, activate Developer mode, open Apps and press Update Apps List.
- Remove the “Apps” filter, search Project Profitability and press Install.
# or from the command line ./odoo-bin -c odoo.conf -d YOUR_DATABASE -i taqnix_project_profitability --stop-after-init
How the figures are made
| Figure | Where it comes from |
|---|---|
| Revenue | The positive analytic lines of the project's analytic account: customer invoices (credit notes reduce it). |
| Costs | The negative lines: the timesheets at the cost of each employee, the vendor bills and the other costs sent to the account. |
| Margin | Revenue minus costs. Margin % is the margin divided by the revenue. |
| Hours | The hours of the timesheets. |
Important: The figures follow the analytic account of the project: put the project's analytic account on the lines of your bills and invoices (analytic distribution) so that they are counted.
The report
In plain words: Project → Reporting → Profitability. The pivot shows the margin of each project by kind; add the revenue and the costs from Measures, open a project to see the months, or switch to the graph and the list.
On the project
In plain words: The Profitability tab of a project shows the revenue, the costs, the margin, the margin % and the hours, and the target margin that you can change. Under the target, a red message appears. The Margin % button opens the detail of the project. In the list of projects, the Margin % column can be shown and the filter Below target margin finds the projects in trouble.
The weekly warning
In plain words: Settings → Technical → Scheduled Actions → Project profitability: warn the managers is switched off. Activate it and each project manager gets an activity for each of their projects below target, once a month at most.
Who can do what
| Who | Can |
|---|---|
| Project managers | See the report and the Profitability tab, change the target margin. |
| Accounting managers | See the report. |
| Other project users | See neither the report nor the figures. |
Arabic and right to left
Limits
| Limit | Detail |
|---|---|
| Analytic account | Only what reaches the analytic account of the project is counted: timesheets and analytic lines of invoices and bills. |
| Cost of time | Timesheets are valued with the hourly cost set on the employee. |
| One account per project | If several projects share an analytic account, each shows the same lines. |
| Not accounting | It is a management view: it does not replace the accounting reports. |
For developers
In plain words: Skip this chapter if you only use the module.
project = env['project.project'].browse(project_id)
project.tx_revenue, project.tx_cost, project.tx_margin, project.tx_margin_pct, project.tx_below_target
rows = env['taqnix.project.profit']._read_group([('project_id', '=', project.id)], ['kind'], ['revenue:sum', 'cost:sum'])
env['project.project']._cron_margin_alert() # an activity for the manager of each project below its targetTroubleshooting
| Problem | What to do |
|---|---|
| A project shows nothing | It has no analytic account, or nothing reached it: check the analytic distribution of the bills and invoices and the timesheets. |
| The cost of the timesheets is zero | Set the hourly cost on the employees. |
| I do not see the tab | You need the Project Administrator group. |
| The margin looks wrong | Open the list: every line behind the figure is there. |
Updating and removing
Replace the folder with the new version, restart Odoo and run -u taqnix_project_profitability. Nothing is stored beyond the target margins.
Support
Installation help and bug fixes are included for 6 months, with lifetime updates. Contact us through the marketplace page where you bought the module or write to support@taqnix.com with your Odoo version and a screenshot.