Source snapshot: 13 October 2026. These pages describe the current implementation, including unfinished controls. See coverage and review notes.
- English
- മലയാളം
Record collection
Host:admin.<ROOT_DOMAIN> · Route: /[tenant]/finance/collections/newPurpose and access
Record an inflow and generate its receipt using the selected collection category.You need an account session and a resolved membership context in the selected Mahallu (including the API’s current platform elevation path). The API independently checks the requested operation’s permissions and feature availability.Screen layout
The form proceeds through Collection Category, Payer & Household Information, Collection & Payment Details, Additional Category Details, and Remarks & Notes. Category configuration determines family/member targeting and dynamic fields.Fields and displayed information
Fields and filters: Record collection form
Fields and filters: Quick add account modal
Fields and filters: Quick add category modal
Configured additional fields support
checkbox, radio, multiselect, select, member, family, description, date, number, amount, and text fallback. Labels, options, defaults, order, and required markers come from the selected category. Disabled fields are excluded. A file type in the shared type definition has no dedicated upload branch in this renderer.Actions
Linked navigation
Interaction sequence
Select category → choose a household/member or enter the payer as appropriate → enter amount, payment method, date, and period → fill category-specific fields → submit. Success shows Collection Recorded & Receipt Generated; Print / Share Receipt opens the receipt modal and Record Another resets the form.States and rules
Amount and date are required controls; GENERAL categories mark payer name required. Enter moves focus to the next field except textareas and submit buttons. A selected family limits the member selector. Cancel & Return navigates back without submitting. The handler checks category, positive amount, and required family. It does not validate every configured required custom field; GENERAL and NO_TARGET are handled differently, which needs review.Implementation references
Paths below are relative to the application repository. This is source-reviewed behavior, not a recorded browser test.apps/web/src/app/sites/admin/[tenant]/finance/collections/new/page.tsxapps/web/src/features/finance/record-collection-form.tsxapps/web/src/features/finance/quick-add-account-modal.tsxapps/web/src/features/finance/quick-add-category-modal.tsxapps/web/src/features/finance/universal-receipt-modal.tsx
apps/web/src/lib/session.ts, apps/web/src/lib/server-api.ts, apps/web/src/lib/tenants.ts, apps/web/src/lib/finance.ts, apps/web/src/lib/business-resources.ts, apps/web/src/lib/members.ts, apps/web/src/lib/api-client.tsRelevant controller permission keys: collections.view, collections.create, collections.update, collections.delete, collections.cancel, receipts.view. Keys are operation-specific; the current guard grants OWNER/ADMIN and its platform-elevation context an operational bypass. A visible control still does not establish authorization.API behavior references
apps/api/src/finance/finance.controller.ts