CSV Picking Article Scan LT Workflow

Layout 1:1 from NimmstaLayout XML (device pxx=200, pxy=200) · Load (get-job) → Language (optional) → Picking Box Scan → Storage (scan article) → Quantity Confirm / Inventory (optional) → Completion. LightTag: preconnect in Picking Box, lightTagFeedback per location. DE/EN in parallel.

Main flow (DE locale)
REST API endpoints are documented step by step below the diagram — not on the device mockups.
Load Step (Initial)
Loading Data
get-job: results → Picking Box Step/ENG (language) · empty/404 → NoOpenOrders
Picking Box Step
OPTION
Order 123
SCAN container
onAppear: prepareCurrentLightTags (preconnect ≤5 storage tags OFF). Scan → set pbox on results → Storage Step · OPTION → Options Picking Box Step
Storage Step
OPTION
Storage
04.08.01.01
Qty
7
Scan article
PRL - 449655259
onAppear: lightTagFeedback (current storage AUTOMATIC). Scan article_number: qty>1 → Quantity Confirm · qty=1+stock → Inventory · qty=1 no stock → next Storage or Completion · wrong → negative · OPTION → Options Storage Step1
Quantity Confirm Step
OPTION
Stor.
04.08.01.01
3 / 7 TAKEN
Scan article
Article name
onAppear: lightTagFeedback. got_all / Scan: last → Completion/Inventory · more → Storage · onDoubleTrigger: short pick · onDisappear: disableCurrentLighttag · OPTION → Options Quantity Confirm Step
Inventory Step
OPTION
Qty after pick
5 pcs
YES
NO
YES → Storage or Completion · NO → Inventory Count Step · OPTION → Options Inventory Step
Inventory Count Step
OPTION
5 pcs
-1
+1
ENTER
-1/+1 → stay · ENTER → Storage or Completion · OPTION → Options Inventory Count Step
Completion Step
OPTION
Order 123
Save
Save / onTrigger → job.done → Load Step
Language Step (optional entry)
Language Step
OPTION
ENGLISH
GERMAN
GERMAN → Picking Box Step · ENGLISH → Picking Box Step ENG
Alternative entry (Load Job for Pre Picking Box Step)
Load Job for Pre Picking Box Step openJobs > 0 → Picking Box Step · openJobs == 0 → Start Step
Start Step
OPTION
Start open order
open_jobs → Picking Box Step · OPTION → Options Start Step
Branch: NoOpenOrders
NoOpenOrders
No open orders
Main Menu
Reload
Main Menu → stop · Reload → cancel · onAppear 25s → cancel
Options menus (via OPTION button)
Options Start Step
BACK
No option available
BACK
BACK → Start Step
Options Picking Box Step
BACK
Skip container
BACK → Picking Box · Skip container → Storage Step
Options Storage Step1
BACK
Confirm article
Shortage
PAGE 1
PAGE 2
Confirm article → Quantity Confirm · Shortage → Options Short Pick Step · PAGE 2 → Step2 · BACK → Storage Step
Options Storage Step2
BACK
Art. skipped
Order skipped
PAGE 1
PAGE 2
Art. skipped → Storage or Completion · Order skipped → Completion · PAGE 1 → Step1 · BACK → Storage Step
Options Storage last item
BACK
LAST PICKED
04.08.01.01
7 / 7
Article name
BACK → Options Storage Step2
Options Picking Step
BACK
Skip article
Skip order
Art. skipped / Order skipped → Storage or Completion · BACK → (Picking Step)
Options Quantity Confirm Step
BACK
Art. skipped
Order skipped
Shortage
Art. skipped / Order skipped / Shortage → Storage or Completion or Short Pick · BACK → Quantity Confirm Step
Options Inventory Count Step
BACK
Skip count
Skip count → Completion or Storage · BACK → Inventory Count Step
Options Short Pick Step
Del
7
8
9
4
5
6
1
2
3
0
ENTER
Numpad: enter quantity · ENTER → Storage or Completion
Flow overview
Start: Load Step (get-job) → with results Picking Box Step or ENG (by language/notFirstJob); else NoOpenOrders. Optional: Language Step → DE/EN → Picking Box. Alternative: Load Job for Pre Picking Box Step → openJobs>0 → Picking Box Step; else Start Step.
Picking Box: onAppear prepareCurrentLightTags (preconnect up to 5 storage IDs, set OFF). Scan container → set pbox on all results → Storage Step. OPTION: Skip container → Storage Step.
Storage: Shows storage, quantity, article. onAppear lightTagFeedback (current storage AUTOMATIC, others OFF). Scan article_number: qty>1 → Quantity Confirm; qty=1 with stock → Inventory; qty=1 no stock → next Storage or Completion. Wrong scan → negative_feedback. onDisappear disableCurrentLighttag. OPTION: Confirm article, Shortage (Short Pick), PAGE 2 (Skip article/job).
Quantity Confirm: Button "X / Y TAKEN" or keep scanning article. got_all / scan complete → Storage, Inventory or Completion. onDoubleTrigger: short pick. lightTagFeedback onAppear, disableCurrentLighttag onDisappear. OPTION: Skip article, Skip job, Shortage.
Inventory: "Qty after pick". YES → Storage or Completion. NO → Inventory Count. OPTION: Skip inventory.
Inventory Count: -1/+1, ENTER → Storage or Completion. OPTION: Skip count.
Short Pick (Options Short Pick Step): Numpad quantity, ENTER → Storage or Completion.
Completion: Save / onTrigger → job.done → Load Step.
LightTag: Preconnect in Picking Box (≤5 storage tags OFF). In Storage / Quantity Confirm: current storage AUTOMATIC, others OFF; on leave disableCurrentLighttag. LightTags addressed by storage (storage ID), not article number.
ENG path: Parallel steps Picking Box Step ENG, Storage Step ENG, Quantity Confirm Step ENG, Inventory Step ENG, Inventory Count Step ENG, Completion Step ENG and corresponding Options (ENG).

REST API — Step by Step

Required HTTP Data Connection endpoints per workflow step (derived from step logic). Standard PoV JSONs still use CSV/local job data — these endpoints are what your ERP/WMS should expose when migrating to HTTP.

Main flow

1 Load Step (Initial)
GET get-job Load open picking job and all pick lines
2 Picking Box Step
GET/POST validate-picking-box Validate scanned picking container barcode
POST assign-picking-box Assign container to order / pick job
3 Storage Step
GET get-pick-line Load current line: storage, quantity, article, stock
GET validate-article Validate scanned article barcode matches current line
4 Quantity Confirm Step
GET get-pick-line Load current line: storage, quantity, article, stock
PATCH confirm-pick-line Confirm picked quantity when line is completed
POST report-short-pick Report partial pick / shortage quantity
5 Inventory Step
GET get-pick-line Load current line: storage, quantity, article, stock
6 Inventory Count Step
GET get-pick-line Load current line: storage, quantity, article, stock
PATCH update-stock-count Submit corrected stock count after inventory
7 Completion Step
POST complete-job Close picking job and send results to ERP

Alternative entry & branches

8 Load Job for Pre Picking Box Step
GET get-job Load open picking job and all pick lines
9 NoOpenOrders
GET get-job Load open picking job and all pick lines

Options menu

10 Options Picking Box Step
GET/POST validate-picking-box Validate scanned picking container barcode
POST assign-picking-box Assign container to order / pick job
11 Options Storage Step1
POST confirm-without-scan Confirm article without barcode scan
12 Options Storage Step2
POST skip-article Skip current article, move to next line
POST skip-order Skip entire order in multi-order job
13 Options Picking Step
POST skip-article Skip current article, move to next line
POST skip-order Skip entire order in multi-order job
14 Options Quantity Confirm Step
POST skip-article Skip current article, move to next line
POST skip-order Skip entire order in multi-order job
15 Options Short Pick Step
POST report-short-pick Report partial pick / shortage quantity

Technical Reference — CSV Picking Article Scan LT

Article scan picking with LightTag at storage. See the step-by-step section above for which endpoint belongs to which workflow step.

1 · HTTP Data Connection setup

Connection type
HTTP Data Connection
Identifier
e.g. erp-system — referenced as dataConnection in the workflow
Base URL
Customer web service URL (HTTPS)
Authentication
None, Basic, Bearer, or OAuth
Endpoint identifier
Unique name per operation (must match step cards above)
Endpoint URL
Relative path, e.g. /orders/{orderId}/lines/{lineId}
Pre / post processing
Transform request and map response to NIMMSTA job format
requestOverride
Workflow can override body, headers, params, query (JavaScript)
Async rules: await works in loadData pre/post processing, onStopJobCode, and api.workflow.runActionCodeAsync(...). Step handlers (onScan, onButtonPress) are synchronous — use a loading step or workflow actions for API calls.

2 · Workflow integration patterns

loadData (Load Step)
"loadData": {
  "endpoint": "get-job",
  "dataConnection": "erp-system",
  "preProcessCode": "workflowStep.lastError = null; return request;",
  "postProcessCode": "return response.data;",
  "onSuccess": [{ "code": "job = setJob(response); ..." }]
}
Async action (confirm / complete)
"actions": [{
  "code": "api.workflow.runActionCodeAsync('confirmPickLine')
    .then(() => { ... })
    .catch((e) => { workflowStep.lastError = e; });"
}]

3 · Job object (get-jobsetJob)

{ "name": "Order or batch name", "results": [ { /* fields below */ } ] }
Field in job.results[]Description
storageLocation + LightTag ID
article_number / article_nameArticle
required_quantity / stockQuantity / inventory
scannedArticles / checkProgress

4 · Request / response examples

get-pick-line
GET /picking/lines/{lineId}
→ storage, requiredQuantity, articleNumber, articleName, stock
get-job
{ "name": "KO-2026-005678", "results": [{ "lineId": "501", "storage": "12.0.3", ... }] }

Coordinates 1:1 from NimmstaLayout (device pxx=200, pxy=200). CSV Picking Article Scan LT (PoVTemplates/CSV Picking Article Scan LT.json).