Payroll Cost Allocation
Split labour cost across projects, departments and companies, then raise recharge invoices
Finance teams running shared services, project work or multi-company groups need to spread each employee's fully-loaded payroll cost across the projects, departments and companies that actually consumed their time — and then recharge inter-company labour. Doing this by hand in spreadsheets is slow, error-prone and impossible to reconcile. This module runs period allocation runs that split source cost by percentage or worked hours onto analytic, department or company targets, validates every split totals 100% and reconciles to source, then generates one draft recharge invoice per receiving partner with a configurable markup and analytic distribution. Built entirely on Odoo Community accounting and HR, with no Enterprise payroll dependency.
Key Features
Period Allocation Runs
Each gb.payroll.alloc.run covers a period (date_from/date_to), auto-numbers from an ALLOC sequence and moves through draft, confirmed, recharged and cancelled states. action_confirm blocks unless every employee's lines total exactly 100%, keeping each period's split controlled and auditable.
Percentage or Worked-Hours Basis
Allocation lines (gb.payroll.alloc.line) split an employee's source_cost by a percentage or by worked_hours. For the hours basis _compute_amounts derives each line's effective_percentage from the employee's total hours, then computes allocated_amount automatically.
Project, Department or Company Targets
Every line targets a project (account.analytic.account), an hr.department or another group company, with constraints ensuring the right target is set. target_label resolves the destination so you can see exactly which cost centre consumed each slice of labour.
Reusable Allocation Templates
gb.payroll.alloc.template stores default split keys per employee, validated to total 100% with an action_balance helper that distributes the remainder evenly. action_apply_templates expands each employee's source cost into template-derived lines in one click each period.
Automatic Recharge Invoices
_build_recharge_invoices groups lines by recharge_partner_id and creates one draft account.move out_invoice per receiving partner, each line priced at recharge_amount. A configurable markup_percent uplifts the recharge over the raw allocated cost.
Analytic Distribution on Invoices
When a line targets an analytic account, the generated invoice line is written with an analytic_distribution mapping (100% to that account), so recharged labour cost lands in the correct analytic account for downstream project and cost-centre reporting.
Reconciliation & Variance Checks
reconcile_check returns per-employee source vs allocated vs variance, is_fully_reconciled confirms every employee ties out within 0.01, and the Check Reconciliation button flags any employee whose split does not match their source cost before you invoice.
Guided Recharge Wizard
The Generate Recharge Invoices wizard (gb.payroll.recharge.wizard) pre-fills a sales journal and the Labour Recharge service product, builds the invoices for a confirmed run and can open them immediately. summary_by_target aggregates allocated and recharge amounts per destination.
Use Cases
Screenshots
Allocation Runs
Allocation Templates
Why Choose This Module
Distribute the fully-loaded cost of each employee's pay period across the cost centres that consumed their time — projects, departments or other group companies — and turn inter-company and inter-department labour into recharge invoices automatically. Built on Odoo Community accounting, with no Enterprise payroll dependency required.
Specifications
- Compatible: Odoo 18.0 / 19.0
- License: OPL-1
- Languages: English
- Author: Pokutsoft
- Dependencies: account, hr
- Support: support@pokutsoft.com
Update date: 2026-07-02