Scale Sync (PLU)
Scale Sync manages the shop side of your weighing scale's PLU (Price Look-Up) table — assign short numeric codes to weighed products, then export a CSV your scale vendor's software can import so printed scale labels and POS billing always agree.
Overview
Every label-printing weighing scale (Essae, CAS, Aczet and similar) keeps its own PLU table mapping a short item code to a name and price. This page is where you maintain that mapping from the BazaarPOS side and export it in a format the scale's own import tool can read.
The POS reads the same codes back two ways at billing: from the special EAN-13 barcode prefix (20–29) that a scale prints on a weighed label, and from direct keypad entry of the PLU code.
By default the list only shows products already marked "Sold by Weight" or that already have a PLU code, keeping the working list short even in large catalogues.
Before You Start
- Requires the Advanced plan tier or above.
- Products must have "Sold by Weight" turned on (in the product's Inventory & Stock section) to appear here by default — toggle off the "Only weighed/coded products" filter to see everything.
Step-by-Step Guide
1 Find the products you need to code
- By default only products marked Sold by Weight or that already carry a PLU code are shown; untick "Only weighed / coded products" to search your whole catalogue instead.
- Use the search box to filter by product name or an existing PLU code.
2 Assign PLU codes
- Type directly into a product's PLU Code field — only digits are accepted, and the field is capped at 5 characters.
- Or click "Auto-assign" to fill every currently-listed product without a code with the next free sequential number.
- A row with a code that collides with another product's code is outlined in red with a "duplicate" label next to it.
3 Save and export the scale file
- Click "Save (n)" to write all your pending PLU changes — this is blocked with an error toast if any duplicate codes remain unresolved.
- Click "Export Scale File" to download a CSV with PLU, Name, Price, Unit and a fixed "Barcode Prefix" column (20 — the in-store EAN-13 prefix the POS decodes) for every currently coded product.
- Import that CSV using your scale vendor's own configuration software to program the physical scale.
Every Field & Button, Explained
| Field / Button | What it does |
|---|---|
Search product or PLU | Client-side filter across product name and current PLU code. |
"Only weighed / coded products" checkbox | When on (default), hides every product that is not marked Sold by Weight and has no PLU code. |
PLU Code input | Digits only, up to 5 characters; turns red with a "duplicate" label if the same code is used on more than one visible product. |
Auto-assign | Fills the next free sequential numeric code into every listed product that does not already have one. |
Save (n) | Writes only the changed (dirty) PLU codes back to their products; refuses to save while duplicate codes exist. |
Export Scale File | Downloads a CSV of every currently coded product (PLU, Name, Price, Unit, Barcode Prefix) for your scale vendor's import tool. |
Price / Sold By columns | Read-only reference columns showing the current sale price (with "/unit" for weighed items) and whether the item is sold by weight or by piece. |
Tips & Best Practices
- Run Auto-assign once on a freshly filtered list, then hand-fix only the handful of collisions it flags, rather than typing every code manually.
- Keep PLU codes short and memorable for high-volume loose items (fruit, vegetables, bakery) — cashiers will often key these in directly instead of weighing every time.
- Re-export the Scale File any time you add new weighed products or change a coded product's price, so the physical scale never drifts out of sync with the POS.
Troubleshooting & FAQ
A product I expect to see isn't in the list.
Save is disabled or fails with a duplicate-code error.
What exactly is in the exported CSV, and what do I do with it?
The POS didn't recognise a barcode printed by the scale.
🧑💻 Developer Notes
Source component(s):
frontend-app/packages/pos-react-lib/src/pages/products/ScaleSyncPage.jsx
Backend endpoints used:
GET /productsPUT /products/:id
Related tables (db-core repositories):
Product
Feature flag key: billing (requires advanced plan tier or above)
Saving is not a single bulk call — the page loops over every dirty product id and issues one PUT /products/:id per changed row with { pluCode }. Duplicate detection is computed client-side across the currently loaded + edited product list before allowing Save.