CSV Picking Storage Article Scan Workflow

Layout 1:1 from NimmstaLayout-XML (device pxx=200, pxy=200) · Load (get-job) → Picking Box Scan → Storage Pre (scan storage) → Storage (scan article) → Quantity Confirm / Inventory (optional) → Completion. LightTag optional 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 picking box
Scan → set pbox on results → Storage Pre Step · OPTION → Options Picking Box Step
Storage Pre Step
OPTION
Please SCAN storage
04.08.01.01
Scan storage: correct → Storage Step · wrong → negative, stay · LightTag onAppear/onDisappear · OPTION → Options Storage Pre Step
Storage Step
OPTION
Quantity
7
Article info: SCAN to confirm
Article name
Scan article: qty>1 → Quantity Confirm · qty=1+stock → Inventory · qty=1 no stock → next Storage Pre or Completion · wrong → negative · LightTag on · OPTION → Options Storage Step1
Quantity Confirm Step
OPTION
3 / 7 ALL TAKEN
Article info: SCAN to confirm
Article name
got_all / Scan: last → Completion/Inventory · more → Storage Pre · onDoubleTrigger: short pick · LightTag on · OPTION → Options Quantity Confirm Step
Inventory Step
OPTION
Stock after picking
5 pcs
YES
NO
YES → Storage Pre or Completion · NO → Inventory Count Step · OPTION → Options Inventory Step
Inventory Count Step
OPTION
5 pcs
-1
+1
CHECK
-1/+1 → stay · CHECK → Storage Pre or Completion · OPTION → Options Inventory Count Step
Completion Step
OPTION
Order 123
Please save
SAVE
SAVE / onTrigger → api.workflow.done()
Branch: NoOpenOrders (load fails or no results)
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 Pickingbox
BACK → Picking Box · Skip Pickingbox → Storage Pre Step
Options Storage Pre Step
BACK
Confirm storage
Last Article
PAGE 1
PAGE 2
Confirm storage → Storage Step · Last Article → Options Storage last item · PAGE 2 → Step2 · BACK → Storage Pre Step
Options Storage Step1
BACK
Confirm article
Short Pick
PAGE 1
PAGE 2
Confirm article → Quantity Confirm · Short Pick → Options Short Pick Step · PAGE 2 → Step2 · BACK → Storage Step
Options Storage Step2
BACK
Skip article
Skip job
PAGE 1
PAGE 2
Skip article → Storage Pre or Completion · Skip job → Completion · PAGE 1 → Step1 · BACK → Storage Step
Options Storage last item
BACK
LAST PICKED ITEM
04.08.01.01
7 / 7
Article name
BACK → Options Storage Step2
Options Picking Step
BACK
Skip article
Skip job
Skip article → Storage Pre or Completion · Skip job → Completion · BACK → Picking Step
Options Quantity Confirm Step
BACK
Skip article
Skip job
Short pick
Skip article / Skip job → Storage Pre or Completion · Short pick → Options Short Pick Step · BACK → Quantity Confirm Step
Options Inventory Count Step
BACK
Skip inventory
Skip inventory → Completion or Storage Pre · BACK → Inventory Count Step
Options Inventory Step
BACK
Skip inventory
Skip inventory → Completion or Storage Pre · 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 Pre or Completion
Flow overview
Start: Load Step (get-job) → with results Picking Box Step, else NoOpenOrders.
Picking Box: Scan container → set pbox on all results → Storage Pre Step. OPTION: Skip Pickingbox → Storage Pre without box.
Storage Pre: Display storage. Scan storage: correct → Storage Step; wrong → negative_feedback, stay. LightTag onAppear/onDisappear (if lightTagEnabled). OPTION: Confirm storage → Storage Step; Last Article → Options Storage last item; PAGE 2 → Options Storage Step2.
Storage Step: Display quantity, article. Scan article: required_quantity>1 → Quantity Confirm (scannedArticles++); qty=1 with stock → Inventory Step; qty=1 no stock → next Storage Pre or Completion. Wrong scan → negative_feedback. LightTag on. OPTION: Confirm article → Quantity Confirm; Short Pick → Options Short Pick Step; PAGE 2: Skip article / Skip job.
Quantity Confirm: Button "X / Y ALL TAKEN" or keep scanning. got_all / scan complete: → Storage Pre, Inventory or Completion. onDoubleTrigger: short pick. LightTag on. OPTION: Skip article, Skip job, Short pick → Options Short Pick Step.
Inventory: "Stock after picking" (stock − scanned). YES → update stock, then Storage Pre or Completion. NO → Inventory Count Step. OPTION: Skip inventory → Completion/Storage Pre.
Inventory Count: -1/+1 adjust stock, CHECK → Storage Pre or Completion. OPTION: Skip inventory → Completion/Storage Pre.
Short Pick (Options Short Pick Step): Numpad quantity, ENTER → Storage Pre or Completion (empty → negative_feedback).
Completion: SAVE or onTrigger → api.workflow.done().
Options (OPTION): From each step: BACK to previous; per step: Skip Pickingbox, Confirm storage, Last Article, Confirm article, Short Pick, Skip article, Skip job, Skip inventory. DE/EN via translationKeys.

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 Pre Step
GET get-pick-line Load current line: storage, quantity, article, stock
GET validate-storage Validate scanned storage location barcode
4 Storage Step
GET get-pick-line Load current line: storage, quantity, article, stock
GET validate-article Validate scanned article barcode matches current line
5 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
6 Inventory Step
GET get-pick-line Load current line: storage, quantity, article, stock
7 Inventory Count Step
GET get-pick-line Load current line: storage, quantity, article, stock
PATCH update-stock-count Submit corrected stock count after inventory
8 Completion Step
POST complete-job Close picking job and send results to ERP

Branches

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 Pre Step
POST confirm-without-scan Confirm article without barcode scan
12 Options Storage Step1
POST confirm-without-scan Confirm article without barcode scan
13 Options Storage Step2
POST skip-article Skip current article, move to next line
POST skip-order Skip entire order in multi-order job
14 Options Picking Step
POST skip-article Skip current article, move to next line
POST skip-order Skip entire order in multi-order job
15 Options Quantity Confirm Step
POST skip-article Skip current article, move to next line
POST skip-order Skip entire order in multi-order job
16 Options Short Pick Step
POST report-short-pick Report partial pick / shortage quantity

Technical Reference — CSV Picking Storage Article Scan

Picking with storage and article scan. 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_scanStorage location
article_numberExpected article
required_quantity / stockQuantity / stock
scannedArticles / checkProgress
lineIdLine ID for feedback

4 · Request / response examples

validate-article
GET /articles/lookup?barcode=…&lineId=501
→ { "articleNumber": "ART-1001", "matchesLine": true }

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