Dashboard
Read and Reconcile Dashboard Totals
Dashboard Totals are six management orientation figures for the selected context; payment labels, return handling and Cash Book aggregation mean they are not a drawer close or accounting statement.
- Menu path
- Home -> Dashboard -> Totals
- Verified from
- Posnic demo and current POS source reviewed on 2026-09-08
Technical source evidence
frontend/modules/dashboard.html financial Totals block, frontend/static/script/js/modules/js/dashboard.js KPI loading, rendering and currency formatting, api/src/controllers/dashboard.controller.js canSeeFinancials and getOverview, api/src/models/dashboard.model.js total, profit, payment-mode and tax aggregation, demo.posnic.io dashboard totals observed on 2026-09-08
Check Context Before Reading Money
- Open Home -> Dashboard and confirm the active outlet or branch.
- Choose Today, This Week, This Month or This Year and wait for the Totals label to match.
- Wait for the loading ellipses to become currency values. Treat a dash as unavailable, not zero.
- Use the six cards only to identify what needs investigation.
- Open the matching detailed report with the same branch and explicit date range before balancing, exporting or posting accounts.
- Reconcile payments against register and transaction evidence rather than assuming Total Cash plus Total UPI equals Total Sales.
Who Can See the Totals
The Totals block declares Dashboard financial access. The API includes its KPI object only when canSeeFinancials approves the signed-in user.
- Users whose role or usertype is admin or super_admin are treated as owners and can see financials automatically.
- Any other role needs access.dashboard.financials=true.
- Ordinary Dashboard read access is not the same as financial access.
- When financial access is absent, the frontend removes the Totals block and the API omits the KPI object.
- Grant this flag only to staff who should see sales value, purchases, expenses, tax and tender totals.
What Each Total Currently Calculates
| Card | Current calculation | Primary verification |
|---|---|---|
| Total Sales | Sum of grouped items_total values for Add, Edit and PartialReturn sale records in context. | Detailed Sales and Return reports. |
| Total Purchase | Sum of receiving items_total where status is not Open, Cancelled or FullReturn. | Purchase and Return Purchase reports. |
| Total Expenses | Sum of amount across matching expenses/Cash Book records. | Cash Book and Expense reports, including entry type. |
| Total Tax | Sum of tax_amount on Add, Edit and PartialReturn sale records. | Tax Summary and detailed sales tax evidence. |
| Total Cash | Payment-attributed amount for modes whose lowercased label contains cash. | Payment report and register payment tally. |
| Total UPI | Payment-attributed amount for modes containing upi, gpay, phonepe or paytm. | Payment report and provider settlement. |
Sales and Return Limits
- The Total Sales source set accepts Add, Edit and PartialReturn records and excludes FullReturn records from its sales series.
- The model calculates a separate return series for FullReturn and PartialReturn records, but the six-card Total Sales formula does not explicitly subtract that return series.
- Whether a partially returned bill's stored items_total is already adjusted must be confirmed from the final bill record; the card alone cannot prove net sales after returns.
- Total Tax uses the same accepted sale-process set and likewise does not perform a separate return-tax subtraction in the KPI formula.
- Use Sales, Return Sales and tax reports together when net revenue or tax liability matters.
Purchase and Expense Limits
- Purchase inclusion is a deny-list: any receiving status other than Open, Cancelled or FullReturn can contribute, including legacy or imported status spellings.
- PartialReturn receiving records are not excluded by the purchase KPI formula. Use Return Purchase evidence before treating Total Purchase as net stock buying.
- Total Expenses sums the amount field of every matching Cash Book/expense record without checking whether its type represents Money In or Money Out.
- A Money In entry can therefore contribute to the displayed Total Expenses under the current implementation.
- The Profit setting that decides whether Cash Book expenses reduce net profit does not change the Total Expenses card; it remains the raw period sum.
How Cash and UPI Buckets Work
| Payment record | Amount used | Classification |
|---|---|---|
| Sale has a non-empty multi_payment object | Each split-payment value is summed under its object key. | Key text is tested against Cash first, then UPI aliases. |
| Sale has no usable multi_payment object | The full sale items_total is assigned to payment_mode. | The payment_mode text is tested against the same labels. |
| Mode contains cash | Included in Total Cash. | Substring match is case-insensitive; labels such as Cash Deposit also match. |
| Mode contains upi, gpay, phonepe or paytm | Included in Total UPI unless it already matched cash. | Other digital labels are excluded unless their text matches one of these patterns. |
| Mode is Card, Bank, Wallet, Credit or another label | Excluded from both headline buckets. | Still review it in Payment Reports. |
Why Totals May Not Add Up
- Total Cash plus Total UPI excludes all unrecognized or other tender labels, so it need not equal Total Sales.
- For a non-split sale, the payment aggregation assigns full items_total to its payment mode; unpaid or partial settlement must be checked in Pending Payments rather than inferred from this card.
- Split-payment values come from the stored multi_payment object and can differ from sale value if source data is incomplete or inconsistent.
- Returns, discounts, tax, wallet activity, customer credit, Cash Book movements and provider fees answer different questions and require their own reports.
- The dashboard period can also be narrowed by Sales Session Filter and currently uses API-server clock boundaries.
Reconcile the Six Cards
| Dashboard question | Open next | Confirm |
|---|---|---|
| Is sales value plausible? | Detailed Sales plus Return Sales. | Bills, items_total, return state and exact timestamps. |
| Did purchased stock arrive? | Purchase and Return Purchase reports. | Receiving status, supplier document, returned quantity and value. |
| What moved outside sales? | Cash Book/Expense report. | Money In versus Money Out, category, recipient and approval. |
| What tax is payable? | Tax Summary/Tax Payable and purchase register. | Output tax, returns, eligible input credit and jurisdiction rules. |
| What should be in the drawer? | Register close and Payment Tally. | Opening float, cash sales, cash movement, counted amount and variance. |
| Did digital money settle? | Payment report plus provider statement. | Method label, transaction, refund, fee and bank settlement. |
Troubleshoot Dashboard Totals
| Symptom | Likely reason | Action |
|---|---|---|
| Totals block is missing | The user lacks Dashboard financial access. | Review the role; do not share an owner login. |
| Value shows a dash | The overview failed or returned no KPI object. | Check connectivity and permissions, then use detailed reports. |
| Cash is lower than expected | Other payment labels, splits, credit or unpaid sales are outside the Cash bucket. | Compare Payment Report, Pending Payments and register tally. |
| UPI is zero despite digital sales | The saved payment label does not contain a recognized UPI alias. | Inspect payment-method names and transaction records; do not rename history casually. |
| Expenses include money added | The current KPI sums all Cash Book amounts without a type filter. | Separate Money In and Money Out in the Cash Book report. |
| Sales look high after returns | The KPI does not explicitly subtract its separate return series. | Reconcile Sales and Return Sales reports. |
| Purchase differs from supplier spend | Open/cancelled/full-return exclusions, partial returns or invoice scope differ. | Review receiving statuses and supplier documents. |
| Dashboard differs around midnight | Its current period boundaries use the API server clock. | Use explicit report timestamps and verify deployment time zones. |