# Construction All in One with BOQ and Job Costing

> Bill of quantities with rate build-ups, interim valuations that cannot over-measure, approved variations only, and material reconciliation.

- **What it is:** Bill of quantities with rate build-ups, interim valuations that cannot over-measure, approved variations only, and material reconciliation.
- **For:** Project
- **Odoo versions:** 16.0, 17.0, 18.0, 19.0, 20.0 - Community and Enterprise
- **Runs on:** Odoo.sh or Odoo you host yourself - not Odoo Online, which accepts no third-party apps
- **Price:** 278 EUR, one-time, on the Odoo Apps Store
- **Technical name:** bambooforge_construction_boq
- **Not for:** Said before you buy, because it is the half that decides whether the app fits:; Turn certified work back into work to be paid for again when a revision is made.; Price an item on a revision below what has already been certified against it.
- **Manual:** https://docs.bambooforge.dev/bambooforge_construction_boq/
- **Live demo:** https://demo20.bambooforge.dev/odoo/action-bambooforge_construction_boq.action_bf_boq
- **Store page:** https://apps.odoo.com/apps/modules/20.0/bambooforge_construction_boq
- **Manual last updated:** 2026-10-15

---
# Construction All in One with BOQ and Job Costing

An **extension** of BambooForge Construction Job Costing, not a second
copy of it. The job, the phases, the cost budget, the change order
register, the AIA payment application and the retainage already live
there. This adds the side of the trade that works by measurement.

## The bill

- Sections and items, each with a code, a **unit**, a quantity and a
  rate. A rate without a unit is a number nobody can check.
- Revisions **supersede** each other rather than overwrite, so the
  tender bill is still readable after six variations. A new revision
  copies the sections and items and re-points each item at the new
  revision's section. Each copied item **remembers the item it came
  from**, so what was certified on revision 1 is still certified on
  revision 2: a revision does not turn measured work back into work to
  be paid for again. For the same reason a revision cannot price an
  item below what has already been certified against it, and neither a
  revision nor an agreement happens while a valuation is open.
- Once a bill is **agreed it stops being editable**. The quantity, the
  rate and the rate build-up are what was signed; the cost phase still
  moves, because that is bookkeeping rather than contract. Changing the
  work is a variation, or a new revision.
- The bill's total is checked against the **job's contract value**, and
  any gap is a field on the form. Working to two different contract
  sums is how a claim is lost.
- A bill with an unpriced item cannot be agreed. A bill with holes in
  it cannot be valued.

## Rate build-ups

An item's rate assembled from **labour, material, plant, subcontract
and overhead**, each with a quantity per unit and a wastage percentage.
The difference between the rate charged and the rate built up is a
field, not a spreadsheet somebody keeps at home.

The priced bill can be **pushed into the job's cost budget**, split by
cost type from the build-up. Pricing a bill and then typing the budget
again is how a contractor ends up with two numbers and no idea which is
real. It goes **once** - the date is on the bill and a second push is
refused - and approved variation items stay out of it, because their
cost already moved with the change order their approval raised.

## Interim valuations

A valuation is **cumulative**. The sheet carries the quantity done *to
date*; this month's money is that minus what was already certified, per
item.

- A quantity **cannot exceed the bill**. Extra work belongs in a
  variation, where somebody has to approve it. Over-measuring is the
  single most common overpayment on a construction contract.
- A quantity **cannot go backwards**: a valuation does not un-measure
  work. That is an omission variation.
- **Two open valuations at once are refused** on the whole job, not
  just on one revision of the bill - that is how the same wall gets
  measured twice. The number runs per job, and a cancelled valuation
  keeps the number it was given.
- Only the **agreed** revision is certified against, and every line is
  checked again at certification, not only as it is typed.
- A **certified sheet is a signed document**. After certification the
  quantities are frozen and only the note can be edited; lines cannot
  be added or removed, the sheet cannot be deleted or cancelled, and
  the difference is measured next time. The sheet keeps its own copy of
  the bill quantity and the rate, so it still reads as it was signed
  after the bill moves on.
- A valuation that measures less than what was already certified is
  refused: that needs a credit, not a certificate.

## The money leaves through the job

A certified valuation raises the job's own `bf.job.billing` - with
its retainage and its AIA sheet, grouped by cost phase - and marks
itself billed. There is **no second invoicing path** and no second set
of numbers to reconcile. An item with no cost phase stops the
application, because its money would have nowhere to go.

An application works out what was billed before from the job's
**invoiced** applications, so a second one is refused while the first
is still a draft: raising both would bill the same work twice.

## Variations

Priced items - added, omitted or re-measured - that **count for nothing
until they are approved**. A pending item is not in the contract sum,
not on the valuation sheet and not in the budget; a rejected one is
marked omitted, so it stays readable and is worth nothing.

- Approval writes the items into the bill and raises the job's own
  **change order**, so the contract value moves in exactly one place.
  What was approved - or refused - is then **frozen**: omitting the
  work later does not rewrite what somebody signed.
- A client instruction must carry the **client's own reference**, or
  nobody can match the payment to it later.
- A variation prices and omits items **on its own bill**, never
  somebody else's.
- An **omission cannot take out work already certified** - or already
  measured on the valuation being written - and paid for.
  Omitting the whole quantity marks the item omitted; it stays on the
  bill so the history reads, but it is worth nothing.
- An approved variation cannot be rejected. Raise an omission variation
  instead.
- *Our error* is on the list of origins on purpose. A variation
  register that only records the client's changes is a register nobody
  believes.

## Provisional sums

Marked, kept out of measurement - an allowance is not work anybody did -
and **adjusted at what they really cost** before the final account.

## Material reconciliation

What the rate build-ups say should have been used for the quantity
**measured**, beside what was actually bought against the job. The
difference is wastage, theft, or a rate that was priced wrong - all
three worth knowing before the job finishes. Materials are matched by
name - ignoring case and stray spaces, so *Cement* and `cement` are
one line - because a rate build-up is written by a quantity surveyor in
words; the report says so rather than pretending otherwise. The
reconciliation is a company's own, like everything else here.

## Roles

A **quantity surveyor** measures, prices variations and raises
valuations. The **commercial manager** agrees the bill, approves
variations and turns a certified valuation into money. Those three
gates are checked on the server, not only hidden in the form, and a
state cannot be written by hand around the buttons. The **rate
build-up and the margin on an item are the surveyor's**: a site user
reads quantities and rates, not what the work costs us.

## Community only

Needs BambooForge Job Costing, which needs `account`, `purchase`,
`project` and `hr_timesheet`. Tested on 16.0, 17.0, 18.0, 19.0 and 20.0.

## How we make sure it works

Before every release, **73 automated checks** run against this app on Odoo 16, 17, 18, 19 and 20.
Among them:

- A bill with an unpriced item cannot be agreed.
- An item with no phase cannot reach the application.
- A new revision cannot undercut certified work.
- A surveyor cannot delete a valuation.
- A valuation cannot un measure work.

The complete list is in the source you receive.

## What it does not do

Said before you buy, because it is the half that decides whether the app fits:

- Turn certified work back into work to be paid for again when a revision is made.
- Price an item on a revision below what has already been certified against it.

## Install

1. Copy `bambooforge_construction_boq` into your addons path and update the app list, or install the ZIP from the Odoo Apps Store.
2. Install **Construction BOQ & Measurement**.
3. Open **Bills of quantities** - its menus are Valuations, Variations, Material requirement.

## Questions people ask

****Which Odoo versions does it run on?****

Odoo 16.0, 17.0, 18.0, 19.0, 20.0, on the series you buy it for; each series is its own listing.

****Community or Enterprise?****

Both. It needs no Enterprise app.

****What does it need?****

The standard Units of Measure; job costing (BambooForge) must be installed first app. No extra Python package.

****Where does it show up?****

Under the **Bills of quantities** menu (Valuations, Variations, Material requirement).

****Does anything leave my server?****

No. It makes no call outside your Odoo server: no telemetry, no licence check, no third-party service.

****What happens if I uninstall it?****

Odoo drops the app's own tables and fields; the standard records it worked on (contacts, orders, products) stay as they are.
