Skip to content

Daily Cashier Reports

Read the day’s takings without a POS licence or a till session: Cashier Collection lists every settlement taken, and the Z Report totals one branch for one date. Both screens only read; nothing is created or changed. Expect them to disagree for the same day: the Z Report counts sales returns and Cashier Collection does not, while Cashier Collection counts sales orders, payment vouchers and receipt vouchers that the Z Report never sees.

Overview

Daily Cashier Reports is a read-only reporting applet with two screens: Cashier Collection, a line-level listing of every settlement taken, and the Z Report, the end-of-day summary for one branch and one date. It creates and changes nothing — both screens are single calls to the sales reporting endpoints, rendered in a grid.

The same two reports are also reachable inside POS General. This applet exists so that a manager or back-office user can read them without a POS licence or a till session, and its Z Report is a slightly reduced version of the POS one — it has no Device filter and no Show Settlement Methods By User / Show Category Details options.

Where it fits

AppletRelationship
Data sourcePOS General, Sales Invoice (Internal), Sales Return (Internal), Sales Refund Note (Internal)The Z Report sums exactly these four document types. Cashier Collection reads a different set of six — see Fields
This appletDaily Cashier ReportsReads. Writes nothing
AdjacentSales ReportBroader sales analysis over the same documents
Where the money landsCashbookThe bank and cash accounts the settlements post to

Screens and menus

Two menu entries by default:

Menu itemRouteWhat it shows
Cashier Collectioncashier-collection-reportEvery settlement line, filtered by advanced search
Z Reportz-reportThe end-of-day summary for one branch and one date

A third screen, Cashier Collections By Settlement Type, is built and routed (cashier-collections-settlement-type) with its own backend endpoint, and the settings screen even offers a toggle to hide its menu item — but its entry is commented out of the menu list, and the menu builder only re-inserts entries that exist in that list. No menu entry opens it. The route itself is still registered, so the screen should open if you go straight to its address — the applet’s own address followed by /cashier-collections-settlement-type. That is read from the routing and has not been tried.

Cashier Collection

One grid, twelve columns: Branch, Settlement Method, Doc Type, Doc No, Created Date, Txn Date, Sales Agent, Sales Agent Code, User Create, Device, Amount, Remarks. Filtering is through the shared advanced-search panel, which offers a create-date and a transaction-date range (each with a Day / period selector) alongside the model’s other criteria. Grouping and totalling are done in the grid — drag Branch or Settlement Method into the group bar to get subtotals per payment method.

The branch list is restricted to the branches your API_TNT_DM_ERP_REPORT_CASHIER_COLLECTION_READ permission target allows.

Z Report

A short form — Branch and Date — then SEARCH, with Export to PDF beside it. The grid has three columns, Username, Description and Amount, grouped by Username with the amount summed per group.

The request asks for one day (the same date is sent as both from and to) and restricts the query to four server document types: INTERNAL_SALES_CASHBILL, INTERNAL_SALES_INVOICE, INTERNAL_SALES_RETURN and INTERNAL_SALES_REFUND_NOTE. Anything else — a credit note, a receipt voucher, a journal — is not in the Z Report.

The response is rendered as five blocks in this order:

  1. Settlement totals per payment method, ending in a Total row. Methods with a zero amount are dropped.
  2. Settlement detail — the same payments broken out per user.
  3. Sales: Gross Sales (net amount plus discount, less rounding), Discount, Rounding, and Total Net Sales, then the tax lines.
  4. Categories — one row per item category.
  5. Counts: No. of Transactions, No. of Transaction (Discounted), Item Sold, Item Sold (Discounted).

The branch list here is restricted by the API_TNT_DM_ERP_Z_REPORT_READ permission target.

Export to PDF renders the grid as it stands through the shared PDF exporter, with the Amount column right-aligned. There is no separate “print” action — print the PDF.

A recorded walkthrough of these two reports is available: Daily Cashier Reports (video).

Configuration

Before you can use it

WhatWhereWhy
BranchesOrganisationBoth screens are branch-scoped
Settlement methodsOrganisationThe Settlement Method column and the Z Report’s payment blocks
The read permission targets API_TNT_DM_ERP_Z_REPORT_READ and API_TNT_DM_ERP_REPORT_CASHIER_COLLECTION_READSettings → Permission Set / Role PermissionWithout a branch target on these, the branch drop-down comes back empty
Sales documents of the four counted typesPOS General and the sales appletsThere is nothing to report otherwise

No GL code, numbering or tax configuration is needed: this applet posts nothing.

Applet settings

Settings live on this applet’s own Field Settings screen, not the shared one. The settings menu has two entries, Field Settings and Default Selection; a Release Notes route exists with no menu entry. Personalization has one entry, Default Selection.

Five keys are bound to a control, saved by SAVE, and read at runtime:

SettingWhat it controlsDefaultEffect when changed
Allow viewing own created transactions only (VIEW_OWN_CREATED_TRANSACTIONS_ONLY)Restricts the Cashier Collection grid to rows the current user createdoff (null until first save)On: a user sees only their own collections, unless they hold the ALLOW_VIEW_TRANSACTION_ALL_USER_CREATE permission
Hide Z-Report Menu (HIDE_ZREPORT_MENU)Removes the Z Report menu entryoffThe entry can be restored per role with the SHOW_ZREPORT_MENU client-side permission
Hide Cashier Collection By Settlement Type Menu (HIDE_CASHIER_COLLECTION_BY_SETTLEMENT_MENU)Would remove that menu entryoffNo effect — the entry is commented out of the menu list, so the screen is unreachable either way
Default Transaction Date Range (DEFAULT_TRANSACTION_DATE)Pre-fills the Cashier Collection transaction-date filterunset1_day or 1_week sets the opening range
Sorting Order (SORTING_ORDER)The column and direction the Cashier Collection grid opens onunsetApplied as the query’s orderBy
Eight toggles on the same screen are decoys. Under Lines Settings (Unit Discount, SST/VAT/GST, WHT, Blanket Order) and Department Settings (Segment, G/L Dimension, Profit Center, Project) the slide toggles carry no formControl binding at all. They can be switched, they are never read, and SAVE does not persist them.

Default Selection sets the applet-wide Default Branch and Default Location; Personalization → Default Selection overrides them per user, and the Z Report pre-fills its Branch field from the personal setting.

Feature visibility and permissions

Two client-side permission codes are checked and both are seeded:

CodeWhat it does
SHOW_ZREPORT_MENURestores the Z Report menu entry for a role even when HIDE_ZREPORT_MENU is on
ALLOW_VIEW_TRANSACTION_ALL_USER_CREATELets a user see other users’ rows on Cashier Collection when VIEW_OWN_CREATED_TRANSACTIONS_ONLY is on

Server-side, the applet requests the API_TNT_DM_ERP_Z_REPORT_READ permission at start-up; the Cashier Collection screen declares API_TNT_DM_ERP_REPORT_CASHIER_COLLECTION_READ as its branch read permission. Both are target permissions — they decide which branches appear, not merely whether the screen opens.

Fields

Nothing here is created or edited, so the only fields are the ones you search with — and on both screens the search panel decides the answer more than most people realise.

Z Report — two boxes, and only one is checked

Branch is required; Date is not, and defaults to today. The date box carries a Date is not valid message in the template with no validator behind it, so it never appears — a cleared date simply sends an empty range. Branch is pre-filled from your personal default branch (Personalization → Default Selection), not the applet-wide one, so two colleagues open the same screen on two different branches.

The branch list is not the tenant’s branch list: it is the branch target on your API_TNT_DM_ERP_Z_REPORT_READ permission. No target means no branches, and the screen still opens.

Cashier Collection — six criteria, and three traps in them

CriterionWhat it does
BranchMulti-select, from the API_TNT_DM_ERP_REPORT_CASHIER_COLLECTION_READ target
Sales AgentMulti-select over employee entities — the sales agent recorded on the document, not the cashier who took the money
DeviceSingle-select, despite sitting among multi-selects. One till at a time
Create Date and Transaction DateTwo separate ranges, each behind its own checkbox, and you may tick only one. Ticking both is refused with Please choose either the date txn or date create filter
User CreateMulti-select — but see the trap below

Three things the panel does not tell you:

  • With neither date checkbox ticked, the report covers today only. The request falls back to the start and end of the current day, which is why a search with an untouched panel looks empty on a quiet morning. If you tick a checkbox but leave its range blank, the bounds become 2022-01-01 to 2099-12-31 — effectively everything — which is the other way this goes wrong.
  • The User Create filter does nothing unless Allow viewing own created transactions only is switched on. With that setting off, whatever you choose in User Create is never put in the request. With it on and you holding ALLOW_VIEW_TRANSACTION_ALL_USER_CREATE, your choice is sent; with it on and you not holding the permission, the filter is forced to your own login and your choice is ignored. So the box is live in exactly one of three configurations.
  • There is no Settlement Method filter, although Settlement Method is a column. To see one payment method, drag that column into the grid’s group bar — the grouping is the filter.

A keyword shorter than three characters is refused with Search keyword must more than 2 characters.

Why the two screens will never agree

They do not read the same documents. The Z Report asks for four server document types; Cashier Collection asks for six, and they overlap in only three:

Document typeZ ReportCashier Collection
INTERNAL_SALES_CASHBILL✓✓
INTERNAL_SALES_INVOICE✓✓
INTERNAL_SALES_REFUND_NOTE✓✓
INTERNAL_SALES_RETURN✓—
INTERNAL_SALES_ORDER—✓
INTERNAL_PAYMENT_VOUCHER—✓
INTERNAL_RECEIPT_VOUCHER—✓

So a day with returns reconciles differently on the two screens, and a day with receipt vouchers or payments out reconciles differently again. Neither screen is wrong; they answer different questions, and nothing on either says so. Reconcile the Z Report against the till and Cashier Collection against the bank.

One more sign convention: on Cashier Collection the Amount column is negated in the browser for INTERNAL_PAYMENT_VOUCHER and INTERNAL_SALES_REFUND_NOTE rows, so money out shows as a negative number and the column totals correctly. The stored amount on those documents is positive.

Lifecycle and effects

This applet is read-only. It creates no documents, writes no journal, moves no stock and holds no state of its own beyond the five settings above.

ScreenWhat it readsHow
Cashier CollectionSettlement linesThe cashier-collections/backoffice-ep sales-report endpoint under the tenant ERP reports prefix
Z ReportPayments, sales, categories and transaction counts for one branch and date, over INTERNAL_SALES_CASHBILL, INTERNAL_SALES_INVOICE, INTERNAL_SALES_RETURN, INTERNAL_SALES_REFUND_NOTEThe z-report sales-report endpoint
Cashier Collections By Settlement Type (unreachable)The same collections grouped by settlement typeThe cashier-collections-settlement-type/backoffice-ep endpoint

Related applets

Troubleshooting

SymptomCauseFix
The Branch drop-down is empty on either screenYour role has no branch target on API_TNT_DM_ERP_Z_REPORT_READ (Z Report) or API_TNT_DM_ERP_REPORT_CASHIER_COLLECTION_READ (Cashier Collection). This is a target filter, not a yes/no permission — the screen still opensAdd the branches to the permission target
The Z Report total does not match the day’s takingsThe Z Report counts only INTERNAL_SALES_CASHBILL, INTERNAL_SALES_INVOICE, INTERNAL_SALES_RETURN and INTERNAL_SALES_REFUND_NOTE. Credit notes, debit notes and receipt vouchers are excludedReconcile the excluded documents separately, or use Sales Report
The Z Report and Cashier Collection disagree for the same dayThey read different document types — the Z Report counts sales returns, Cashier Collection does not; Cashier Collection counts sales orders, payment vouchers and receipt vouchers, the Z Report does notExpected. See Why the two screens will never agree
Cashier Collection comes back empty with an untouched search panelNeither date checkbox is ticked, so the request covers today onlyTick Create Date or Transaction Date (not both) and set the range
A User Create choice is ignored on Cashier CollectionThe filter is only sent when Allow viewing own created transactions only is on; with it off, the box does nothingSwitch the setting on, or filter in the grid
The Z Report shows one day onlyThe form has a single Date field and the request sends it as both from and toRun it once per day
A user sees no rows on Cashier CollectionVIEW_OWN_CREATED_TRANSACTIONS_ONLY is on and the user created none of the day’s collectionsGrant ALLOW_VIEW_TRANSACTION_ALL_USER_CREATE, or clear the setting
The Z Report menu entry is missingHIDE_ZREPORT_MENU is on for the tenantGrant SHOW_ZREPORT_MENU to the role, or clear the setting
The Cashier Collections By Settlement Type screen is missing from the menuIts menu entry is commented out; the hide setting for it has no effect either wayGo to the applet’s address followed by /cashier-collections-settlement-type; the route is registered (read from the routing, not tried).
Toggles under Lines Settings or Department Settings do nothingThey have no form binding and are not saved.Ignore them
An AG Grid Error toast appears after SEARCHThe report endpoint returned an error; the applet surfaces the message verbatim under that headingRead the message; the usual causes are an out-of-range date or a branch you have no target for
Export to PDF is emptyThe grid is empty — export renders what is on screenRun SEARCH first

Related documentation

Last updated on