Skip to content

POS Customer Display

The screen the shopper faces while the cashier rings up a sale: the lines as they are added, the subtotal, tax, discount, rounding, total and change, and between sales an idle screen with the branch name, a clock, your message and a carousel of images. It is read-only and creates nothing. It reads the cash bill POS General keeps in the browser, so it works only in the same browser profile on the same machine as the till — usually a second window on a second monitor; opened on another device or in a private window it stays on the idle screen for ever.

Your job, and the screen for it

The jobScreen or tabRead
Show the shopper the sale as it is rung up — open it in the same browser profile as the till, on the same machineCash Bill, in a second window of the till’s browserLifecycle and effects
Explain a figure to a shopper — a return shows minus signs, and rounding and a points discount arrive as lines of their ownCash Bill line grid (Item panel)Fields
Set the idle-screen message — left unset, it shows a blank line, not WelcomeSettings › Application Settings › Display Settings › Idle Screen SettingsApplet settings
Put images on the idle carousel — tick rows and press DEFAULT; anything uploaded is readable by anyone with the linkSettings › Attachment SettingsApplet settings
Set up the till it mirrorsPOS General applet, in the same browserBefore you can use it

Overview

POS Customer Display is the screen the shopper looks at while the cashier rings up a sale. It shows the cash bill’s lines as they are added, the running subtotal, tax, discount, rounding, total, amount paying and change, and — when the counter has nothing in the basket — an idle screen with the branch name, the date and time, a message you choose and a carousel of images you upload.

It is read-only. It creates nothing, settles nothing, and never calls a document endpoint. Everything it shows comes from the POS General Applet’s local draft, read out of the same browser database.

Where it fits

UpstreamThis appletDownstream
POS General Applet writing the current cash bill into its offline draft (draft_hdr, draft_line) in the browser’s IndexedDB database POS_<tenantCode>Reads the same database live and renders itThe shopper’s eyes. Nothing else.
The branch and sales-agent rows POS General stores in its settings tableThe idle screen’s store name and sales-agent name—
Images uploaded in Settings → Attachment SettingsThe idle carousel—
The two applets are coupled through one browser’s IndexedDB, not through the server. Both open new Dexie('POS_' + tenantCode), which is why the display must share the till’s browser profile on the same machine; a separate device, browser or private window sees an empty database (Troubleshooting).

Screens and menus

MenuRouteWhat it shows
Cash BillposThe display itself. Three panels are registered: POS Main (totals), Item (the line grid) and Message (the idle screen). The container switches to Item when the draft has at least one line and to Message when it has none.
Settings → Application Settingssettings/application-settingsDisplay Settings → Idle Screen Settings: a single MESSAGE field
Settings → Attachment Settingssettings/attachment-settingsThe image library for the idle carousel
Personalization → Default Selectionpersonalization/personal-default-selectionDefault Branch and Default Location

Totals panel (POS Main): SUBTOTAL, TAX, DISCOUNT, ROUNDING, TOTAL, PAYING, CHANGE, all formatted to two decimals, plus the image carousel.

Line grid (Item): NAME, UNIT PRICE, QTY, AMOUNT, with an expandable child row carrying the same four columns for make-to-order component lines.

Idle screen (Message): the branch name and the sales-agent name from the POS settings row, a clock that ticks every second, and the configured message.

The shared settings navigation also renders links to Permission Wizard, Permission Set, User Permission, Role Permission and Release Notes, because the settings menu is shared. None of those screens exists in this applet — it has only Application Settings and Attachment Settings — so each of those links opens the applet’s 404 page.

Configuration

Before you can use it

PrerequisiteWhereWhy
POS General installed and in use in the same browserPOS General AppletIt is the only writer of the POS_<tenantCode> database this applet reads.
A signed-in session with an e-mail in local storagePlatform loginWithout a signed-in e-mail in the browser, the display opens nothing and every panel stays empty.
A POS settings row (branch, sales agent) written by POS GeneralPOS General → its own Default SelectionThe idle screen’s store name and sales-agent name come from that row, not from this applet’s Default Selection.

Applet settings

SettingWhere it is setWhat it controlsDefaultEffect when changed
MESSAGESettings → Application Settings → Display Settings → Idle Screen SettingsThe line of text on the idle screennoneTakes effect on the next settings load. The component initialises the field to "Welcome" but then overwrites it with whatever the setting holds — including nothing — so an unset MESSAGE shows a blank line rather than Welcome.
POS_ATTACHMENT_GUIDSettings → Attachment Settings — tick rows in the Default Selection column, then press DEFAULTA comma-separated list of attachment GUIDs; the display builds one carousel slide per GUID, in the order of the listnoneTicking alone saves nothing: DEFAULT replaces the whole list with the rows ticked at that moment, sorted by Sort Code. Pressing it with nothing ticked empties the carousel.

Both are tenant-wide applet settings. There is no branch-level or per-terminal variation.

Personalization → Default Selection offers Default Branch and Default Location. The screen is not connected — it cannot load or save. Nothing in the applet reads DEFAULT_BRANCH or DEFAULT_LOCATION either.

Attachment Settings maintains the slides: Sort Code, Code, Description, the uploaded file and its upload date, with Save, Delete and a file-replace action. The form treats Code and Description as required, but ADD and SAVE do not wait for them, and neither is shown to the shopper. What ADD and SAVE wait for is the file: they light only for a file whose name ends in lower-case .jpg, .jpeg, .png or .gif, so a camera’s IMG_0412.JPG is refused until you rename it.

Sort Code sets the carousel order, compared as text — 10 comes before 9, so pad them (01, 02 … 10). The order is fixed when DEFAULT is pressed: change a Sort Code later and the carousel keeps its old order until you tick the rows and press DEFAULT again. Slides are shown through a public link that needs no sign-in. Treat anything you upload here as publicly readable by anyone who has the link.

Feature visibility / permissions

The applet has no client-side permissions and reads no HIDE_* / SHOW_* keys, so there is nothing to gate — and there is no Feature Visibility screen here in any case.

Server-side, only the attachment library is behind permissions: TNT_API_DM_ERP_POS_CUSTOMER_VIEW_ATTACHMENT_READ / _CREATE / _UPDATE / _DELETE (with _OWNER and _ADMIN as the broad grants). The display itself calls no authenticated endpoint at all — it reads the local database and the anonymous image URLs.

Fields

Settings → Attachment Settings → Edit Attachment

FieldMeaningRequiredNotes
FileThe image itselfTo have anything to showPreview shown; a delete icon removes the file, a separate Delete removes the whole record

Display line grid. NAME, UNIT PRICE, QTY and AMOUNT are copied from each till line at the moment POS General adds it: the item name, the unit price in the bill’s currency, the quantity in base units and the line amount. What a shopper may ask about:

  • A returned item shows minus signs in all three number columns — quantity, unit price and amount are each multiplied by the line’s sign.
  • The rounding adjustment and a points discount arrive as lines of their own, under the name of the item your tenant uses for each. Give those items names a shopper understands, because the shopper reads them.
  • Discount and rounding lines sit at the top, then the items, newest first (the grid sorts on the till’s line position, highest first; read, not run).

Child rows are the line’s own components — the active component lines of a made-to-order item, or the line’s child items — with the component’s own name, unit price, base quantity and amount.

Lifecycle and effects

There is no document, no server document type, no signum, no journal and no stock movement. This applet writes exactly one kind of record — the slides — and otherwise only reads.

How the live figures arrive. The display reads the cash bill in progress from the browser’s own storage on the same device, where POS General writes it. The totals panel changes the moment the till writes them; the line grid is re-read from the browser once a second. Neither calls the server, so the display cannot mirror a till on another device (Troubleshooting).

The idle carousel. The slides chosen in POS_ATTACHMENT_GUID are shown in turn, each through its public link.

Related applets

Troubleshooting

SymptomCauseFix
The display never leaves the idle screen while the cashier is ringing up a saleThe two applets are not sharing an IndexedDB — a different browser, a different device, a different profile, or a private window.Open the display in a second window of the same browser profile as POS General, on the same machine.
Every panel is blank, including the idle screenThe browser had no signed-in e-mail stored, so the display opened nothing.Sign out and sign back in on that browser.
The idle screen shows the branch and clock but no messageMESSAGE has never been saved. The component’s built-in Welcome default is overwritten with the empty setting.Set a message in Settings → Application Settings.
The carousel is emptyNo attachment row was saved as a default, so POS_ATTACHMENT_GUID is empty — ticking a row without pressing DEFAULT saves nothing, and DEFAULT with nothing ticked empties it.Tick at least one row in Settings → Attachment Settings and press DEFAULT.
An image is ticked but does not renderThe row has no file, or the file was deleted while the attachment record remained.Re-upload the file on the Edit Attachment screen.
ADD or SAVE stays grey on an attachment although the image is chosenThe file name does not end in lower-case .jpg, .jpeg, .png or .gif — .JPG, .webp and .svg are all refused.Rename the file (IMG_0412.jpg) or convert it, then choose it again.
Settings → Permission Set (or any permission link, or Release Notes) shows the 404 pageThose links are hard-coded in the shared settings navigation; this applet registers no such routes.Manage permissions from an applet that does route them.
Personalization → Default Selection will not saveThe component is routed directly, so the output that would carry the save is unbound.Nothing to do — the two keys are not read by this applet anyway.
A carousel image URL was shared and opens for someone outside the tenantThe image endpoint is anonymous by design.Only upload material you are content to publish.

Related documentation

Last updated on