Furries PH Docs
Dashboard
Finance Management docs

Reference

Finance Modal and Field Inventory

Traceable field, validation, command, and accessibility contract for the 13 shipped Finance dialog families.

First created Last updated

financedialogsfieldsaccessibilitytraceability

Shared dialog contract

Every dialog opens from a named button, receives initial focus, exposes an accessible title and description, uses explicit field labels, announces validation/status, locks duplicate submission while pending, supports Escape/cancel when safe, and returns focus to its trigger. Backdrop close must not discard an in-flight or completed accountable action. Destructive operations name the consequence and correction path and use the dashboard confirmation component.

The browser submits intent only. Actor, partner, event authorization, server time, capability, version, current lifecycle, exact calculation, idempotency, locks, maker-checker, and audit receipt are revalidated by the API/database.

Entry dialog

Routes/triggers: Overview or Transactions → Record manual entry. Roles: permitted finance maker.

FieldControl and ruleEffect
KindRequired select: Income, Expense, Cash transferDetermines permitted balanced journal pattern
ScopePartner-wide or authorized eventApplies immutable partner/event dimensions
Amount/currencyExact positive amount and ISO currencyServer posts exact balanced lines; currencies do not mix
Cash/source/destination accountsAuthorized account selects; transfer accounts differControls journal lines and cash projection
Reference/description/dateBounded text and valid posting dateRecorded in source and audit; closed period rejects

Submit posts once and refreshes canonical totals. Unbalanced account mapping, duplicate payload, stale scope, or locked period leaves no partial journal.

Outflow dialog

Routes/triggers: Overview or Outflows → Request outflow. Roles: finance maker.

Fields are Scope, Amount, Payee, Masked destination, Purpose, Due date/time, and optional Cash account. Amount is exact and positive; payee/purpose are required and bounded; destination remains masked; account must belong to the partner and match currency. Submit creates/submits according to the route contract and does not self-approve. Success exposes lifecycle and receipt; threshold/maker-checker decisions remain server-owned.

Import dialog

Routes/triggers: Reconciliation → Import statement. Roles: reconciler.

Fields include cash account, statement/file type, statement period, currency when not source-owned, and file chooser with documented size/type limits. The preview displays file digest, parsed/accepted/rejected/duplicate rows, opening/inflow/outflow/closing values, validation issues, and source cutoff. Preview never posts. Apply requires the exact preview identity and is idempotent.

Review dialog

Routes/triggers: Reconciliation preview/commit and review-required workflows. Roles: authorized independent reviewer/reconciler.

Fields include resolution summary, variance, unresolved/duplicate/excluded populations, evidence-package explanation, required review acknowledgement, reason/comment when policy requires, and current preview/version identity. Raw evidence URLs are absent. Commit seals only the reviewed population; stale preview, prohibited variance, incomplete evidence, lock, or maker-checker conflict blocks it.

Payment-default dialog

Routes/triggers: Overview or Settings → payment/default account action. Roles: finance account administrator.

Fields include direction/domain, partner default account, event inherit/override/disabled behavior, effective scope, and impact preview. Account options are active, partner-owned, and currency-compatible. Save is versioned and audited; it changes future/default selection and does not rewrite historical journal identity.

Period dialog

Routes/triggers: Overview or Close → create/close/reopen period. Roles: close owner/authorized approver.

Fields include period start/end, timezone/cutoff, currency, action, reason, readiness/checklist summary, unresolved exceptions, sign-offs, and explicit impact confirmation. Dates cannot overlap invalid period scope. Close requires prerequisites and independent sign-off; reopen requires capability, reason, and recent authentication when configured.

Record dialog

Routes/triggers: Payables, Receivables, Expenses, Budgets, Close, Automation, or domain create/edit. Roles: domain maker/administrator.

The dialog renders a typed schema for the selected domain, never a raw JSON textarea. Shared fields include record type, reference/name, scope, currency, exact amount or typed lines, owner/counterparty, dates, evidence, and current version. Options come from authorized partner/event/account/category/provider sources. Submit validates the domain lifecycle and returns the canonical record plus receipt.

Action dialog

Routes/triggers: Selected operational record → lifecycle action. Roles: capability-specific actor.

Fields include allowed Action, exact amount when applicable, payment/account reference, reason, evidence/acknowledgement, expected version, and impact summary. Only actions valid for the current state are shown, but the API rechecks. Approve, reject, pay, credit, write off, revise, close, replay, archive, and correction each retain distinct command semantics.

Custody-open dialog

Route/trigger: Custody → Open custody. Roles: authorized custodian.

Fields are Cash account (required), Event scope (optional/partner-wide), and guided PHP denomination counts for ₱1,000, ₱500, ₱200, ₱100, ₱50, and ₱20. Counts are non-negative integers. Opening float is calculated live and recalculated server-side. Submit binds the signed-in custodian and checkout time; raw denomination JSON and browser-supplied actor/time are not accepted.

Custody-action dialog

Route/trigger: Custody row → Manage. Roles: active custodian, handover recipient, or supervisor as required.

FieldOptions/rule
ActionRecord movement, Request handover, Accept handover, Count and submit close, Supervisor close
Movement typePaid in, Paid out, Safe drop, Float adjustment, Count
Amount/countExact non-negative amount plus guided denomination rows; server recalculates count
ReferenceBounded operational reference
Handover recipientVerified authorized finance user; cannot violate actor separation
ReasonRequired, at least three characters; retained in audit

Both handover parties confirm the same count. Difference or dual-control failure blocks normal close.

Cash-account dialog

Route/trigger: Settings → Add/Edit cash account. Roles: finance.accounts.manage.

Fields are Name, Ledger account, Currency, Opening balance, Active/archive state, and impact preview. Ledger account must belong to the partner and match currency. Opening balance is exact. After postings exist, ledger account, currency, and opening balance are immutable; archive preserves history. Save returns the canonical account and audit receipt.

Integration profile dialog

Route/trigger: Integrations → Add/Edit integration. Roles: finance integration administrator.

Fields are Name, Direction (Inbound/Outbound/Bidirectional), Provider/standard (Bank feed, Accounting system, ISO 20022 camt, UBL 2.3, Peppol BIS, XBRL GL, SAF-T), Schema version, Currency, Reconciliation account, and Sync schedule (Hourly/Daily/Manual). Test and save performs preflight and records scopes, actor, and time. Credentials are never displayed after verification.

Route dialog

Routes/triggers: Overview or route-level Create/Open actions that need a safe destination/workflow choice. Roles: capability-dependent.

Fields identify target workflow/route, retained scope (partner/event/account/currency/cutoff), requested action, and any confirmation needed before navigation. The dialog must not imply a mutation occurred. Invalid or unauthorized retained context is dropped with a clear notice rather than applied to another partner/event.

Validation and error presentation

StateDialog behavior
Missing/invalid fieldKeep open, focus/associate the first error, preserve safe entries, show field and summary text
Permission or scope denialDo not disclose unauthorized record existence; close or disable mutation and explain safe next step
Stale versionShow current safe state and require intentional refresh/reapply
Locked period/maker-checkerName the control and authorized correction/reviewer path
Duplicate/idempotent replayShow original result or payload conflict; never create a second record silently
Provider/rate/unavailableKeep redacted correlation/retry guidance and preserve idempotency
SuccessAnnounce result, close once safe, return focus, refresh canonical row/KPI/detail, and expose receipt

Current evidence

The local certificate inventories 13 dialog families and passes eight accessibility contracts. Browser evidence covers 18 modal controls and critical workflows for default payment account, cash account, custody denomination count, event authoritative totals, and automation drill-down. Route-specific mobile, denial, conflict, provider-failure, and real-stack dialog captures remain release gates.

All docs