Real Estate Module

Integrated management of leased properties: defining areas, buildings, units and their partitions, tracking occupancy, lease contracts through a multi-step wizard, installments and collection via receipt vouchers, billing contract items as sales invoices or journal entries, renewal and evacuation, together with reports, a dashboard and contract-expiry notifications.

ℹ️ First-time module setup (in order): Areas ← Property Types ← Unit Statuses ← Properties (buildings) ← Units (or generate them in a single batch from the «Create Units» button inside the property) ← Lease Contracts. When a company with a real-estate activity is activated, service items are automatically created for every billable lease item (rent, maintenance, parking, insurance, government fees, legal fees, commission, renewal fees…) and linked to the module's setting keys — see the Billable Items section.
🧭 Accounting principle of the module: There is no «contract posting» that creates a single journal entry for the whole contract. The contract becomes active the moment it is saved (occupying its unit), and the accounting effects are generated item by item: each item is billed either as a sales invoice (with a service line + VAT) or as a direct journal entry, and each collection is recorded with a receipt voucher. This matches the approach of the legacy system (Noble).

Master Data (Areas · Types · Unit Statuses)

Path: Real Estate ← Areas / Property Types / Unit Statuses/restate/areas · /restate/property-types · /restate/unit-statuses

Function: Three simple lookup lists that feed the drop-downs in the property and unit screens. Each screen follows the unified master-data template (the code is generated automatically, the name is Arabic/English, active/inactive).

ListWhat it definesUsed in
AreasThe geographic areas/neighborhoods where the buildings are located.The «Area» field in the property screen, and report filtering.
Property TypesBuilding classification (residential tower, apartment block, villa, commercial complex, office…).The «Property Type» field in the property screen.
Unit StatusesThe statuses displayed for a unit (vacant, leased, under maintenance, reserved…).The «Unit Status» field in the unit screen and the occupancy tree.
💡 Tip: Prepare these lists first; without them the property/unit drop-downs appear empty.

Properties (Buildings)

Path: Real Estate ← Properties/restate/properties

Function: The register of buildings/properties. Each property is a container for the units that are leased. From the property editor you can generate its units in a single batch instead of entering them manually.

Property Editor Fields

FieldDescription / Rule
CodeGenerated automatically with no gaps and no duplicates (the prefix can be customized from «Counters»). Read-only.
Name (Arabic) *Property name — mandatory.
Name (English)Displayed when the interface runs in English.
AreaFrom the Areas list.
Property TypeFrom the Property Types list.
Address / DescriptionDescriptive location data.
Number of Floors / Number of UnitsReference values used by the unit generator.
Cost CenterThe accounting cost center to which this property's unit revenues are attributed (inherited by the unit and the journal entries).
ActiveAn inactive property does not appear when selecting the container for new units.

«Create Units» Button — the Unit Generator

Opens a dialog that generates the property's units in a single batch instead of manual entry (like the Noble system):

InputEffect
Number of FloorsHow many floors to generate units for.
Units per FloorThe number of apartments/offices on a single floor.
Ground-floor ApartmentsThe number of ground-floor units (numbered separately from the upper floors).
Numbering Prefix / Name PatternBuilds each unit's name automatically (e.g. floor 1 → 101, 102…).

The generator creates all the units, links them to the property and assigns them a «vacant» status initially. You can then open any unit to adjust its area and rent. Re-running the generator does not create duplicate units (it respects the no-duplication rule).

Units (Occupancy and Partition Tree)

Path: Real Estate ← Units/restate/units

Function: Units are displayed as a tree in the Noble style: building ← unit ← partition, with an occupancy indicator for each unit (occupied/vacant). A unit may be split into more than one part that is leased independently.

Occupancy Column

The occupancy status is computed from the active contracts (lifecycle = «Present») regardless of the posting status — that is, merely saving a contract on a unit makes it occupied. A vacant unit is shown with a green indicator and an occupied one with a different indicator along with the tenant's name if available.

«Split Unit» Icon (per row)

Next to each splittable unit is an icon that opens the split dialog: you enter the number of parts and their labels, and the system creates sub-partitions under the unit, each of which can be leased with an independent contract. Splitting a unit that has an active contract is not allowed, to avoid conflicts.

Unit Editor Fields

FieldDescription
CodeAutomatic (prefix customizable).
Name (Arabic/English) *The unit's label (apartment/office number).
Property *The containing building.
FloorFloor number.
AreaIn square meters.
Reference RentA default rent value suggested when creating a contract on this unit.
Unit StatusFrom the Unit Statuses list.
ActiveAn inactive unit does not appear when selecting a new contract.

Lease Contract (Multi-step Wizard)

Path: Real Estate ← Lease Contracts ← New/restate/leases/new · List /restate/leases

Function: The contract editor in the Noble style — a header bar (contract type + date + document number + period + posting mode + no-VAT/no-renewal/near-evacuation) sits above a six-step wizard in a side panel.

Wizard Steps

#StepWhat you enter
1TenantSelecting the tenant from the customer ledger (with instant «create new»), showing their phone, email and balance. Tenant name, capacity and trade name fields.
2LandlordThe owner/landlord name and the agent name if available.
3Unit and TermSelecting the unit (mandatory) + start and end dates + period type (year / two years / monthly / custom).
4Financials and VATThe contract's financial items and the VAT rate — see the next table.
5NotesFree-form notes on the contract.
6AttachmentsUploading contract images/documents.

Financial Items (Step 4)

ItemDescription
Annual RentThe base rent value for the term.
InsuranceThe refundable deposit amount (not subject to VAT, settled upon evacuation).
Maintenance FeesA VAT-taxable service.
Parking FeesA VAT-taxable service.
Other FeesAny additional item.
VAT Rate15% by default. The «no VAT» checkbox zeroes it.

The taxable base is computed as rent + maintenance + parking + other fees (excluding insurance), the VAT = base × rate, and the total = the items + insurance + VAT, and the total is displayed spelled out in words.

Posting Mode (postingMode)

ModeMeaning
AnnualRecognize the rent annually.
Deferred IncomeThe rent is received in advance and accrued gradually.
Fully DeferredRecognition is deferred.
Building OwnerSpecial handling for contracts where the party is the building owner.

Saving and Lifecycle

Once the contract is saved it becomes active (lifecycle = «Present») and occupies its unit immediately — no need for any «contract posting». The posting status (draft/posted) remains a separate indicator for the accounting effect, while the lifecycle moves through: Present ← Renewed ← Evacuated ← Cancelled. The «View Previous Contracts» button reviews the contract history on the same unit.

💡 The contract screen operates in «focus» mode (collapsing the side menu) to allow a wider space for the wizard, and it includes «Log» and «Attachments» tabs at the bottom of the document like the rest of the transaction documents.

Receipt Voucher (Collecting Tenant Payments)

Path: from within the contract screen ← «Create Receipt Voucher» button (wizard dialog)

Function: Collect a payment from the tenant and allocate it against their open invoices/installments, without leaving the contract screen (like the Noble wizard).

StepDetails
InstrumentCash / bank transfer / cheque.
AccountCash box or bank account depending on the instrument (a list filtered automatically by instrument type).
Amount + DateThe payment value and its date.
AllocationDistributing the amount across the tenant's open invoices/installments.

The dialog creates a customer receipt voucher and posts it, recording: debit cash box/bank and credit the tenant's receivables. The journal entry can be reviewed later via the «View Journal Entry» button.

Billing a Contract Item (Sales Invoice or Journal Entry)

Path: from within the contract screen ← «Bill Item» button (wizard dialog)

Function: Convert any of the contract items (rent, maintenance, parking…) into a financial effect. The dialog presents two options:

OptionEffect
Bill ItemCreates a sales invoice with a service line (the service item linked to the item) + VAT, then opens the invoice in the sales module to complete/print it. The item is a service (not inventory) so it recognizes revenue only without cost of goods.
Create Journal Entry for the ItemPosts a balanced journal entry directly: debit the tenant's receivables by the item total, and credit the item's revenue account + credit the VAT due.

There is no posting of the whole contract; billing is done item by item (or a group of items) as you need, which provides flexibility in recognizing revenue over the contract term.

Billable Items and Service Items

Function: When a company with a real-estate activity is created/activated, the system automatically creates a set of service items (of type «service», without inventory) representing each billable item, and links each item to a setting key in the Real Estate settings and to a revenue account. This way item billing is ready without manual setup.

ItemDefault CodeSetting Key
RentRE-RENTRestate.RentServiceItemCode
MaintenanceRE-MAINTRestate.MaintenanceServiceItemCode
ParkingRE-PARKRestate.ParkingServiceItemCode
Other FeesRE-OTHERRestate.OtherServiceItemCode
InsuranceRE-DEPRestate.DepositServiceItemCode
Government FeesRE-GOVRestate.GovFeesServiceItemCode
Additional Government FeesRE-AGOVRestate.AddGovFeesServiceItemCode
Legal FeesRE-LEGALRestate.LegalFeesServiceItemCode
CommissionRE-COMMRestate.CommissionServiceItemCode
Renewal FeesRE-RENEWRestate.RenewalFeesServiceItemCode

The corresponding revenue accounts are configured from the «Accounts» screen via the Restate.*IncomeAccountCode keys (and insurance is directed to a tenant deposits account). All codes are editable — there are no account codes hardcoded in the source code.

Installments

Function: Splitting the contract value into a payment schedule (monthly/quarterly/custom) to track accrual and collection. Installments are generated from the rent value and the term, and each installment shows its due date and its status (due/collected/overdue). Collection is done through the Receipt Voucher by allocating the amount against the open installments.

Renewal and Evacuation

Contract Renewal

The «Renew» dialog creates a new contract as an extension of the current contract (with a new term and value), and moves the lifecycle of the old contract to «Renewed», with the ability to charge renewal fees as a billable item.

Evacuation (Contract Termination Settlement)

The evacuation screen/dialog terminates the contract and performs the final settlement: returning the insurance against any amounts due from the tenant, so the contract's lifecycle becomes «Evacuated» and the unit returns to vacant. Evacuation is available only for contracts whose lifecycle is «Present».

Reports, Dashboard and Notifications

Module Dashboard

/dashboard/restate

Cards and charts: the number of properties and units, occupancy rate, active contracts, revenues, and contracts approaching expiry — with a period bar (today/week/month/custom).

Reports

Module reports via the unified reports engine (contract statements, occupancy, revenues, aging of overdue installments…) with selectable criteria (area/property/period/status).

Notifications

Automatic notifications for contracts approaching expiry are delivered to the notifications inbox (and by email when configured), to alert the user to renew or evacuate at the right time.

Frequently Asked Questions

When does a contract become active and occupy its unit?

As soon as it is saved. There is no «contract posting» button; saving makes its lifecycle «Present» so the unit appears occupied in the units tree.

What is the difference between «Bill Item» and «Journal Entry for the Item»?

«Bill Item» creates a sales invoice with a service line + VAT (a complete sales document that can be printed and signed for tax purposes). «Journal Entry for the Item» posts the accounting entry directly without issuing an invoice. Choose whichever suits your recognition policy.

Why do no units appear when selecting the contract?

Make sure the property has been created and then its units (manually or via the «Create Units» button), and that the unit is «active».

Can part of a unit be leased?

Yes — split the unit from the «Split» icon in the units tree, then create a contract on each partition.

Where do I configure the item revenue accounts?

From the «Accounts» screen via the Restate.*IncomeAccountCode keys. The service items for the items are created automatically when the real-estate company is activated.

Frequently asked questions

How do I set up a property and its units?

Create the property, then add its units with their status and rent; units become the rentable inventory you lease to tenants.

How do I create a lease contract?

Open Real Estate › Leases › New, choose the property, unit and tenant, set the term, rent and installments; the contract drives the rent roll and billing.

How is rent billed and collected?

The system generates rent installments and charge invoices per contract; record receipts against them to track collections and outstanding balances.

Can I see occupancy and the rent roll?

Yes. The real-estate dashboard shows occupancy rate, active leases, the annual rent roll and leases expiring soon.