عربي
Sectors

Contracting

01

From BOQ to execution and progress billing

In contracting, the unit of operation is not the sales order or the invoice. It's the project and its contract.

Every project starts as a scope of work, quantities, and prices, then turns into purchasing, subcontractors, site teams, materials, and equipment. And once the work is done, the invoice doesn't go out because material was delivered; it goes out against executed quantities that were measured and approved.

Meanwhile, Interim Payment Certificates (IPCs) go out to the client for works executed, and Subcontractor Payment Certificates come in for the works they executed. Between the two sit the actual cost and the project's real profit.

02

The contract is the project's reference

When the project is awarded, the contract is recorded with everything that governs execution and accounting:

Client and site.
Original contract value.
Start date and contractual duration.
Scope of work.
Payment and certificate terms.
Advance payment and how it is recovered.
Retention percentage.
Taxes and deductions.
Penalties, if any.
Warranty period for the works.
Provisional and final handover terms.

The BOQ, purchasing, subcontractors, measured works, certificates, invoices, and collections all link back to the contract, so no stage turns into a standalone file that can't be reconciled with what came before it.

03

A BOQ that drives operations

The bill of quantities is not a price sheet you attach to the contract and forget.

The BOQ is built on two levels:

Main activities that form the work breakdown. Executable line items under each activity.

Each line item carries:

Work description.
Unit of measure.
Contract quantity.
Material cost.
Labor cost.
Equipment cost.
Transport cost.
Indirect costs.
Profit margin.
Final selling price.

The item's price is built up from its components, instead of a lump sum that never shows how it was estimated or where its margin moved.

The work breakdown structure (WBS) can also be exported as a clean document for printing, review, and sign-off.

Inside Odoo
A bill of quantities with sections and line items in Odoo
The BOQ inside the system: line items grouped by section (excavation, concrete, finishes) with quantities, prices, and a total per section.
04

Before construction starts

Each line item is assigned an execution method:

Buy materials or products from a supplier.
Execute with an in-house team.
Assign it, fully or partially, to a subcontractor.
Use external equipment or services.

Purchase requirements, execution-team tasks, and subcontractor agreements are all generated from the BOQ line items themselves.

The site never requests materials without a reference, and no work goes to a subcontractor without knowing the line item, the quantity, and its estimated cost.

Inside Odoo
Site execution stages as a kanban board in Odoo
Site stages as they're actually managed: from excavation and foundations to ready for handover: every task in its stage column.
05

The project budget

The approved BOQ becomes the baseline that execution cost is measured against.

The budget is broken down by:

Works and line items. Materials. Labor. Equipment. Transport. Subcontractors. Indirect costs.

During execution, every line item shows three distinct numbers:

  1. 01 Estimated cost.
  2. 02 Commitments: contracts signed and purchase orders issued.
  3. 03 Actual cost consumed or posted.

Commitments matter: a project can look on-budget while purchase orders and contracts are already out there, with invoices yet to arrive.

06

Purchasing tied to the project

A purchase request starts from a specific need inside a line item or project phase.

It moves from request to supplier quotes, then purchase order, receipt, and invoice, keeping its project reference the whole way through.

So you always know:

What was requested per line item.
What was approved.
What was purchased.
What was received.
What hasn't arrived yet.
What was issued to the site.
Value not yet invoiced by the supplier.
The gap between estimated and actual cost.

If the supplier, price, or quantity changes, the impact shows on the line item and the project budget, instead of staying buried inside the purchasing ledger.

Inside Odoo
A purchase order for site materials in Odoo
The site-materials purchase order: rebar, cement, sand, and aggregate with quantities and prices, linked to the project and delivered straight to the site warehouse.
07

Subcontractors

Each subcontractor's scope is recorded against the line items and quantities assigned to them, along with the contract price, payment terms, retention, and advance payment if any.

During execution, the subcontractor submits their measured works or Subcontractor Payment Certificate, which passes technical and financial review before approval.

For each subcontractor you see:

Quantities assigned.
Previously executed.
Executed this period.
Total executed.
Advance payment recovered.
Retentions.
Deductions or penalties.
Net amount due.
What has been paid.
Remaining balance.

A subcontractor's certificate is never a copy of the client's certificate: the company may approve a quantity from the subcontractor before the consultant or client has approved it.

That gap must stay visible. It hits cash flow and project profit directly.

08

Site teams

Site activity is tied to the project and line item it serves, not just to a warehouse or an employee.

That covers:

Execution crews on site.
Tasks assigned to each crew.
Daily labor logs.
Equipment and operating hours.
Custody items issued to engineers and supervisors.
Materials transferred to the site.
Materials consumed on the works.
Returns from the site.
Damage and loss.
Direct site expenses.

When material is issued, it's tagged to the project, site, and line item consuming it, so the project's total cost never looks correct while nobody can say where the materials actually went.

09

Measured work confirms what was completed on site

A contract quantity never turns into a payment certificate on its own.

The site engineer records the quantities actually executed per line item, and each measured-works record enters a documented submit–review–approve trail:

Who submitted the measured works.
Submission date.
Quantity claimed.
Quantity approved.
Who reviewed and approved.
Reason for rejection or adjustment.
Attached documents and notes.

Every line item keeps two separate figures:

Actual progress on site. Progress approved and billed.

The difference between them is work executed that hasn't yet turned into receivables.

10

The client payment certificate

The client certificate is generated from approved quantities, not from a separate manual estimate.

For each line item, the certificate shows:

Contract quantity. Previously executed. Executed this period. Cumulative to date. Unit price. Value of current and cumulative works.

Then it applies the contract math:

Retention.
Advance payment recovery.
Penalties.
Taxes.
Deductions.
Any approved adjustments.
Net amount due.

The certificate comes out as a submission-ready PDF, and once approved it becomes an invoice linked to the project, the contract, and the measured works it came from.

Any number can be traced from the quantity on site to the certificate, then to the invoice and the collection.

Inside Odoo
A payment certificate as a progress invoice in Odoo
Payment certificate no. 1: BOQ line items at the quantities actually executed: a posted invoice tied to the project contract.
11

Progress payments flow in both directions

Payment certificates are managed in two parallel directions:

Client payment certificate: owed to us

The value of works the company executed and the client or consultant approved, now due to the company.

Subcontractor Payment Certificate: owed by us

The value of works the subcontractor executed and the company approved, now due to them.

Keeping the two directions separate reveals:

Works the subcontractor executed that the client hasn't approved yet.
Works the client approved with no subcontractor certificate issued against them.
The spread between a line item's selling price and its execution cost.
Amounts due to the company versus its obligations to subcontractors.
The real impact on cash.
12

The advance payment

The contract's original advance payment is recorded, along with any additional advances tied to variation orders.

Every certificate shows:

Original advance amount.
Recovered previously.
Amount recovered in the current certificate.
Total recovered.
Remaining balance.

Advance payment recovery is never recalculated from scratch each time, or tracked in a side spreadsheet detached from the certificate.

The same logic applies to advances paid to subcontractors, in the opposite direction.

13

Retention and warranty

Retention is deducted from every certificate at the contract percentage, accumulating as a separate balance until release falls due.

The system shows:

Retention on each certificate.
Total retained.
Amount released.
Remaining balance.
Release due date.
Its link to provisional or final handover and the warranty period.

Retention never disappears into the client's or subcontractor's balance, and never gets forgotten once execution ends.

After provisional handover, snag items and warranty works stay attached to the project until they're closed and final handover is complete.

14

Variation orders

When a line item's quantity changes or extra work appears, the original BOQ isn't edited as if the change had existed since day one of the contract.

A standalone variation order is issued, carrying:

Description of the change and its reason.
Line items and quantities required.
Expected cost.
Proposed selling price.
Submission date.
Amount claimed.
Amount approved.
Approval status.

A variation order may adjust the quantity of an existing line item, or add a new item or activity.

It enters the certificate only at the approved quantity and value, with the gap between claimed and approved kept on record.

And the project shows a complete variation-order position: claimed, approved, rejected, under review, with the approval rate and the value of each state.

Inside Odoo
A variation-order quotation for additional works in Odoo
The variation order as a standalone quotation with its own line items and quantities: no extra work starts before it's priced and approved, and it stays tied to its project.
15

Progress billing

In contracting, the invoice isn't triggered by delivering a finished product. It's triggered by approved progress.

So the system keeps these apart:

Contract value.
Value of works executed.
Value of works approved.
Value of works invoiced.
Amounts collected.
Amounts outstanding.
Retentions.
Executed works not yet invoiced.

That separation stops billing from being read as the only measure of progress, and stops technical progress from being read as collected revenue.

16

Project cost

Every transaction is charged to the project and line item that caused it:

Material issues. Supplier invoices. Subcontractor certificates. Crew wages. Equipment operation. Transport. Site expenses. Indirect costs.

Cost can then be analyzed across dimensions such as:

Project. Site. Phase. Activity. BOQ line item. Cost type. Supplier or subcontractor. Cost center.

You get the project's total cost, the cost of every activity and line item inside it, and the source of any budget variance.

17

Work in progress

Not every cost paid is an expense of the current period, and not every amount invoiced reflects the work done that same month.

So project costs are tracked as work in progress (CIP/WIP), separating:

Cost of works executed.
Executed works not yet invoiced.
Invoiced works not yet collected.
Materials on site not yet consumed.
Open commitments to suppliers and subcontractors.
Recognized revenue and cost.

When the certificate is approved and invoices are posted, the numbers flow into accounting from the operational documents themselves. Nothing is retyped by hand.

18

Line-item profit before project profit

A project can be profitable overall while some of its line items lose money, or look temporarily unprofitable because executed work hasn't been approved yet.

So every line item shows:

Contract selling price.
Estimated cost.
Actual cost.
Quantity executed.
Quantity invoiced.
Approved revenue.
Estimated margin.
Actual margin.

Line items then roll up into profitability by activity, site, and project.

You can pinpoint whether a variance came from extra materials, price changes, labor productivity, a subcontractor's cost, or additional works still awaiting approval.

19

Handover doesn't always end the relationship

In projects like elevators, building systems, and equipment, the project becomes an asset after installation and handover, one that needs maintenance, warranty, and breakdown follow-up.

The asset's data stays linked to the project it was installed through:

Client and site.
Unit or equipment.
Model and serial number.
Installation date.
Handover date.
Warranty duration.
Service and spare-parts history.
Current maintenance contract.

Maintenance never starts from a fresh database cut off from the execution history.

20

Preventive maintenance

The maintenance contract defines:

Units and sites it covers.
Start and end dates.
Number of visits.
The recurring visit schedule.
Contract value and billing terms.
Works included.
Works and spare parts excluded.
The agreed response time.

Visits are scheduled automatically from the contract and assigned to the technical teams.

On every visit, the technician records:

The unit serviced.
The inspection performed.
Works carried out.
Observations.
Spare parts used.
Any recommendations or additional works.
Visit status.

So you can see which contract obligations were delivered, which slipped, and how many visits remain.

21

Emergency breakdowns

A breakdown is logged against the unit, the site, and its linked contract, capturing:

Time reported.
Fault type.
Priority level.
Who owns the follow-up.
Technician or team assigned.
Arrival time.
Root cause of the fault.
The repair performed.
Spare parts used.
Time closed.

Before the client is charged for a repair, the system determines whether the fault is under warranty, covered by the maintenance contract, or needs a quotation and additional work.

Free repairs, paid works, and spare parts stay clearly separated, instead of resting on the technician's judgment on site.

22

Contract renewal

Before a maintenance contract expires, you see the full position: client, units, visits, breakdowns, and the costs tied to the contract.

You can review:

Visits delivered.
Breakdowns during the contract term.
Spare parts used.
The cost of serving this client.
Invoices and collections.
Contracts approaching expiry.

Then the renewal is issued (same units, or a new scope and price) without losing the previous service history.

23

What each role owns

Contracts management
What they own in the cycle
Contract data, terms, and scope
Technical office
What they own in the cycle
The BOQ, line items, measured works, and variation orders
Project manager
What they own in the cycle
Plan, resources, progress, and approving site needs
Site engineer
What they own in the cycle
Daily logs, executed quantities, and material requests
Warehouses
What they own in the cycle
Receiving, transfers, issues, and returns
Purchasing
What they own in the cycle
Suppliers, prices, and purchase orders
Subcontractor management
What they own in the cycle
Assignments, measured works, and subcontractor payment certificates
Cost control
What they own in the cycle
Budget, commitments, cost, and variances
Accounting
What they own in the cycle
Invoices, retentions, advances, payments, and collections
Maintenance
What they own in the cycle
Visits, breakdowns, spare parts, and contract renewals
Management
What they own in the cycle
Project status, cash, profitability, and exceptions

The site engineer doesn't approve a financial certificate, the subcontractor doesn't invoice without approved measured works, and accounting doesn't adjust technical progress to make an invoice balance.

24

Project status

At any moment, you can see:

Original contract value.
Variation orders claimed and approved.
Contract value after changes.
Actual progress.
Invoiced progress.
Certificate values.
Actually collected.
Retentions.
Advance payment balance.
Commitments to suppliers and subcontractors.
Estimated and actual cost.
Executed works not yet invoiced.
Budget variance.
Expected and actual profitability.
Handover, warranty, and maintenance status.
25

One cycle for the whole project

Odoo runs the project from opportunity, award, contract, and BOQ, through purchasing, subcontractors, site teams, and measured works, to the payment certificate, the invoice, collection, and cost.

And after handover, the asset's data lives on through the warranty, preventive maintenance, breakdowns, and contract renewals.

So management doesn't just see the project's value. It knows what was executed, what was approved, what was invoiced, what was collected, what the company has committed to, what it actually cost, and what remains in profit and cash.