The operator scans each inbound SKU / parcel barcode and places it on the assigned palette.
After placement the operator confirms with Confirmed, a double-trigger, or by scanning the palette barcode — then the loop continues with the next scan.
Palette numbers are reused via reusablePalettes after clear-allocation.
| Data format | Dynamic job.results[] built on device (no pre-loaded lines required) |
|---|---|
| Main scan loop | Scan SKU → place on palette → confirm → next SKU |
| LightTag | LightTags are optional and not required — the PoV works the same way with or without them. |
| Job lifecycle | New Container completes current job and starts fresh · onStopJobCode finalizes summaries |
| PoV example data | SKU ART-1001 · Article Cola · Palette 1, 3 |
What the operator does on the watch — each step shows the screen, required action, and where the flow goes next.
If a job already exists, flow skips directly to Package Step. Otherwise press START to begin inbound sorting.
options 60×3 · start 180×100 y=50
Scan parcel / article barcode (e.g. ART-1001, article name Cola).
New SKU gets palette from reusablePalettes pool or max + 1 (e.g. palette 1 or 3).
scan_parcel y=40 · SCAN_NOW_TOUCH y=100 · scan ART-1001
Place item on palette 3. Screen shows palette number, running quantity, and article.
palette y=43 · palette_quantity y=43 · parcel_article y=87 auto · LT palette 1
Confirmation sets palette_quantity and check on the entry. Flow returns to Package Step for the next inbound item.
parcel_filed / palette scan / double-trigger → Package Step
Scan next parcel. Existing SKU on palette 3 increments quantity; new SKU may get palette 1 from reusable pool.
scan_parcel y=40 · next SKU on palette 1 or new palette
OPTION → New Container: confirm → finalizeJobData(), new job, api.workflow.done(true, newJob). Stop job runs summary via onStopJobCode.
Clear allocation scans palette LT → entries move to clearedAllocations, palette added to reusablePalettes.
complete_msg y=30 · save 180×50 y=145 · New Container via OPTION
flowchart TD
Start[Start Step] -->|START / job exists| Package[Package Step
scan SKU]
Package -->|valid SKU scan| Placing[Placing Step
palette]
Package -->|short barcode| Package
Placing -->|Confirmed / palette scan / double-trigger| Package
Placing -->|Skip| Package
Package -->|OPTION New Pallet| Numpad[Count Step
palette numpad]
Numpad --> Package
Package -->|OPTION New Container| NewCont[Confirm new container]
NewCont -->|Yes| NewJob[new job · done true]
Package -->|OPTION Clear allocation| Clear[Clear Allocation
scan palette LT]
Clear --> Package
Package -->|OPTION Pallet Info| PalletInfo[Scan palette · show SKU qty]
PalletInfo --> Package
style Package fill:#e8faf3,stroke:#4ED49B
style Placing fill:#e6f7fc,stroke:#0090BD
style Clear fill:#e3f2fd,stroke:#1565c0
finalizeJobData(), new job, api.workflow.done(true, newJob)clearedAllocations, palette added to reusablePalettes| Field | Meaning |
|---|---|
parcel_article | Scanned SKU / article barcode |
palette | Palette number |
palette_quantity | Cumulative quantity on palette for this SKU |
time / check | Scan / confirmation timestamp |
scanLog | SCAN, SUMMARY, PALETTE_SUMMARY audit lines |
clearedAllocations | Entries removed via Clear allocation |
get-job (response)
{
"name": "Inbound 2026-06-24",
"results": []
}
complete-job (request)
{
"name": "Inbound 2026-06-24",
"results": [{
"parcel_article": "ART-1001",
"palette": 3,
"palette_quantity": 12,
"check": "2026-06-24T17:20:00Z"
}],
"scanLog": ["SCAN;2026-06-24T17:19:00Z;ART-1001;3"]
}