Dashboard
Understand Dashboard Profit and Financial Access
The Profit strip is a management estimate built from sale revenue, cost captured on each sale and Cash Book amounts. Missing costs, returns and Cash Book entry types must be checked before anyone treats it as accounting profit.
- Menu path
- Home -> Dashboard -> Profit; Manage -> Users or Roles -> Dashboard financials
- Verified from
- Posnic demo and current POS source reviewed on 2026-09-08
Technical source evidence
frontend/modules/dashboard.html financial-layer and profit-summary markup, frontend/static/script/js/modules/js/dashboard.js renderProfit warning, margin and cash-flow behavior, api/src/models/dashboard.model.js getProfitSummaryModel and getOverviewModel, api/src/controllers/dashboard.controller.js owner and dashboard.financials authorization, frontend/modules/settings_write.html Profit & Loss Cash Book toggle and user permission control, demo.posnic.io daily Profit strip observed on 2026-09-08
Read the Context Before the Amounts
- Confirm the active branch or outlet shown at the top of Dashboard.
- Confirm Today, This Week, This Month or This Year. The Profit label repeats the active period in parentheses.
- Check whether Sales Session Filter applies to the signed-in user; when enabled, the period can begin at the current login rather than the normal calendar boundary.
- Read the sale count at the right of the Profit heading. It counts sale documents accepted by the dashboard query, not individual line items.
- Read any warning below the formula before recording Gross Profit, Net Profit or Margin.
- Use the detailed reports listed below when the figure will drive tax, payroll, purchasing or a formal accounting entry.
What Every Profit Figure Currently Means
| Figure | Current calculation | Important boundary |
|---|---|---|
| Sales | Sum of items_total for Add, Edit and PartialReturn sale records in context. | The model also calculates return value, but does not subtract it here. |
| Cost of goods | Sum of total_companyprice stored on those same sale records. | This is the historical cost captured on the sale, not the item's current catalog cost. |
| Gross profit | Sales minus cost of goods. | It is shown as N/A when cost evidence fails the dashboard reliability check. |
| Expenses | Sum of amount on every matching document in the expenses/Cash Book collection. | The query does not filter entry type; Money In and Money Out can both contribute. |
| Net profit | Gross profit minus Expenses when Profit & Loss includes Cash Book; otherwise it equals gross profit. | The toggle changes Net Profit only; Expenses remains visible. |
| Margin | Net profit divided by Sales, or 0 when Sales is zero. | The client still prints this numeric percentage when profit is N/A. |
| Stock bought | Sum of receiving items_total except Open, Cancelled and FullReturn records. | Shown only in the sentence below the strip; purchases are not substituted for COGS. |
| Cash flow (Cash in minus out) | Sales minus Stock bought minus Expenses. | This is a simplified movement figure, not counted drawer cash or a bank reconciliation. |
Which Sales and Purchases Enter the Strip
| Record | Included? | Why this matters |
|---|---|---|
| Sale process Add | Yes | Normal completed sale value and captured cost contribute. |
| Sale process Edit | Yes | The stored edited sale document contributes. |
| Sale process PartialReturn | Yes | Its items_total and total_companyprice contribute; items_return_total is not deducted by this formula. |
| Sale process FullReturn | No | The dashboard profit query excludes it from the accepted sale-process list. |
| Purchase Open, Cancelled or FullReturn | No | These receiving states are explicitly excluded from Stock bought. |
| Purchase PartialReturn or another non-excluded status | Yes | The whole stored items_total can contribute because the purchase query is a deny-list. |
| Cash Book Money In | Yes, currently | The expense query sums amount without checking the entry type. |
| Cash Book Money Out | Yes | The amount contributes to Expenses and to cash-flow subtraction. |
Why Gross Profit and Net Profit Can Show N/A
A sale with value but no total_companyprice does not prove zero cost. Posnic marks profit unreliable when at least one positive sale has missing, null or zero captured cost, or when total recorded COGS is greater than Sales. The client then replaces Gross Profit and Net Profit with N/A.
- Read the warning below the Profit strip and note the missing-cost sale count and total sale count.
- Open the affected sale and its item records, then compare the cost/company price with the original supplier or purchase evidence.
- Do not invent a purchase price merely to remove the warning.
- Correct the catalog cost for future transactions using the approved workflow. Historical sales retain the cost captured on those sale documents unless the sale itself is legitimately corrected.
- Recheck the same branch and period. When every accepted positive sale has non-zero cost and aggregate COGS does not exceed Sales, Gross Profit and Net Profit are shown again.
- Ignore the displayed Margin while profit is N/A. The current client still renders the server's numeric margin; the live demo showed N/A profit beside 100% margin on 2026-09-08.
Control Cash Book Treatment in Profit & Loss
The branch setting pl_include_cashbook defaults to on. In the interface it is the Profit & Loss option that includes Cash Book entries. Turning it off does not remove Expenses from the strip and does not change the simplified cash-flow sentence; it only stops the summed Expenses value from reducing Net Profit and Margin.
- Open Manage -> Settings -> Core Settings -> Sale and locate the Profit & Loss Cash Book option.
- Record the current state before changing it and confirm the owner's accounting policy.
- Turn it on when the Cash Book collection is intentionally maintained as expenses that should reduce dashboard net profit.
- Turn it off when those records should remain visible but must not reduce this dashboard profit estimate.
- Save settings, return to Dashboard and select the intended period again.
- Reconcile Expenses separately because both Money In and Money Out entry amounts are currently summed by the dashboard query.
Protect Financial Visibility
Admin and super_admin users are treated as owners and receive financial data automatically. Other users require access.dashboard.financials=true. Dashboard read and Dashboard financials are separate controls.
- Grant Dashboard read so the user can reach the operating overview.
- Grant the currency-marked Dashboard financials permission only when the role may see shop money health.
- Without financial permission, the server omits both Profit data and the six KPI amounts; the client also removes the financial rows.
- Test the role with a non-admin account before handing over credentials.
- Do not use screenshots of owner financial cards in public staff training material containing real shop values.
Reconcile Profit Step by Step
- Lock the branch, period and effective start/end timestamps, including any Sales Session Filter.
- Match the Profit sale count and Sales amount to detailed Sales reports for the same context.
- Review Sales Returns separately and subtract valid refunds outside this strip when the decision requires net sales.
- Audit total_companyprice on accepted sales and resolve every missing-cost warning using source documents.
- Compare Expenses with the Cash Book report, separating Money In from Money Out before treating the total as expense.
- Compare Stock bought with Purchase reports and review partial returns and non-standard receiving statuses.
- Confirm the Profit & Loss Cash Book setting before comparing Net Profit between branches or periods.
- Use Daily Close, payment reports and counted denominations for drawer reconciliation; the dashboard cash-flow sentence is not a till close.
Choose the Correct Evidence
| Question | Open this evidence | Do not assume |
|---|---|---|
| Why is cash lower than sales? | Payment report, unpaid sales and register tally. | Every sale was cash. |
| Why is profit N/A? | Profit warning, item cost and purchase history. | Missing cost means zero cost. |
| Why is Margin positive beside N/A? | The N/A warning and source cost evidence. | The displayed percentage is reliable while profit is withheld. |
| How much was refunded? | Sales Return report and original sale records. | The Profit Sales value has already deducted returns. |
| Why are Expenses unexpectedly high? | Cash Book report grouped by Money In and Money Out. | Only Money Out contributes to the current dashboard query. |
| Why did net profit fall? | Sales, COGS and Expense report for the same period. | Purchases and COGS are identical. |
| Why does the drawer differ? | Register close and denomination/payment tally. | Dashboard cash equals counted drawer cash. |
| Can a cashier see profit? | Role/User Dashboard financials permission. | Dashboard read automatically grants money figures. |
Troubleshoot the Profit Strip
| Symptom | Likely reason | Action |
|---|---|---|
| Gross and Net show N/A | One or more positive sales has zero/missing captured cost, or aggregate COGS exceeds Sales. | Read the warning, audit item cost and sale history, then rerun the same period. |
| N/A appears with a numeric Margin | The client always renders margin before applying the N/A display rule. | Treat Margin as unavailable until the cost warning is resolved. |
| Expenses includes incoming money | The dashboard sums every matching Cash Book amount without filtering Type. | Separate Money In and Money Out in the Cash Book report. |
| Net Profit did not fall by Expenses | Profit & Loss Cash Book inclusion is off for the branch. | Review the branch setting and accounting policy. |
| Returns did not reduce Sales | The profit model does not subtract its calculated returns value from the displayed formulas. | Use return and sales reports to calculate reconciled net sales. |
| Purchase return seems overstated | PartialReturn is not excluded from Stock bought and items_return_total is not deducted there. | Review the receiving and purchase-return records directly. |
| Profit strip is missing | The user is neither an owner role nor granted Dashboard financials. | Have an administrator review the role; do not share an owner login. |
| Values changed after reopening Dashboard | Dashboard reinitializes to Today or session filtering changed the effective start. | Re-select the period and verify the exact context before comparing. |