Skip to main content
Source snapshot: 13 October 2026. These pages describe the current implementation, including unfinished controls. See coverage and review notes.

Financial years

Host: admin.<ROOT_DOMAIN> · Route: /[tenant]/accountant/financial-year

Purpose and access

Manage accounting periods and their current/open/closed status.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 table provides Add Financial Year, Set Current, Close FY, and Reopen. The creation dialog asks for name, start date, and end date.

Fields and displayed information

Displayed table columns: Year Title, Start Date, End Date, Status, Active, Actions.

Fields and filters: Financial year client

Actions

Interaction sequence

Add Financial Year → fill all three fields → submit → refresh. Use Set Current, Close FY, or Reopen on a saved year to call the corresponding backend action.

States and rules

The client checks that required values exist and sends dates as ISO values. Backend validation governs invalid or overlapping periods; the UI does not establish that every close action succeeds.

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]/accountant/financial-year/page.tsx
  • apps/web/src/app/sites/admin/[tenant]/accountant/financial-year/financial-year-client.tsx
Data and access helpers: 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/api-client.tsRelevant controller permission keys: finance.view, finance.settings.view, finance.settings.update, accounting.accounts.manage, accounting.journal.create, accounting.view, accounting.journal.cancel, accounting.ledger.view, accounting.reports.view, collections.view, collections.create, collections.update, collections.delete, collections.cancel, receipts.view, expenses.view, expenses.create, expenses.update, expenses.approve, payments.create, expenses.cancel, expenses.delete, dues.view, dues.manage, salary.view, salary.create, salary.approve, salary.pay, salary.update, banking.view, banking.manage, taxes.view, taxes.manage, reports.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