Reports
Reconcile Kiosk and Self-Order Summary Totals
Summary Details rolls eligible Kiosk and Self-Order records from all selected branches into ten cards. Use it as a quick operational view, then reconcile the underlying sales because the current formulas do not subtract refunds or discounts from Net Sales and only expose exact Upi and Cash payment buckets.
- Menu path
- Reports -> Sales -> Kiosk Reports -> Summary Details
- Verified from
- Posnic demo and current POS source reviewed on 2026-09-08
Technical source evidence
frontend/modules/kioskReport.html Summary Details cards labels and tooltips, frontend/static/script/js/modules/js/report_kiosk.js summary filters rendering and visible payment keys, api/src/controllers/sales.controller.js summary access and request normalization, api/src/repositories/sale.repository.js summary eligibility aggregation and formulas, demo.posnic.io Summary Details captured on 2026-09-11
Run Summary Details
- Open Reports, then Sales, then Kiosk Reports.
- Select Summary Details.
- Open Filter and choose the reporting date range.
- Select one or more branches.
- Choose All Methods, Kiosk or Self-Order.
- Select Apply and wait for all ten cards to refresh.
- Record the selected scope with any exported or reconciled result; the cards do not display branch or channel breakdowns.
Which Records Are Included
| Rule | Current behavior | Operational meaning |
|---|---|---|
| Channel | All Methods means sale_method Kiosk or Self-Order; a selected method is an exact match. | Normal cashier sales are excluded. |
| Sale process | Add, Edit, PartialReturn and FullReturn are included. | This differs from Detailed kiosks, which excludes FullReturn. |
| Date | The original sale date field is filtered from start through end of day in the shop timezone. | This differs from Detailed kiosks, which filters updated_date. |
| Branch | Every valid selected branch is combined. | The cards do not separate outlet totals; run branches individually when attribution matters. |
| Session | The summary endpoint does not apply the Sales Session Filter. | A cashier's summary can span eligible sales outside that user's permitted sales-history session scope. |
| Access | Report Read permission must be exactly true. | A permission failure is not a zero-value report. |
Understand Every Card
| Card | Current calculation | Important interpretation |
|---|---|---|
| Sales (Include Tax) | Sum of saved items_total. | Gross saved totals; refunds and discounts are not explicitly removed. |
| Net Sales | Sum of items_total minus tax. | In the current implementation this is identical to Sales (Exclude Tax); refunds are not subtracted. |
| Sales (Exclude Tax) | Sum of items_total minus tax. | Refunds are not explicitly removed. |
| Net Sales Tax | Sum of saved tax. | Despite the tooltip wording, refunded kiosk tax is not separately subtracted. |
| Discounts | Sum of saved discount. | The card does not calculate a refunded-discount adjustment. |
| Gross Profit | Sum of items_total minus tax minus total_companyprice. | Refunds and discounts are not separately subtracted from this formula. |
| Refunds | Sum of items_return_total. | When this field is an array, only its first value is used. |
| COGS | Sum of total_companyprice. | When this field is an array, only its first value is used. |
| UPI / QR Pay | Full items_total for records whose raw payment_mode key is exactly Upi. | Other capitalization or labels do not enter this visible card. |
| Cash | Full items_total for records whose raw payment_mode key is exactly Cash. | Refunds are not subtracted from the payment bucket. |
Why Summary and Detailed Can Disagree
- Summary filters the original sale date; Detailed kiosks filters updated_date. An edited old order can appear only in Detailed for the edit period.
- Summary includes FullReturn records; Detailed kiosks includes Add, Edit and PartialReturn only.
- Summary combines all selected branches into cards, while Detailed rows also omit the branch column; run one branch at a time for a dependable comparison.
- Summary is an aggregation of stored sale fields, while Detailed reconstructs some line prices, discounts and taxes for display.
- The summary endpoint does not apply the Sales Session Filter used by some transaction reports.
- Net Sales and Sales (Exclude Tax) are expected to match under the current code because they use the same formula.
Payment Buckets
- The backend groups every raw payment_mode value and totals the full items_total for matching records.
- The browser renders only two exact keys: Upi and Cash. Card, split tender, gateway names, differently capitalized UPI labels and Unknown are not shown as separate cards.
- A missing payment mode is grouped as Unknown by the backend but remains invisible on this screen.
- Payment totals include the same eligible FullReturn records and do not directly subtract items_return_total.
- Do not expect UPI plus Cash to equal Sales (Include Tax) when other payment modes, split tenders, returns or inconsistent labels exist.
- Use Payment Reports and source receipts for tender reconciliation.
Reconcile the Cards
- Run Summary Details for one branch, one channel and a short date range.
- Record all ten displayed values before changing filters.
- Run Detailed kiosks for the same visible filters, remembering that its updated-date and sale-process rules differ.
- Open the contributing Sale IDs in Sales History and identify edits, partial returns and full returns.
- Compare tender totals in Payment Reports; specifically look for modes other than exact Upi and Cash.
- Verify Refunds against return transactions and receipts, especially records that store return totals as arrays.
- Use Day-End or accounting reports for financial close rather than treating these cards as a ledger.
Export and Audit Limits
- Summary Details has no card-level pagination, drilldown or dedicated Summary export control.
- The page-level PDF, CSV, Excel and Email controls remain visible, but their output should be verified separately instead of assumed to match the ten cards.
- The cards omit branch, sale ID, operator, customer, payment-mode detail, sale process, record count and calculation timestamp.
- Backend payment totals are rounded to cents; the browser formats every card to two decimals.
- Multi-branch and All Methods results cannot be decomposed from the summary screen after the fact.
- Retain the selected filters and supporting transaction reports with any close or audit evidence.
Troubleshooting
| Problem | Check | Action |
|---|---|---|
| Every card is zero | Selected dates, branches, method, Report Read permission and the original sale date | Test a known Kiosk or Self-Order sale in the same exact scope. |
| Net Sales equals Sales Exclude Tax | Current formula | This is expected behavior in the current implementation; both subtract only tax from items_total. |
| Summary differs from Detailed | Original sale date versus updated date, plus FullReturn inclusion | Reconcile source Sale IDs and run a narrow period. |
| UPI looks too low | Whether stored payment_mode is exactly Upi | Use Payment Reports to find UPI, QR, gateway or differently capitalized labels. |
| UPI plus Cash does not match sales | Other tenders, split payments, missing modes and returns | Reconcile all payment transaction categories. |
| Refund or COGS seems incomplete | Whether the stored field is an array | Inspect source sales; the summary reads only the first array value. |
| Gross Profit seems high after returns | Whether refunds or discounts were expected to reduce it | Use a financial report that explicitly handles returns and discounts before sign-off. |