Solavel Solavel Docs

Project profitability

docs/solavel-finance/project-profitability.md

Who can use this: Owner, Manager, Accountant with project view. URL / Route: /finance/projects/{project}/profitability (finance.projects.profitability.index). Plan / feature gate: feature:tracker.manage_projects AND feature:tracker.project_revenue AND feature:tracker.project_profitability (all three required). Permissions: projects.view.

Purpose

The Profitability tab on a project gives you the live P&L for that one project — every invoice billed, every bill / expense / timesheet costed, and the resulting margin — without leaving the project page.

It's the day-to-day view a project lead uses to answer:

  • "Are we making money on this job?"
  • "Have we already burned the budget?"
  • "What hours / bills haven't been billed yet?"

Use this tab alongside Project budgets (the plan) and the Project Profitability report under Reports (the across-projects roll-up).

What the tab shows

The page is laid out top-to-bottom:

  1. Headline numbers — Revenue, Cost, Gross Margin (currency + %), against the budget if one is set.
  2. Revenue breakdown — by source:
    • Time billed (from invoiced timesheet entries),
    • Items / fixed-price billed (other invoice lines),
    • Retainer applied,
    • Credit notes (negative).
  3. Cost breakdown — by source:
    • Time logged (billable + non-billable, at the cost rate per person),
    • Bills tagged to the project,
    • Expenses tagged to the project,
    • Mileage tagged to the project,
    • Direct journals tagged to the project.
  4. Pipeline — work that has cost but hasn't been billed yet (WIP):
    • Approved time not yet invoiced,
    • Reimbursable expenses not yet on an invoice.
  5. Activity timeline — chronological list of every document contributing to the numbers, with a link to each.

Every row links back to its source document.

Step by step

Open the profitability tab

From the project page, click Profitability. The tab is hidden if any of the three feature flags is off, or if the project has no activity yet.

Filter by date range

The toolbar has a date picker — default is "Project to date." Switch to a specific month or quarter to see profitability for that window. Costs and revenue are matched on their document date, not on when they were logged.

Drill into a row

Click any number on the headline or any line in the breakdown to open a filtered list of the source documents.

Compare to budget

If the project has a budget set in Project budgets, each headline number shows the budget alongside actuals with a coloured variance indicator (green = under budget on cost / over on revenue; warning amber when nearing 90% of cost budget; red when over).

Common mistakes

  • "Project shows no revenue but we've delivered work." Revenue here means billed. Until you raise an invoice using the project's time / fixed-price work, revenue stays at zero. Drafts don't count.
  • "My cost looks too low." Costs only roll up if tagged to the project. Untagged bills, expenses, mileage, and timesheets sit in general overhead. Check the cost breakdown for "untagged" leakage.
  • "Time logged but not in cost." Time only counts as cost once it's Approved. Draft / Submitted hours don't appear. Approve outstanding entries first.
  • "Profitability tab is hidden." Three feature flags must all be on: tracker.manage_projects, tracker.project_revenue, tracker.project_profitability. Check at Settings.
  • Wrong margin because cost-rate and bill-rate are mixed up. Bill rate is on invoice lines; cost rate is on the person × project. Both can be different.

Behaviour and rules

  • Approved-time-only by default. WIP includes only timesheet entries marked Approved (or all entries if approval is off for that project). Draft / Submitted hours are not yet counted as cost — log and approve them before they show up here.
  • Cost rate vs bill rate. Time cost uses each person's cost rate on the project; revenue from time uses the bill rate on the invoice line. The two are independent — see Timesheets.
  • Invoiced ≠ paid. Revenue here means billed — the customer's payment status is not factored in. For cash-collected vs billed, see the Cash flow and AR Aging reports.
  • Tagged documents only. Bills, expenses, and journals are only counted if they're explicitly tagged to this project. Untagged costs sit in general overhead and never roll into a project's P&L.
  • No GL impact. The Profitability tab is a read-only computed view. Nothing on this page writes journals.

Permissions / restrictions

  • View: projects.view (plus the project's own visibility rules).
  • All feature flags must be on; otherwise the tab is hidden.

Related

  • Projects & Finance — project setup, tasks, and rate configuration.
  • Project budgets — set the plan that the profitability tab compares actuals against.
  • Timesheets — how time becomes both cost and revenue.
  • Reports — across-projects Profitability and Timesheet Profitability reports.
Source: docs/solavel-finance/project-profitability.md ← All documentation