Skip to content

Labour Camps ​

In the Gulf and in India, contractors often house their workers in a labour camp: a building with rooms and beds, sometimes with a canteen (the mess). The Labour Camps menu manages the camps, their rooms and beds, who sleeps where (residents), and every month it charges the cost of the bed and the meals to the project that uses the worker, or to the subcontractor whose workers stay in your camp.

WHO USES THIS MENU

The camp manager and the site administration. All project team members can see the menu; the Compute Monthly Charges menu is only shown to the Site Manager role and above. The menu is ConstructionLabour Camps; on a narrow screen it is under the + button of the top bar.

How it works ​

Camp→Rooms & beds→Residents→Monthly charges→Project cost / back-charge
  1. Camp: you create the camp once, with its housing rules and its monthly rates (bed and meals).
  2. Rooms and beds: each room gets the number of beds that the housing rules allow for its floor area.
  3. Residents: each employee or subcontractor worker is allocated to a bed, from a check-in date to a check-out date, and charged to a project.
  4. Monthly charges: at the end of the month, Odoo calculates for each resident the accommodation and meals pro rata of the days spent in the camp.
  5. Posting: the charge of an employee becomes a cost of his project; the charge of a subcontractor's worker becomes a back-charge, deducted from the subcontractor's next payment certificate.
The Labour Camps menu
The Labour Camps menu: Labour Camps, Residents, Beds, Camp Charges and Compute Monthly Charges.

Labour Camps ​

Open ConstructionLabour CampsLabour Camps. The list shows each camp with its beds, occupied and available beds and the occupancy rate.

List of labour camps
The list of camps. Click New to create a camp.

Create a camp ​

  1. Click New, type the camp name (for example Al Quoz Labour Camp) and fill in the top of the form:

    FieldWhat to enter
    CodeA short code, used in the bed names (for example AQZ gives AQZ / A-101 / A).
    AddressThe contact holding the camp address.
    Camp ManagerThe user in charge of the camp.
    Projects ServedThe projects whose workers stay in this camp (for information).
    Camp form with the Rooms tab
    The Al Quoz Labour Camp. The smart buttons Beds and Residents are framed; the Rooms tab lists the rooms.
  2. Open the Rules and Charges tab and fill in the housing rules and the monthly rates:

    FieldWhat to enter
    Minimum Area per Resident (m²)The floor area each worker must have. Odoo proposes the value of the company's country (Saudi Arabia 4 m², UAE 3 m²); Dubai asks 3.7 m². Check it with your local authority.
    Maximum Residents per RoomThe most beds a room may hold, whatever its size (10 by default in Saudi Arabia and the UAE).
    Accommodation per MonthThe price of one bed for a full month, charged to the project.
    Mess per MonthThe price of full-board meals for a month.
    Cost CodeThe cost code of the project budget where the camp cost is booked (for example 50 Site Overheads).
    Camp Analytic AccountThe account that collects the running costs of the camp (rent, utilities, catering). The charges to the projects are credited to it, so the camp cost is not counted twice.
    Rules and Charges tab
    The Rules and Charges tab: 3.7 m² per resident, 10 residents per room, $420 per bed and $330 of meals per month.
  3. Save. The Beds smart button opens the rooms of the camp; the Residents smart button opens the people now in the camp.

Add rooms and beds ​

  1. In the camp, click the Beds smart button, then New (or use Add a line in the Rooms tab). Type the room number (for example 103), the Block (B), the Floor, the Type (Workers or Staff) and the Floor Area (m²), then save.

  2. Odoo calculates the Allowed Beds: the floor area divided by the minimum area per resident, within the maximum per room. Here 22.20 m² ÷ 3.7 m² = 6 beds. Click Add the Allowed Beds.

    New room with the Add the Allowed Beds button
    Room B-103: 6 beds allowed, none created yet.
  3. Odoo creates the beds A, B, C... up to the number allowed. Each bed shows its state (Available, Occupied or Out of Order) and its current resident. Tick Out Of Order on a bed that cannot be used (repair, quarantine): it cannot be allocated.

    Room with its six beds
    The six beds of room B-103, all available.

THE HOUSING RULES ARE ENFORCED

You cannot put more beds in a room than the rules allow. Adding a seventh bed to room B-103 gives the message Room B-103 can hold 6 beds under the housing rules of the camp, not 7.

Message: the room can hold 6 beds
The capacity check of the room.

TIP

Room numbers must be unique within a block of a camp, and bed names unique within a room. A room you no longer use can be archived (gear menu ⋮ → Archive) instead of deleted.

Residents ​

A resident is one person on one bed for a period. Open ConstructionLabour CampsResidents. By default the list shows only the people In Camp today; remove the filter to see everyone. The other filters are Planned (arriving later), Checked Out, Employees and Subcontractor Workers.

List of residents in camp
The residents now in camp, with their bed, the project charged and the meal plan.

A resident has three states, calculated from the dates:

Planned→In Camp→Checked Out

Allocate a bed to an employee ​

  1. Click New. Keep Resident on Employee.

    New resident form
    A new resident. Choose Employee or Subcontractor Worker first.
  2. Fill in the form, then save:

    FieldWhat to enter
    EmployeeThe employee who stays in the camp.
    ID / Iqama NumberThe residence permit (Iqama, Emirates ID) or passport number.
    Charged to ProjectThe project that pays for the bed and meals.
    BedThe bed, shown as camp code / block-room / bed, for example AQZ / B-103 / A. Out-of-order beds are not proposed. Type the bed letter, or click Search More... to choose in a list.
    Check-inThe arrival date (today by default). A date in the future makes the resident Planned.
    Check-outLeave empty while the person stays.
    Meal PlanFull Board (the mess rate is charged) or No Meals.
    Choosing a bed for a new resident
    Choosing the bed: typing A lists the free beds A of every camp, shown as camp / room / bed.
  3. The resident is In Camp. The bed is now Occupied and the occupancy of the camp is updated.

    Employee in camp
    Eli Lambert on bed AQZ / B-103 / A since 5 October, charged to the ANV project.

Allocate a bed to a subcontractor's worker ​

Workers of a subcontractor can stay in your camp; their camp costs are charged back to the subcontractor.

  1. In a new resident, choose Resident = Subcontractor Worker.

  2. Choose the Subcontract (only running subcontracts are proposed) and type the Worker Name and his ID / Iqama Number. The Charged to Project is taken from the subcontract. Choose the bed, the check-in date and the meal plan, then save.

    Subcontractor worker in camp
    A worker of Gulf Shield Insulation and Waterproofing. The project comes from subcontract CON/2026/0004.

ONE PERSON PER BED

A bed cannot be given to two residents for overlapping dates (message Bed AQZ / B-103 / A is already allocated for these dates.), and an employee cannot have two beds at the same time. The check-out date cannot be before the check-in date.

Message: bed already allocated
The bed is already taken for these dates.

Check out a resident ​

  1. When the person leaves the camp, open the resident and click Check Out. Odoo puts today's date in Check-out. You can also type a past or planned check-out date yourself.

  2. The resident stays In Camp until the end of the check-out day, then becomes Checked Out and the bed is Available again. The last month is charged up to the check-out date.

    Resident with a check-out date
    Ernest Reed checked out on 30 October.

Beds ​

Open ConstructionLabour CampsBeds to find a free bed quickly. The list opens with the Available filter, grouped by camp; click a camp to see its free beds. Use the filters Occupied and Out of Order, or group by Room. Beds are created from the rooms, not from this list.

List of available beds by camp
The available beds, grouped by camp.

Compute the monthly charges ​

Once a month, after the month has ended, the camp manager calculates the charges of all residents. Each charge is pro rata of the days in camp during the month:

  • Accommodation = Accommodation per Month × days in camp ÷ days of the month;
  • Mess = Mess per Month × days in camp ÷ days of the month (zero for No Meals).

For example, Eli Lambert arrived on 5 October: 27 days out of 31, so $420 × 27/31 = $365.81 of accommodation and $330 × 27/31 = $287.42 of meals.

  1. Open ConstructionLabour CampsCompute Monthly Charges. A window opens:

    FieldWhat to enter
    CampsThe camps to charge (all camps by default).
    MonthAny day of the month to charge. By default the first day of last month.
    Post at OnceTick it to post the charges immediately. Leave it empty to check the charges first (recommended).
    Compute Monthly Charges window
    Compute the charges of October for both camps.
  2. Click Compute. Odoo creates one Draft charge per resident present during the month, and shows them. Residents already charged for that month are skipped, so running the window twice does not charge anyone twice.

    Draft charges of October
    The draft charges of October: days in camp, accommodation, mess and total of each resident.

Camp Charges: check and post ​

Open ConstructionLabour CampsCamp Charges. The charges are grouped by month; click a month to open it. The states are:

Draft→Posted
  1. Check the draft charges. Then tick the charges to post (tick the box of the column header to select them all) and click Post at the top of the list.

    Two charges selected and the Post button
    Two charges of October selected. Click Post.
  2. The charges become Posted. What happens depends on the resident:

    • Employee: the total is booked as a cost of the project charged, on the cost code of the camp (an analytic line named Camp Al Quoz Labour Camp: Eli Lambert, 10/2026). It appears in the actual cost of the project budget (see Cost Control). The same amount is credited to the camp analytic account.
    • Subcontractor worker: Odoo creates one back-charge per subcontract, camp and month, already confirmed, listing the workers and their days. It is deducted from the subcontractor's next payment certificate.
    Posted charges
    The two employee charges are posted.
  3. For subcontractor workers, the Back-charge column shows the back-charge created. In August, the six workers of Emirates Steel Fixing LLC produced back-charge BC/2026/0005.

    Posted charges of August with their back-charge
    August: the subcontractor workers' charges are linked to back-charge BC/2026/0005.
  4. Open the back-charge in ConstructionSubcontractingBack-charges. It is Confirmed and becomes Deducted when a payment certificate of the subcontract deducts it.

    Back-charge created by the camp charges
    The back-charge: the camp, the month and the days of each worker.

CANCELLING CHARGES

Select charges and click Cancel to undo them: the project cost is removed and the back-charge is cancelled. All the charges of the same back-charge must be cancelled together, and once the back-charge has been deducted on a certificate it can no longer be cancelled. A charge with a total of zero is cancelled automatically when posted. A resident is charged only once per month (cancelled charges excepted), so after cancelling you can compute the month again.

TIP

Subcontractor charges can only be posted while the subcontract is running. Group the charges by Project or Camp in the search options to see the camp cost of each project.

Construction suite for Odoo 20 · Cybrosys Techno Solutions