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

Bulk update

Host: admin.<ROOT_DOMAIN> · Route: /[tenant]/accountant/bulk-update

Purpose and access

Apply shared changes to selected categories, ledger accounts, or transactions.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

Public Categories, Chart of Accounts, and Transactions tabs each provide search, filters, selection, and target controls. Category changes can alter funds, scope/type, COA mappings, and status; account changes can alter type/parent/fund/status; transactions can move fund/category.

Fields and displayed information

Displayed table columns: Public Category Name, Inflow / Outflow, Assigned Fund, Public Scope / Type, Chart of Accounts Mapping, Status, Account Name & Code, Account Type, Parent Account, Document / Ref, Party / Member, Category, Date, Amount.

Fields and filters: Bulk update client

Actions

Interaction sequence

Select a tab → filter the records → select rows → choose target changes → execute the bulk update → inspect the result and refreshed data. COA mapping can also request posting pending transactions.

States and rules

Category/account/transaction paths are separate operations. Several updates run record by record, so partial progress is possible. The route loads up to 1000 collections/vouchers; the UI is not a full-dataset guarantee.

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/bulk-update/page.tsx
  • apps/web/src/app/sites/admin/[tenant]/accountant/bulk-update/bulk-update-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