v2.18.0
v2.18.0 — The queue empties itself
New - **Print the SKU itself and its FNSKUs** (SKU-LABEL-01): the Print Unit Labels dialog always offers the SKU row — the "no active UOM barcodes" refusal is gone for good.
New
- Print the SKU itself and its FNSKUs (SKU-LABEL-01): the Print Unit Labels dialog always offers the SKU row — the “no active UOM barcodes” refusal is gone for good. One row per active alternate barcode (FNSKU), encoded byte-equal to the stored value so a printed label always scans back to its product. Multi-select in SKU Management with a product-agnostic label sheet. The FBA relabel loop closes: register, print, scan home.
- Per-customer allocation hold limit (SO-CREDIT-AGING-02): each customer can carry its own max allocation hold days (unset inherits the tenant threshold). On breach the system notifies — it never releases: the order’s aging line names the customer’s limit, the notification center lists it once, and the stale report sorts customer-limit breaches first. Releasing an allocation now demands a reason (min 10 chars) that rides the negative ALLOCATE ledger row with the releasing user’s name.
- Kit-held allocation becomes visible (KIT-HOLD-VIS-01): a component product now explains the allocation its kits are holding — read from the component-allocation table, never derived by subtraction. New CHANNEL DEMAND card on the product stock overview (ecommerce demand + grouped kit-order table), rendered only when there is something to say, and channel-gated: B2B-only users never receive the data at all.
Migration
- One, additive (
20260902120000_so_credit_aging_02_customer_hold_limit): a single nullable column oncustomers. Zero DROP/RENAME — code rollback to v2.17.0 is safe.