Skip to main content

Expenses and Services

This area models property services, recurring utilities, bills, consumption, and manually tracked operational expenses.

property_services

Purpose

Represents active services or utilities linked to a property or property unit.

Suggested attributes

FieldDescription
idPrimary identifier.
property_idLinked property.
property_unit_idOptional unit when the service is room/unit-specific.
provider_party_idProvider party.
service_typeELECTRICITY, GAS, WATER, INTERNET, PHONE, CONDOMINIUM, WASTE_TAX, PROPERTY_TAX, INSURANCE, or OTHER.
contract_codeProvider contract code.
pod_pdr_meter_codePOD/PDR/meter identifier where relevant.
customer_codeProvider customer code.
start_dateService start date.
end_dateService end date.
statusACTIVE, INACTIVE, or SUSPENDED.
billing_frequencyMONTHLY, BIMONTHLY, QUARTERLY, YEARLY, or CUSTOM.
expected_amountExpected recurring amount.
currencyCurrency.
notesFree-form notes.

Relationships

RelationshipDescription
property_services.property_id to properties.idEach service belongs to one property.
property_services.property_unit_id to property_units.idOptional unit-specific service.
property_services.provider_party_id to parties.idProvider is a party.
property_services to expected_expensesServices can generate expected expenses.
property_services to utility_billsServices can have received bills.

Notes and design rationale

Providers remain parties. Provider-specific details can be stored in service_provider_profiles.

utility_bills

Purpose

Represents bills received from service providers.

Suggested attributes

FieldDescription
idPrimary identifier.
property_service_idLinked property service.
provider_party_idProvider party.
property_idLinked property.
document_idLinked bill document.
bill_numberProvider bill number.
issue_dateBill issue date.
due_dateBill due date.
period_startBilling period start.
period_endBilling period end.
total_amountBill total amount.
currencyCurrency.
statusRECEIVED, PAID, OVERDUE, or DISPUTED.
notesFree-form notes.

Relationships

RelationshipDescription
utility_bills.property_service_id to property_services.idEach bill belongs to a service.
utility_bills.provider_party_id to parties.idProvider party.
utility_bills.property_id to properties.idProperty attribution.
utility_bills.document_id to documents.idOptional document link.
utility_bills to utility_consumptionsA bill can contain many consumption lines.

Notes and design rationale

Bills store the received document-level fact. Payment matching still happens through expected expenses, bank transactions, and split lines.

utility_consumptions

Purpose

Tracks consumption data extracted from utility bills.

Suggested attributes

FieldDescription
idPrimary identifier.
utility_bill_idLinked utility bill.
consumption_typeELECTRICITY_KWH, GAS_SMC, WATER_M3, INTERNET_GB, PHONE_MINUTES, or OTHER.
meter_startStarting meter value.
meter_endEnding meter value.
consumption_valueConsumed quantity.
unit_of_measureUnit of measure.
unit_priceUnit price.
amountAmount for the consumption line.

Relationships

RelationshipDescription
utility_consumptions.utility_bill_id to utility_bills.idOne bill can have many consumption lines.

Notes and design rationale

Consumption lines support anomaly detection, tenant recharge logic, and long-term usage trends.

expenses

Purpose

Optional operational expense entity for manually tracked expenses, invoices, or non-utility costs.

Suggested attributes

FieldDescription
idPrimary identifier.
property_idLinked property.
property_unit_idOptional unit attribution.
supplier_party_idSupplier party.
category_idExpense category.
expense_dateExpense date.
amountExpense amount.
currencyCurrency.
descriptionExpense description.
bank_transaction_idOptional actual transaction link.
document_idOptional invoice/receipt document.
statusOperational status.
notesFree-form notes.
created_atCreation timestamp.
updated_atLast update timestamp.

Relationships

RelationshipDescription
expenses.property_id to properties.idEach expense belongs to a property.
expenses.property_unit_id to property_units.idOptional unit-level expense.
expenses.supplier_party_id to parties.idSupplier party.
expenses.category_id to transaction_categories.idMandatory category.
expenses.bank_transaction_id to bank_transactions.idOptional actual bank transaction.
expenses.document_id to documents.idOptional supporting document.

Notes and design rationale

Use expenses for manually tracked operational facts. Use expected_expenses for forecast and reconciliation schedules. The two may coexist when an expected item later becomes an invoice or manually managed expense.

Graphical local diagrams

property_services

utility_bills

utility_consumptions

expenses