# v12.2 — POS: whole thumbnails, line notes, corrections & finalize, sale-only tag

**Thumbnails** — the picture on each till tile is now shown in full (fitted inside a white square, centred, never cropped) and is a little larger (60 px). Photos are still pre-scaled once in the browser, in steps, so they stay sharp.

**Notes on items** — every cart line has a note box ("extra cheese", "no onion"); recently used notes are suggested. The same item with different notes is a separate line (one plain pizza, one with extra cheese); the ⑂ button splits one unit off a line so it can carry its own note. Notes print on the bill and, in bold, on the kitchen/counter slip, and show in Sales → bill and the Excel "Bill lines" sheet.

**Sale-only tag** — items sold without stock control show a "Sale only · stock not tracked" tag in Inventory (list, cards, compact view) and on the item page, so their 0 is not mistaken for "out of stock".

**Place → correct → finalize**
- Charging now *places* an order: stock comes off and kitchen slips print, but it is an **open order** — not a bill yet and not in any sales total.
- Open orders can be **corrected** from the till (Sales → bill → Correct order, or the "Open orders" button on the till): add/remove items, change quantities, notes, discount, payment, customer. Prices already on the order are kept; stock follows the change item by item (more = taken off, less = put back at the cost it left with).
- **Finalize bill** (confirm step) makes it the final bill: it enters the totals, the bill prints (if auto-print is on) and it can no longer be edited.
- A finalized bill can be **reopened** with a reason by users with the new permission *Reopen finalized bills for correction* (admins by default).
- **Correction log** — every correction, finalize and reopen is recorded (who, when, reason, before → after) in the same edit log viewer used elsewhere; open it from the bill. Bills show a ✎ count in the Sales table.
- Settings → Bill & printing: **Finalize step** can be switched off to get the old behaviour (a sale is final when charged). It is ON after upgrading.

## Upgrading
Replace the files and restart; the database upgrades itself (line `note`, finalize columns; existing bills count as finalized). New files: `posOrderLogic.js`, `tests/order-logic.test.js`. Existing `tests/pos.test.js` switches the finalize step off for its older checks and adds one for the new flow.

## Also in 12.2
- **POS counters & categories** — Setup → Locations has *POS counter*, Setup → Categories has *Available in POS*; only ticked ones are offered when adding a menu item and as till counters.
- **Till** — *All counters* is the default view (an order belongs to the counter of its first item); analytics has an *All* period and highlights the active range; touch/mobile layout (order sheet, larger targets, dialogs that fit the screen).
- **Restaurant service** — Settings → *Restaurant & tables*: switch it on, add tables (name, area, seats; several at once). The till then offers *Takeaway* / *Dine-in*; dine-in needs a table. The table prints on the kitchen slip and the bill, shows in Sales and the export, can be changed in a correction (logged), and a table that already has an open order offers *Add to B-…* so a waiter keeps one running bill per table.
