Water Utility Reference Public

Screen & Data Reference

Lookup reference for ERPat Water Utility: every sidebar screen and its URL, all twenty-seven database tables grouped by purpose, the twelve status lifecycles and what each state means, the demo dataset that ships with the module, and the reports and exports available.

Guide version: r1 Module version: 2.0.0 Updated: 2026-08-23 Estimated time: 7 min 6 views 100% helpful
Reference

Screen & Data Reference

The lookup page. Which screen lives where, what every table holds, what each status value means, what the demo data contains, and which reports you can export — with no procedure narrative in the way.

Screens

All nine screens sit under one Water Utility group in the sidebar. Each one is a hub whose sibling views are tabs inside it.

ScreenURLTabs / sub-viewsNeeds
Dashboardwater_utilityKPI summaryreports
Accountswater_utility/accountsList · account view with recent bills · status changesaccount
Connections & Meterswater_utility/connectionsConnections · Zones · Meter registry (/meters) with install & pullaccount, meter
Readingwater_utility/reading_cyclesCycles · Route books · Capture queue · Exceptions · Evidence viewerreading, reading_validate
Billingwater_utility/bill_runsBill runs (compute / approve / post) · Bills · Adjustments · Tariffs (/tariffs) with versions, tiers, validate and simulatebill_run, bill_run_approve, tariff
Collectionswater_utility/cashieringTill · Payments · Batches · Aging · Promises · Daily reportcashiering
Enforcementwater_utility/service_ordersOrders · Notices · Enforcement candidates · Disconnection batchservice_order
Advisorieswater_utility/advisoriesList · Compose with reach estimate · Preview · Publishadvisory
Reportswater_utility/reportsFive reports, each exportablereports

Two more surfaces sit outside the sidebar: Settings → Water Utility (water_utility/settings), and the customer-facing MyWater app (water_utility/app) and OTP portal (water_utility/portal).

Data tables

Twenty-seven tables, all prefixed wu_. Every one carries the standard audit block — who created the row, when it was created, when it was last updated, and a soft-delete flag — so nothing is ever physically destroyed by normal use.

Registry

TableHolds
wu_zonesBilling / reading zones, with an optional soft link to a Field Service service zone.
wu_service_connectionsThe physical tap: address, barangay, coordinates, connection size, tap date.
wu_metersThe meter registry: serial, brand, model, size, digit count, multiplier, lifecycle status.
wu_meter_installationsOne meter's tenure on one connection — installed reading, removal reading and reason. Readings attach here, not to the meter.
wu_accountsThe billing account: customer, connection, class, status, deposit, senior flag and OSCA ID, billing contacts.
wu_number_sequencesThe counters behind account, bill, receipt and order numbering.

Reading

TableHolds
wu_reading_cyclesOne zone, one period, one reading window.
wu_route_booksA reader's book for a zone, with the assigned reader.
wu_route_sequencesThe walk order — which connection is stop 1, 2, 3.
wu_meter_readingsThe read itself: previous and present register values, derived consumption, read type, source, GPS, and who validated it.
wu_reading_evidencePhotos and files attached to a read, with a content hash and processing state.
wu_reading_exceptionsFlags raised against a read — high, low, negative, stuck, rollover, no access, tamper — with severity and resolution.

Billing

TableHolds
wu_tariffsA rate schedule for one customer class.
wu_tariff_versionsAn effective-dated, board-backed version of that schedule.
wu_tariff_tiersThe minimum charge and the consumption blocks, optionally per meter size.
wu_bill_runsOne run over one cycle, with its totals and its approval trail.
wu_billsThe bill: register values, consumption, the five money columns, the due date, and the frozen snapshot_json.
wu_bill_linesThe printed lines — minimum, water blocks, discount, penalty, arrears carried, environmental fee, other.
wu_bill_adjustmentsSigned corrections raised against a posted bill.

Collections and enforcement

TableHolds
wu_paymentsThe official-receipt ledger: OR number, channel, amount, teller, batch, void trail.
wu_payment_allocationsHow much of a receipt went to which bill, in what order.
wu_collection_batchesA teller's shift: open → closed → remitted, with the total collected.
wu_noticesNotices issued to an account, and how and when they were served.
wu_promise_to_payAn amount and a date a customer committed to, and whether it was kept.
wu_service_ordersNew connection, disconnection, reconnection, meter change, leak investigation, re-read — with an optional Field Service link.

Customer contact

TableHolds
wu_advisoriesZone-targeted notices, with a publication window and status.
wu_portal_tokensCustomer-portal OTP and session credentials, stored as digests with an expiry and a use count.

Status lifecycles

Twelve state machines. Every change is written by one shared component, which checks the move is a legal one, checks the user is allowed to make it, refuses any exit from a final state, and records it. Statuses in bold are final.

ThingStarts asPath
Accountapplicantapplicant → approved → active → for_disconnection ⇄ disconnected → closed · or applicant → rejected
Meterin_storein_store → installed → pulled → under_test → in_store · → condemned · → lost
Reading cycledraftdraft → open → reading → validation → closed · → cancelled
Meter readingcapturedcaptured → validated → billed · → rejected
Bill rundraftdraft → computing → computed → approved → posted · → cancelled
Billdraftdraft → posted → cancelled
Paymentpostedposted → voided
Collection batchopenopen ⇄ closed → remitted
Service orderopenopen → scheduled → in_progress → completed · → cancelled
Tariff versiondraftdraft → approved → superseded · draft → archived
Promise to payactiveactive → kept · → broken · → cancelled
Advisorydraftdraft → published → resolved · → archived
ℹ️
"Paid" is not a bill status. Whether a bill is settled is derived by comparing its total against the receipts allocated to it, so voiding a receipt immediately makes the bill outstanding again with no second place to update. The bill's own lifecycle tracks the document, not the money.

Read types and exception codes

Read types

actual — the dial was read · estimated — billed, but labelled as an estimate · customer_reported — phoned or messaged in · no_read — access denied or unsafe.

Exception codes

high · low · negative · stuck · rollover · no_access · tamper — each with a severity, and open until resolved with a note.

Bill line types

minimum water_block senior_discount penalty arrears_carry environmental_fee other

Payment channels and service-order types

Receipts record a channel: teller, collector, bank, portal, gcash or maya. Service orders are typed new_connection, disconnection, reconnection, meter_change, leak_investigation or meter_reading, and are sourced from staff, enforcement or portal.

The demo dataset

Loaded with php erpat db:seed WaterUtilityDemo. Eighty-five rows across twenty-four tables, every business code prefixed WU-DEMO-.

WhatCodesNotes
CustomersWU Demo · … (6)Created in the core customer registry.
ZonesWU-DEMO-Z1, -Z2Zone 1 has a complete month; zone 2 has registry only.
Connections / meters / accounts-SC-001…006, -MTR-001…006, -ACCT-0001…0006Six taps, one meter and one account each.
Reading cycleWU-DEMO-CY-202606June 2026, zone 1, closed. One route book, four reads, two exceptions.
TariffsWU-DEMO-TRF-RES, -TRF-COMBoth approved, effective 1 Jan 2026, 7 tiers each.
Bill runWU-DEMO-BR-202606Posted. 4 bills · 84.000 cu.m · ₱3,239.00.
BillsWU-DEMO-BILL-000001…000004See the table below.
ReceiptsWU-DEMO-OR-000001, -000002₱439.00 in full and ₱1,000.00 partial, in batch WU-DEMO-CB-01 (₱1,439.00, closed).
EnforcementWU-DEMO-SO-000001One open disconnection order, one overdue notice, one active promise to pay for ₱1,330.00.
AdvisoryWU-DEMO-ADV-0001Published scheduled interruption targeting zone 1.
BillAccountClassConsumptionTotalPaidBalance
…BILL-000001…ACCT-0001residential18.000 cu.m₱439.00₱439.00₱0.00
…BILL-000002…ACCT-0002residential8.000 cu.m₱235.00₱0.00₱235.00
…BILL-000003…ACCT-0003commercial53.000 cu.m₱2,330.00₱1,000.00₱1,330.00
…BILL-000004…ACCT-0004residential (senior)5.000 cu.m₱235.00₱0.00₱235.00

The demo bills are priced by the module's own calculation engine, not typed in by hand, so their lines, totals and snapshots are internally consistent. The commercial bill is the interesting one: a ₱620.00 minimum for its 3/4" meter, three full blocks, then 13 cu.m billed above the top block — five lines that show the whole tier walk on one page.

Reports and exports

ReportAnswers
Billing registerEvery bill in a run or period, with consumption and amounts.
Collection summaryWhat was receipted, by day, channel and teller.
AgingOutstanding balances banded by how long they have been overdue.
ExceptionsReading exceptions by code, severity and resolution state.
Route completionHow much of each route book was actually read in a cycle.

All five are filterable and exportable, and every export is recorded in the audit log.

Background jobs

SlugSchedule
wu_daily_servicing01:20 daily
wu_expire_portal_tokensevery 30 minutes
wu_field_syncevery 15 minutes
wu_portal_payment_syncevery 10 minutes

Notification events

Nine events, all grouped under the Water Utility category. Who receives each one, and the limits that apply, are covered in Administration → Notifications.

Event keyAudienceRaised by
wu_bill_generatedCustomerPosting a bill
wu_bill_due_reminderCustomerwu_daily_servicing, stage 1
wu_bill_overdueCustomerwu_daily_servicing, stage 2
wu_payment_receivedCustomerIssuing a receipt (teller or gateway import)
wu_disconnection_noticeCustomerRaising a disconnection order
wu_reconnection_completedCustomerCompleting a reconnection order
wu_advisory_publishedCustomers in the targeted zonesPublishing an advisory (screen or API)
wu_bill_run_ready_for_approvalStaff with water_utility_bill_run_approveA run reaching computed
wu_reading_exception_flaggedStaff with water_utility_reading_validateFlagging a reading exception

Next steps

Was this guide helpful?

Report a content problem