CSV Picking Storage Scan LT Workflow

Layout 1:1 from NimmstaLayout XML (device pxx=200, pxy=200) · Single path: Load (get-job) → Picking Box Scan → Storage (storage scan) → Quantity Confirm / Inventory (optional) → Completion. LightTag via jobOptions.

Main flow
REST API endpoints are documented step by step below the diagram — not on the device mockups.
Load Step (Initial)
Loading Data
get-job: onSuccess + results → Picking Box Step · empty/404 → NoOpenOrders
Picking Box Step
OPTION
Order 123
SCAN container
Scan → set Pickingbox on results → Storage Step · OPTION → Options Picking Box Step
Storage Step
OPTION
Scan
04.08.01.01
Qty
7
Article info
PRL - 449655259
Scan storage_scan: 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
Article info
Article name
got_all / Scan: last → Completion/Inventory · more → Storage · onDoubleTrigger: short pick · 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, openJobs-- → Load Step
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
1 Bestellung(en)
open_jobs → Picking Box Step · OPTION → Options Start Step
Branch: NoOpenOrders (load fails or no results)
NoOpenOrders
No open orders
Main menu
Aktualisieren
Main menu → stop · Refresh → cancel · onAppear 25s → cancel
Options menus (via OPTION button)
Options Start Step
BACK
No option available
BACK
BACK / BACK → Start Step
Options Picking Box Step
BACK
No picking box
BACK → Picking Box · No picking box → 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
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
Options Storage last item
BACK
Previous article:
04.08.01.01
7 / 7
Article name
BACK → Options Storage Step2
Options Picking Step
BACK
Art. skipped
Order skipped
Art. skipped → Storage or Completion · Order skipped → Completion · Back → Picking Step
Options Quantity Confirm Step
BACK
Art. skipped
Order skipped
Shortage
Art. skipped / Order skipped → Storage or Completion · Shortage → Options Short Pick Step · BACK → Quantity Confirm
Options Inventory Count Step
BACK
Skip inv.
Skip inv. → Completion or Storage · BACK → Inventory Count Step
Options Inventory Step
BACK
Skip inventory
Skip inventory → Completion or Storage · BACK → Inventory Step
Options Short Pick Step
Del
7
8
9
4
5
6
1
2
3
0
ENTER
Numpad: enter quantity · ENTER (empty → negative) → Storage or Completion
Count Step (alternative numpad layout)
Count Step
0 pcs
Del
7
8
9
4
5
6
1
2
3
0
OK
Digits/Del → stay · OK → Storage or Completion (not reachable from main flow)
Flow overview
Start: Load Step (get-job) → with results Picking Box Step, else NoOpenOrders. Alternative: Load Job for Pre Picking Box Step → openJobs>0 → Picking Box; else Start Step (open_jobs → Picking Box).
Picking Box: Scan container → set picking box on all results → Storage Step. OPTION: No picking box → storage without box.
Storage: Shows storage, quantity, article. Scan storage_scan: when required_quantity>1 → Quantity Confirm (scannedArticles++); when qty=1 and stock available → Inventory Step; when qty=1 without stock → next article (storage) or Completion. Wrong scan → negative_feedback. OPTION: Confirm article → Quantity Confirm; Shortage → Short Pick (Numpad); PAGE 2: Art. skipped / Order skipped
Quantity Confirm: Button "X / Y TAKEN" or keep scanning. got_all / scan complete: depending on index and stock → Storage, Inventory or Completion. onDoubleTrigger: short pick (confirm quantity). OPTION: Art. skipped, Order skipped, Shortage → Options Short Pick Step.
Inventory: "Qty after pick" (stock − scanned). YES → update stock, then Storage or Completion. NO → Inventory Count (-1/+1, ENTER). OPTION: Skip inventory → Completion/Storage.
Inventory Count: Adjust stock manually, ENTER → Storage or Completion. OPTION: Skip inv. → Completion/Storage.
Short Pick (Options Short Pick Step): Enter numpad quantity, ENTER → Storage or Completion (empty → negative_feedback).
Completion: Save or onTrigger → job.done, openJobs-- → Load Step.
Options (OPTION): From each step: BACK to previous step; per step: No picking box, Confirm article, Shortage, Art. skipped, Order skipped, Skip inv., Skip inventory.

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-storage Validate scanned storage location barcode
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
16 Count Step
POST report-short-pick Report partial pick / shortage quantity

Technical Reference — CSV Picking Storage Scan LT

Picking by storage scan with optional LightTag. 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
storage / storage_scanLocation label and barcode
article_number / article_nameArticle
required_quantityTarget quantity
stockOn-hand qty (empty = skip inventory)
scannedArticles / checkProgress / completion
lineIdERP line reference

4 · Request / response examples

get-job post processing
return { name: response.data.orderNumber, results: [...] };
confirm-pick-line
PATCH /picking/lines/{lineId}
{ "pickedQuantity": 3, "locationBarcode": "LT-12-0-2" }

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