Dentolize · Accounting Module Walkthrough
On this page1. Accounting Overview2. Chart of Accounts3. Account Mapping4. Responsibility Centers5. Revenue Mappings6. Allocation Rules7. Responsibility Center P&L8. Manual Journal9. Journal Entries10. Trial Balance11. Financial Statements12. Bank Reconciliation13. Fixed Assets14. Tax15. Fiscal Periods16. Expense Claims17. HR Overview18. Payroll19. Leave20. Commission

Walkthrough

These are real screenshots from the sandbox build (feat-accounting-module), logged in as the clinic owner role, with seeded demo data (a month of posted journal entries, depreciation runs, insurance claim settlements, expense payments). Nothing here is mocked — every number and row shown came from the actual GraphQL API.

1. Accounting Overview

The landing page of the module. Quick actions jump straight to the most common tasks (Manual Journal, Journal Entries, Trial Balance, Financial Statements); the stat tiles (Net Income, Cash, Accounts Receivable, Accounts Payable) and the "Recent entries" table are live queries, not cached snapshots.

Accounting overview — quick actions, KPI tiles, and recent journal entries
Accounting overview — quick actions, KPI tiles, and recent journal entries

Notice the recent entries are almost all Depreciation — this sandbox has a monthly depreciation cron that had just run across several fixed assets (Dental Chair Unit, Intraoral Scanner, Panoramic X-Ray Machine, and others), each producing its own balanced journal entry.

2. Chart of Accounts

Every clinic gets a seeded starter chart of accounts (assets, liabilities, equity, revenue, expense) organized into a hierarchy. System accounts (the ones the posting engine depends on) are protected from editing or deletion.

Chart of Accounts — hierarchical account list with type and code
Chart of Accounts — hierarchical account list with type and code

3. Account Mapping

This is the single most important setup screen in the module, and the clearest explanation of how automated posting works: every automated entry the system posts — an invoice, a payment, a stock consumption, a claim rejection — needs to know which GL account to hit. Account Mapping is where a clinic points each of these "roles" at a specific account, or leaves it on its accounting-best-practice default. Roles are grouped (Receivables & Cash, Revenue, VAT & Tax, Inventory & COGS, Expenses & Fees, Payroll & Doctors, Payables, Fixed Assets, Insurance Claims, Foreign Exchange, Advanced), and each dropdown only lists accounts of a compatible type — a Revenue-role account can't accidentally be mapped to a Liability account.

Account Mapping — every automated posting role, grouped and explained, with in-line account pickers
Account Mapping — every automated posting role, grouped and explained, with in-line account pickers

Read the description text under each role name (e.g. "Rejected claim amounts (contra-revenue); proportional VAT is reversed separately") — this screen doubles as the best plain-language explanation of the whole posting model, written by the people who built it.

4. Responsibility Centers

Sitting next to Account Mapping under Setup is Responsibility Centers — a way to tag activity by department, location, or branch, independent of which GL account it hits. Each center has a "Kind": Cost center for a pure overhead pool (Administration, Facilities, Marketing, Reception, Sterilization in this sandbox), or Investment center for something that should show its own bottom line (here, each branch — Khobar and Riyadh — is set up as an investment center).

Responsibility Centers — hierarchical list with code, name, and kind
Responsibility Centers — hierarchical list with code, name, and kind

5. Revenue Mappings

This screen auto-assigns a responsibility center to postings based on a doctor, branch, or procedure group — so a clinic doesn't have to tag every journal line by hand. The sandbox already has two rules mapping each branch's revenue to itself.

Revenue Mappings — branch-to-responsibility-center rules with priority and status
Revenue Mappings — branch-to-responsibility-center rules with priority and status

Multiple rules can technically match one posting (e.g. a line has both a doctor and a branch); which dimension wins is set on the Automations & Controls tab (Attribute revenue to responsibility centers and a drag-orderable Mapping precedence list).

Automations & Controls — the revenue-mapping toggle and precedence list
Automations & Controls — the revenue-mapping toggle and precedence list

6. Allocation Rules

A cost center's shared overhead doesn't have to sit there unattributed forever — an Allocation Rule spreads it out to one or more target centers by a driver (manual weight, chair-minutes, or procedure count). Here we're creating a rule that allocates the Facilities cost pool onto the Riyadh Branch investment center:

Allocation Rule form — source cost center, driver, and weighted targets
Allocation Rule form — source cost center, driver, and weighted targets

Saving it adds the rule to the list, alongside a log of "Allocation Runs" — each time the rule is actually executed for a period, it posts one real, reversible journal entry:

Allocation Rules — configured rule and its (empty, not yet run) allocation history
Allocation Rules — configured rule and its (empty, not yet run) allocation history

7. Responsibility Center P&L

Once responsibility centers are tagging activity, this report shows revenue and expense broken down by center, with an explicit "Unassigned" row for anything not tagged — so the totals always tie back to the overall income statement.

Responsibility Center P&L — revenue and expense per center
Responsibility Center P&L — revenue and expense per center

8. Manual Journal

For anything the automated posting doesn't cover — corrections, accruals, opening balances — an accountant can post a manual double-entry journal directly. The form enforces that debits equal credits before it will let you post, and flags the entry as an adjustment if it needs to bypass a soft-closed period.

Manual Journal — balanced debit/credit line entry form
Manual Journal — balanced debit/credit line entry form

9. Journal Entries

Every posted entry — manual or automated — lands here. The Source column shows what triggered it (Depreciation, Insurance claim, Expense payment, Payment, Inventory consumption, Doctor commission, Invoice); clicking a reference opens the full entry with its lines, contra-accounts, and audit history.

Journal Entries — the full posted ledger, one row per entry, with running debit/credit totals
Journal Entries — the full posted ledger, one row per entry, with running debit/credit totals

Note this sandbox's entries are always in balance (Debit 93,207.43 = Credit 93,207.43 across all 25 entries shown) — that's the double-entry invariant the posting engine enforces on every single entry, not just in aggregate.

10. Trial Balance

The classic accountant's sanity check: every account's net balance, on its natural side, for a period. If it doesn't balance, something in the posting engine is broken.

Trial Balance — one row per account with debit/credit balance
Trial Balance — one row per account with debit/credit balance

11. Financial Statements

Income Statement, Balance Sheet, Cash Flow, and Statement of Changes in Equity, all computed live from posted journal lines (not cached). The Income Statement follows a standard waterfall: Revenue → Cost of Revenue → Gross Profit → Operating Expenses → EBITDA → Depreciation → EBIT → Net Profit.

Financial Statements — Income Statement waterfall shown by default
Financial Statements — Income Statement waterfall shown by default

12. Bank Reconciliation

Compares a treasury's GL cash-account balance against a bank statement balance for a given date, with manually-entered statement lines and a per-line "matched" toggle.

Bank Reconciliation — statement balance vs. book balance, with a per-line matching checklist
Bank Reconciliation — statement balance vs. book balance, with a per-line matching checklist

(Worth knowing before you rely on it: the "matched" toggle here is a checklist, not a real match — see For Quality for what that means in practice.)

13. Fixed Assets

The asset register: acquisition cost, depreciation method, accumulated depreciation, and net book value for every capitalized asset, with a "Run Depreciation" action that also runs automatically on a monthly cron.

Fixed Assets — asset register with net book value and depreciation status
Fixed Assets — asset register with net book value and depreciation status

14. Tax

A live dashboard (not a persisted document) across VAT, withholding tax, Zakat, and a ZATCA e-invoicing reconciliation check — all computed on demand from posted GL data.

Tax overview — VAT / WHT / Zakat / ZATCA tabs
Tax overview — VAT / WHT / Zakat / ZATCA tabs

15. Fiscal Periods

Where a clinic locks a month (soft or hard close) so nothing can post into it by accident, and runs the year-end close that zeroes revenue/expense into retained earnings.

Fiscal Periods — one card per month, with close/reopen controls
Fiscal Periods — one card per month, with close/reopen controls

16. Expense Claims

The employee-reimbursement workflow: submit, approve or reject, then pay from a treasury — only the "pay" step touches the general ledger.

Expense Claims — status-filterable list of employee reimbursement claims
Expense Claims — status-filterable list of employee reimbursement claims

17. HR Overview

The Salary Hub / HR module's landing dashboard — employee and doctor counts, this month's total base salary, and the last payroll run's gross/net.

HR Overview — headcount and payroll KPIs
HR Overview — headcount and payroll KPIs

18. Payroll

Payroll runs move through Draft → Pending Review → Confirmed → Processed. Each run has one line per employee, with attendance-driven adjustments (overtime, lateness, absence, leave deductions) for non-doctor staff.

Payroll — payroll run list and status
Payroll — payroll run list and status

19. Leave

Leave requests, approvals, and balances — annual leave accrues per a configurable interval, and paid leave is capped by the employee's remaining balance.

Leave — leave request list with type, status and balance
Leave — leave request list with type, status and balance

20. Commission

Doctor commission is calculated per a configurable policy (production-based or payment-based, with optional deductions for materials/lab/discount/tax) and reported here per doctor.

Commission — commission report with earned, deducted and net amounts
Commission — commission report with earned, deducted and net amounts