5. Granted

All roles can readFinance/Admin can edit budgets + push to OdooProgramme can refresh actuals + manage projects

Awarded applications become Grants. This is the screen finance officers spend most of their time on.

The grant detail page

Long vertical page with several cards:

Header

  • Grant title, reference (auto-generated), donor name, cycle name.
  • Status pill (Awarded / Active / Closed).
  • Grant amount, period, currency, contract number.
  • "Edit grant" button (Finance/Admin only) for amount, currency, dates, contract number.

Projects card

One row per executing project. Each row shows its Odoo sync status (Synced / Sub-grant Draft / Sub-grant Started / Pending / Failed). Click "+ Add project" to create one — this lands the project in Odoo unless you mark it as "not in Odoo" (used for sub-grant partners that book elsewhere).

The Add / Edit modal asks for:

  • Project name.
  • Organisational units — the implementing organisational unit. Default for the Odoo company.
  • Odoo company (optional override, F2-B+) — pick a different res.company than the organisational unit's default. Use only for joint-implementation cases where the booking entity and the executing organisational unit differ. Leave on the default in the typical case.
  • Analytic code[COUNTRY3]-[DONOR3]-[GRANT3] format. Used as the project's Plan 1 analytic account code in Odoo.
One project = one Odoo company. Cross-administration projects aren't supported — that pattern fits better as several sub-grants under one Grant, each in its own administration. Standard practice across EU INTPA, USAID, NL MFA and UN agency reporting.
Draft vs Started for sub-grants. Sub-grant projects (not_in_odoo) don't have an Odoo lifecycle to lean on, so the status is inferred from manual actuals: any entry > 0 ⇒ Started, else Draft. Visible on both the Projects list and the project detail page.

What it looks like

PROJECTS & ANALYTIC
Project Organisational unit Analytic code Odoo project Status
Acme Ethiopia — Civic Voices programme Acme Ethiopia ETH ETH-EUX-CVP #3 ● Synced  
Local partner — capacity building Acme Ethiopia ETH ETH-EUX-CAP ● Sub-grant · Started  
Add project Clicking Create in Odoo creates the analytic accounts and the project in your organisation's Odoo. Re-clicking a synced row is a no-op.

Illustration only — your projects card will list every project on this grant with the exact same column structure.

Budget card

The donor-facing budget. One row per category defined on the cycle template (see chapter 12.3). Each row carries:

  • Description — optional note shown to the donor.
  • Budget amount — what you committed to the donor. Either a manual amount (when the cycle has no detail template) or a computed SUM of detail rows (when it does).
  • Allocated — total of per-project allocations for this line. Difference column highlights gaps.
  • Odoo column — Plan 2 analytic account reference + a "● synced" tag once the line is pushed to Odoo.

When the cycle has a detail template, each category expands into detail rows (Country Director, International travel, etc.). You can edit units × value inline, add new rows per category, or remove rows. The SUM rolls up live to the category.

What it looks like

Budget Hide details Linked to Odoo budget #2

The donor-facing budget for this grant. Each line maps to one of the six shared analytic accounts in Odoo (HR · TRV · EQP · OFF · SVC · IND). Currency: EUR.

Budget line Description Budget Allocated Difference Odoo
HR
Human Resources
Human Resources 471.415 20.000 € 451.415 HR● synced #7
Detail (11) · derived from cycle template
1.1.1.a Country Director (40%) 36 x 2.675 / month € 96.300
1.1.1.b Programme manager (100%) 36 x 3.140 / month € 113.040
… 9 more HR detail rows in the live grant — Project officer, Finance manager, Per diems, Seminar costs … …
TRV
Travel
Travel 134.616 20.000 € 114.616 TRV● synced #8
IND
Indirect costs
7 % of direct subtotal 42.430 0 € 42.430 IND● synced #12
Grant total € 648.461 € 40.000 € 608.461
Save Save & sync to Odoo Refresh actuals Last actuals refresh: 2026-05-22 14:31

Illustration only — rendered with the real design-system classes so it stays in step as the app evolves. The live screen shows all 27 detail rows under HR and all six categories; the IND row carries a dashed border on the Budget cell to signal it's a computed value, not directly editable.

Indirect rows. If a category is marked % of direct in the cycle, its units field holds the percentage (e.g. 7 for 7%), and the amount auto-computes as (units / 100) × direct subtotal. The value column is unused.

Budget vs Actual card

Per category: Budget, Actual (from Odoo + manual sub-grant entries), Remaining, % spent with a progress bar. Color codes: teal < 85%, amber 85–100%, red > 100%.

What it looks like

Budget vs Actual Last refreshed 2026-05-22 19:52
Budget line Budget Actuals Remaining Spend
HR
Human Resources
€ 471.557 € 0 € 471.557
0%
TRV
Travel
€ 134.613 € 0 € 134.613
0%
EQP
Equipment
€ 11.200 € 0 € 11.200
0%
OFF
Project Office
€ 69.878 € 0 € 69.878
0%
SVC
Other costs & services
€ 1.125.105 € 3.314 € 1.121.791
0.3%
Subtotal direct € 1.812.354 € 3.314 € 1.809.040
0%
IND
Indirect costs (7%)
€ 126.865 € 0 € 126.865
0%
Total project € 1.939.218 € 3.314 € 1.935.904
0%
Refresh actuals from Odoo

Illustration only — the Spend bar turns amber at 85–100% and red above 100%, so overspends jump out at a glance.

Action buttons (Finance/Admin)

  • Save — persist budget edits.
  • Save & sync to Odoo — persist + push the budget to Odoo. Creates Plan 2 + Plan 3 analytic accounts and writes per-project budget rows at both category and detail granularity.
  • Refresh actuals — pull analytic lines from Odoo and update the Actual column. Per-detail amounts populate budget_detail_lines per project (visible on each project detail page and aggregated on the grant's EU export).
Per-project detail budgets (F10). Each project keeps its OWN snapshot of detail rows — no more proportional split. On first open of a project page the grant's template rows are copied as project-scoped rows; you then edit units × value per project independently. Save & sync emits one Odoo budget.line per category and one per detail row, each carrying exactly the amount you typed on the project page.