Asset Management — Forms
Asset Management — Form Specifications
Module slug:
asset-management· UX/forms agent · 2026-05-02 Models the physical body of the institution: lands (Bhumi), buildings, rooms, vehicles, movable equipment, jewels (Abharana), insurance, disposals, resident allocations. Forms below match the framework HTML language (Sanskrit terms preserved with English gloss) and the column definitions indocs/blueprints/asset-management.md.
Form 4.1 — Land Asset (Bhumi) Entry
Purpose: Register a parcel of land owned by the trust, with the legal-document trail required for due diligence and the Statutory module's acquisition record. Who fills: Tenant-admin / legal officer · once per parcel · revisited when EC is renewed or mutation status changes.
| Field | Type | Required | Options / Validation | Default | Help |
|---|---|---|---|---|---|
| Asset code | text | Yes | uppercase, prefix LND-, unique per tenant |
auto: LND-{seq} |
Internal code; e.g. LND-MYS-007 |
| Village / Location | text | Yes | free text 127 chars | — | E.g. Mysuru Ashrama, Avathi Garden |
| Survey Number | text | Yes | as in revenue record | — | Sub-divisions joined with /, e.g. 123/4A |
| Sub-division | text | No | 40 chars | — | If applicable |
| Extent — Acres | number | Yes | step 0.01 ≥ 0 | 0 | Enter acres portion |
| Extent — Guntas | number | Yes | step 1, 0–39 | 0 | 40 guntas = 1 acre |
| Nature of Land | dropdown | Yes | Agricultural / Converted (Non-Agri) / Garden (Thota) / Residential / Commercial / Temple / Gomala / Forest | Agricultural | Drives statutory disclosure |
| Mode of Acquisition | dropdown | Yes | Direct Purchase / Gift (Dana) / Inheritance / Govt Allotment / Lease | Direct Purchase | From framework HTML |
| Taluk | text | No | 63 chars | — | |
| District | text | No | 63 chars | — | |
| State | text | No | 63 chars | Karnataka | |
| Link Documents (30 Years) | dropdown | Yes | Available / Pending / Missing | Pending | Mandatory legal trail |
| Encumbrance Cert (EC) Date | date | No | ≤ today | — | Last EC obtained |
| Mutation Status | dropdown | Yes | Completed (Name Changed) / Pending / Disputed / Not Applicable | Pending | |
| Mutation Completed On | date | No | ≤ today; required if status = Completed | — | |
| Original Doc Location | text | Yes | 127 chars | — | E.g. Locker SBI-MYS-A12, Almirah Shelf 3 |
| Boundaries (N/S/E/W) | textarea | No | 4 sub-fields free text | — | Stored as JSON {north, south, east, west} |
| Statutory acquisition record | lookup | No | references asset_acquisition_records |
— | Link sale-deed / gift-deed already filed in Statutory |
| Notes | textarea | No | 2000 chars | — |
Submit action: POST /api/asset-management/assets with asset_type=land. Creates parent assets row + land_assets subtype row. If Link Documents = Missing, a Compliance follow-up task is auto-spawned. Audit event emitted.
Related forms: Statutory Acquisition Record (Agent 2) for legal-document upload; Building Master (4.2) lists this land_asset_id as parent for buildings on it.
Form 4.2 — Building Master Entry
Purpose: Register a building (RSK / GK / BK / NM / Jamadagni etc.) sitting on a land parcel. Who fills: Tenant-admin / facilities manager · once per building · revisited only on construction / demolition.
| Field | Type | Required | Options / Validation | Default | Help |
|---|---|---|---|---|---|
| Asset code | text | Yes | prefix BLD-, unique per tenant |
auto: BLD-{code} |
E.g. BLD-RSK |
| Building Code | dropdown (with "Other") | Yes | RSK (Raja Rajeshwari Sannidhi) / GK (Gayatri Kuteera) / BK (Bhakti Kuteera) / NM Block / Jamadagni / Other | — | Tenant-defined; "Other" reveals free-text input |
| Building Full Name | text | Yes | 255 chars | auto from code | E.g. Raja Rajeshwari Sannidhi |
| On Land Asset | lookup | No | from land_assets |
— | Parent parcel |
| Branch | dropdown | Yes | tenant's branches | current branch | |
| Floors (count) | number | Yes | 1–10 | 1 | Including ground |
| Total Area (sq ft) | number | No | step 0.01 | — | |
| Construction Year | number | No | 1900–current year | — | |
| Use Type | dropdown | Yes | Residential / Admin / Kitchen / Shrine / School / Auditorium / Mixed | Residential | |
| Number of Rooms (planned) | number | No | ≥ 0 | 0 | Informational; actual rooms come from Form 4.3 |
| AC equipped (any room) | checkbox | No | — | unchecked | Quick filter |
| Active | checkbox | Yes | — | checked | |
| Notes | textarea | No | 2000 chars | — |
Submit action: POST /api/asset-management/buildings. Returns building id usable as parent for rooms. Triggers an option to bulk-add rooms via Form 4.3.
Related forms: Land Asset Entry (4.1) is parent; Room Setup Entry (4.3) is child; Maintenance Tasks (Module 6) attach to this asset_id.
Form 4.3 — Room Setup Entry
Purpose: Register an individual room within a building, used for resident allocation, event resource booking, and maintenance. Who fills: Facilities manager · per room (often via bulk-add wizard) · revisited if amenities change.
| Field | Type | Required | Options / Validation | Default | Help |
|---|---|---|---|---|---|
| Building | dropdown | Yes | tenant's buildings | — | Parent FK |
| Room Number | text | Yes | unique within building | — | E.g. G-12, 1F-3 |
| Floor | dropdown | Yes | Ground / First / Second / Third / Fourth / Fifth | Ground | Stored as integer 0..5 |
| Capacity (Beds) | number | Yes | 1–20 | 1 | |
| Room Type | dropdown | Yes | Residential / Office / Classroom / Hall / Kitchen / Storeroom | Residential | |
| Amenities — AC | checkbox | No | — | unchecked | |
| Amenities — Attached Bath | checkbox | No | — | unchecked | |
| Amenities — Hot Water | checkbox | No | — | unchecked | |
| Amenities — Wifi | checkbox | No | — | unchecked | |
| Amenities — Furniture | checkbox | No | — | unchecked | |
| Bookable for events | checkbox | No | — | checked | If unchecked, won't appear in Events resource booking |
| Active | checkbox | Yes | — | checked | |
| Notes | textarea | No | 1000 chars | — |
Submit action: POST /api/asset-management/buildings/{id}/rooms. Persisted to rooms table. Amenities stored as JSON.
Related forms: Building Master (4.2) is parent; Resident Allocation (4.10) writes room_id; Event Resource Booking (Form 7.5) reads is_bookable.
Form 4.4 — Vehicle Asset Entry
Purpose: Register a vehicle and track the four-document expiry calendar (RC / Insurance / PUC / Fitness). Who fills: Transport custodian · once per vehicle · revisited at every document renewal.
| Field | Type | Required | Options / Validation | Default | Help |
|---|---|---|---|---|---|
| Asset code | text | Yes | prefix VEH-, unique |
auto: VEH-{seq} |
|
| Registration Number | text | Yes | matches ^[A-Z]{2}\d{1,2}[A-Z]{1,3}\d{1,4}$ |
— | E.g. KA-09-AB-1234 |
| Vehicle Class | dropdown | Yes | Two-Wheeler / Car / Van / Bus / Truck / Tractor | Car | |
| Make | text | No | 127 chars | — | E.g. Mahindra |
| Model | text | No | 127 chars | — | E.g. Bolero |
| Year of Manufacture | number | No | 1980–current | — | |
| Chassis Number | text | No | 40 chars | — | |
| Engine Number | text | No | 40 chars | — | |
| Branch | dropdown | Yes | tenant's branches | current | Garaged at |
| Acquisition Date | date | Yes | ≤ today | — | |
| Acquisition Cost (INR) | number | No | step 0.01 | — | |
| RC Expires On | date | Yes | ≥ today on first entry | — | Triggers T-30 reminder |
| Insurance Expires On | date | Yes | ≥ today | — | Triggers T-30 reminder |
| PUC Expires On | date | Yes | ≥ today | — | Triggers T-30 reminder |
| Fitness Expires On | date | No | required for commercial vehicles | — | Triggers T-30 reminder |
| Road Tax Paid Until | date | No | — | — | |
| Odometer Reading (km) | number | No | ≥ 0 | — | |
| Primary Driver | lookup | No | from members |
— | E.g. driver-staff |
| Condition | dropdown | Yes | New / Good / Fair / Poor | Good | |
| Active | checkbox | Yes | — | checked |
Submit action: POST /assets with asset_type=vehicle. Schedules four reminder rows (one per document). Comms cron picks T-30 / T-7 / T-1.
Related forms: Insurance Policy Entry (4.6) attaches comprehensive policy; Maintenance Task Template (6.1) for service intervals.
Form 4.5 — Movable Equipment Entry
Purpose: Register movable items — computers, AV, kitchen equipment, generators, gensets, office furniture. Who fills: Asset custodian · per item or bulk · revisited on transfer / disposal.
| Field | Type | Required | Options / Validation | Default | Help |
|---|---|---|---|---|---|
| Asset code | text | Yes | prefix EQP-, unique |
auto: EQP-{seq} |
|
| Name | text | Yes | 255 chars | — | E.g. Genset 25 kVA |
| Category | dropdown | Yes | Computer / AV / Kitchen / Generator / Office / Other | — | |
| Make | text | No | 127 chars | — | |
| Model | text | No | 127 chars | — | |
| Serial Number | text | No | 127 chars | — | |
| Branch | dropdown | Yes | tenant's branches | current | |
| Current Location | text | Yes | 255 chars | — | E.g. RSK Floor 1 / Office |
| Acquisition Date | date | Yes | ≤ today | — | |
| Acquisition Cost (INR) | number | No | step 0.01 | — | |
| Acquisition Mode | dropdown | Yes | Direct Purchase / Donation / Gift (Dana) / Inheritance / Lease | Direct Purchase | |
| Warranty Expires On | date | No | — | — | |
| Assigned To (Member) | lookup | No | from members |
— | Custodian |
| Condition | dropdown | Yes | New / Good / Fair / Poor / Disposed | Good | |
| Notes | textarea | No | 2000 chars | — |
Submit action: POST /assets with asset_type=movable. Creates assets + equipment_assets rows. If condition=Disposed, redirects to Form 4.9.
Related forms: Asset Disposal Entry (4.9); Maintenance Task Template (6.1) for service.
Form 4.6 — Insurance Policy Entry
Purpose: Track insurance for any registered asset; supports renewal alerts and claim history. Who fills: Treasurer / insurance officer · per policy · revisited on renewal or claim.
| Field | Type | Required | Options / Validation | Default | Help |
|---|---|---|---|---|---|
| Asset | lookup | Yes | from assets |
— | The covered asset |
| Policy Number | text | Yes | 63 chars, unique per insurer | — | |
| Insurer Name | text | Yes | 255 chars | — | E.g. New India Assurance |
| Policy Type | dropdown | Yes | Comprehensive / Third-Party / Fire / Theft / Public Liability / Other | Comprehensive | |
| Sum Insured (INR) | number | Yes | step 0.01 ≥ 0 | — | |
| Annual Premium (INR) | number | Yes | step 0.01 ≥ 0 | — | |
| Coverage Start | date | Yes | ≤ Coverage End | — | |
| Coverage End | date | Yes | ≥ Coverage Start | — | Triggers T-30 renewal reminder |
| Premium Payment Mode | dropdown | No | Annual / Half-Yearly / Quarterly / Monthly | Annual | |
| Active | checkbox | Yes | — | checked | |
| Notes | textarea | No | 1000 chars | — |
Sub-form (claim): Date · Claim Number · Amount Claimed · Status (Filed/Approved/Settled/Rejected) · Settlement Amount · Notes.
Submit action: POST /api/asset-management/insurance. Posts a vendor payable in Vitta for the premium amount tagged to the asset's branch.
Related forms: Vehicle Asset (4.4), Building Master (4.2), Movable Equipment (4.5) — any may be the linked asset.
Form 4.7 — Jewel Vault (Abharana) Item Entry — HIGH SECURITY
Purpose: Register an item in the Jewel Vault (Abharana). Every write requires two-key cosign (Form 4.8).
Who fills: Vault custodian (primary) · once per item · revisited only on revaluation, movement, or disposal — each via Form 4.8.
Access role required: vault-custodian for write; vault-viewer for read.
| Field | Type | Required | Options / Validation | Default | Help |
|---|---|---|---|---|---|
| Vault Code | text | Yes | prefix JWL-, unique per tenant |
auto: JWL-{seq} |
E.g. JWL-001 |
| Asset code | text | Yes | prefix JWL-AST- |
auto | Parent assets row |
| Item Name | text | Yes | 255 chars | — | E.g. Gold Kirita |
| Item Name (Sanskrit) | text | No | Devanagari, VijayaDV preserved | — | E.g. सुवर्णकिरीट |
| Description (stones, design) | textarea | Yes | 2000 chars | — | Note distinguishing marks |
| Metal | dropdown | Yes | Gold / Silver / Panchaloha / Platinum / Mixed | Gold | |
| Purity (caratage) | number | No | 0.00–24.00 step 0.01 | — | E.g. 22.00 for 22ct gold |
| Gross Weight (gms) | number | Yes | step 0.001 ≥ 0 | — | Precision 0.001g |
| Net Weight (gms) | number | Yes | step 0.001 ≥ 0; ≤ Gross | — | |
| Stones present | checkbox | No | — | unchecked | If checked, "Stones description" mandatory |
| Stones description | textarea | conditional | required if Stones present | — | |
| Last Valuation (INR) | number | No | step 0.01 ≥ 0 | — | |
| Last Valuation Date | date | No | ≤ today | — | |
| Valuer Name | text | No | 255 chars | — | |
| Safe Custody Location | dropdown | Yes | Main Vault / Shrine Safe / Bank Locker (specify) / In-Repair (specify) | Main Vault | If "Bank Locker" or "In-Repair", reveals locker-id / repairer-name |
| Custody Status | dropdown | Yes | Vault / In-Use Festival / In-Repair / Pledged / Deposited Bank Locker | Vault | |
| Photos (front / back / detail) | file upload (multiple) | Yes | JPG/PNG ≤ 5 MB each, max 10 | — | Stored encrypted; role-gated reads |
| Acquisition Mode | dropdown | Yes | Direct Purchase / Gift (Dana) / Inheritance / Found-In-Hundi | — | |
| Acquisition Date | date | Yes | ≤ today | — | |
| Acquisition Cost (INR) | number | No | step 0.01 | — | |
| Notes | textarea | No | 2000 chars | — |
Submit action: POST /api/asset-management/jewels opens the Two-Key Cosign modal (Form 4.8). Item is not persisted until both signers cosign. On commit: creates assets + jewel_vault_items rows + audit_events entry. Photos uploaded to encrypted bucket.
Related forms: Two-Key Cosign (4.8) — mandatory wrapper; Asset Disposal (4.9) routes through Form 4.8 too.
Form 4.8 — Two-Key Cosign Form (Jewel Edits / Movements / Disposal)
Purpose: Wrap any high-security write to a Jewel Vault item with a second authorised signer + audit-event preview.
Who fills: Primary signer + Second signer (must be different users with vault-custodian and vault-second-signer roles respectively) · per write.
| Field | Type | Required | Options / Validation | Default | Help |
|---|---|---|---|---|---|
| Action Type | dropdown (read-only) | Yes | Insert / Update / Movement / Revaluation / Disposal | from caller | Set by parent form |
| Jewel Vault Code | read-only | Yes | from caller | — | |
| Change Summary (preview) | preview block | Yes | rendered server-side | — | Diff of fields about to change |
| Reason | textarea | Yes | 1000 chars | — | Mandatory; logged in audit_events.reason |
| Primary Signer | dropdown | Yes | users with role vault-custodian (current user pre-selected) |
current user | |
| Primary Signer OTP | text | Yes | 6-digit numeric | — | Sent to primary's mobile via Comms WhatsApp |
| Second Signer | dropdown | Yes | users with role vault-second-signer, must differ from primary |
— | Server-validated |
| Second Signer OTP | text | Yes | 6-digit numeric | — | Sent to second signer's mobile |
| Witness — Resolution Number | text | conditional | required for Disposal | — | Trustee-board resolution reference |
| Witness — Document Upload | file | conditional | PDF ≤ 10 MB; required for Disposal | — | Resolution PDF |
| I confirm read of preview | checkbox | Yes | must be checked | unchecked | Forces visual review |
Submit action: Validates both OTPs, signers differ, role permissions. On success: writes the underlying jewel change AND inserts audit_events row carrying both signer IDs, change diff, reason, and resolution number. On any failure: aborts; underlying jewel unchanged.
Related forms: Jewel Item Entry (4.7), Asset Disposal Entry (4.9 — invokes for jewels), Resident Allocation (4.10) does NOT go through this form.
Form 4.9 — Asset Disposal Entry
Purpose: Record formal disposal — sale, scrap, donation, destruction, loss, or transfer — of any asset. Who fills: Asset custodian + treasurer · per disposal · final-state form (asset becomes inactive after).
| Field | Type | Required | Options / Validation | Default | Help |
|---|---|---|---|---|---|
| Asset | lookup | Yes | active assets only | — | The asset being disposed |
| Disposal Date | date | Yes | ≤ today | today | |
| Disposal Mode | dropdown | Yes | Sale / Scrap / Donation / Destroyed / Lost / Transferred | — | |
| Disposed To (recipient/buyer) | text | Yes | 255 chars | — | E.g. Ravi Scrap Mart, Mysuru |
| Realisation Amount (INR) | number | conditional | required if Mode = Sale | — | |
| Reason | textarea | Yes | 2000 chars | — | Mandatory |
| Approval Resolution Number | text | Yes | 63 chars | — | Trustee-board resolution # |
| Resolution Document | file upload | Yes | PDF ≤ 10 MB | — | |
| Witness Name | text | Yes | 255 chars | — | Person who attested the disposal |
| Witness Signature (image) | file upload | No | JPG/PNG ≤ 2 MB | — | |
| Photos (post-disposal) | file upload (multiple) | No | JPG/PNG ≤ 5 MB each, max 5 | — | |
| Notes | textarea | No | 2000 chars | — |
Submit action: If asset is jewel → invokes Form 4.8 two-key cosign first; otherwise single-key with mandatory audit_events row. Sets assets.condition='disposed', is_active=false. Posts realisation as a Vitta receipt tagged to fund of original acquisition.
Related forms: Two-Key Cosign (4.8) for jewels; Insurance Policy (4.6) — outstanding policy auto-flagged for cancellation.
Form 4.10 — Resident Allocation
Purpose: Allocate a member (resident / staff / student / guest) to a specific room with check-in date. Who fills: Accommodation officer · per allocation · revisited on check-out.
| Field | Type | Required | Options / Validation | Default | Help |
|---|---|---|---|---|---|
| Resident (Member) | lookup | Yes | from members (search by name/phone) |
— | |
| Building | dropdown | Yes | tenant's buildings | — | |
| Room | dropdown | Yes | rooms in selected building with available capacity | — | Disabled rooms greyed out |
| Check-in Date | date | Yes | ≤ today + 30 days | today | |
| Check-out Date (planned) | date | No | ≥ Check-in | — | Optional for indefinite stays |
| Purpose | dropdown | Yes | Staff / Student / Guest / Event-Guest / Long-Term Resident | Staff | |
| Daily Rate (INR) | number | conditional | required if Purpose = Guest or Event-Guest; ≥ 0 | 0 | Tenant rate card |
| Roommates (max) | read-only | — | room.capacity − current_occupancy | — | Computed |
| Special Requirements | textarea | No | 500 chars | — | E.g. needs ground floor (knee injury) |
| Issued Key/Access Card | text | No | 40 chars | — | Tracking |
| Notes | textarea | No | 1000 chars | — |
Submit action: POST /api/asset-management/rooms/{id}/allocate. Creates room_allocations row. Capacity-guard: rejects if room already at capacity. Member tagged with resident-active until checkout.
Related forms: Room Setup (4.3) defines capacity; Members Suite (Module 12) for the resident's profile; Event Attendee (Form 7.7) may pre-allocate accommodation.
Workflow notes
- First-time setup order: 4.1 (land) → 4.2 (buildings on land) → 4.3 (rooms in building). Then 4.5 / 4.4 / 4.7 in any order.
- Insurance + Vehicle pairing: every commercial vehicle must have an active row in Form 4.6 referencing its asset_id.
- Jewel vault: all writes (4.7 entry, edits, movement, valuation, disposal) flow through Form 4.8. There is no single-key path.
- Disposal cascade: disposing a building triggers a cascade-warning on its rooms (active allocations must check-out first). Disposing a vehicle cancels its insurance row.
- Custom-field convention: for tenant-specific extras, use the existing
tagspolymorphic table (extendentity_type='asset'); do not modify these forms.