Inventory Workflow

Layout 1:1 from NimmstaLayout-XML (device pxx=200, pxy=200) · Inventory: storage location → article → quantity → check → optional SN

Main flow
REST API endpoints are documented step by step below the diagram — not on the device mockups.
Load Step (Initial)
Loading Data
onAppear → Storage Step
Storage Step
OPTION
Scan storage
Scan → Article Step · OPTION → Options Storage
Article Step
OPTION
04.08.01.01
Scan Article
Scan → Count Step · OPTION → Options Article
Count Step
42 pcs
Del
7
8
9
4
5
6
1
2
3
0
OK
Digits/Del → stay · OK → Check Step
Check Step
OPTION
04.08.01.01
ART-12345
42 pcs
RIGHT
SN
WRONG
RIGHT → Storage (next) · WRONG → Storage (retry) · SN → Serialnumber
Serialnumber Step
OPTION
2 / 5
Scan Sn. Number
Scan SN (duplicate → negative feedback) · last SN → Storage
Completion Step
Inventory completed
Continue
Continue → Storage Step (more inventory)
Options menus (accessible via OPTION, all with „Inv. done“ → Completion)
Options Storage Step
BACK
Inv. done
BACK → Storage · Inv. done → Completion
Options Article Step
BACK
Inv. done
BACK → Article · Inv. done → Completion
Options Check Step
BACK
Inv. done
BACK → Check · Inv. done → Completion
Options Serialnumber Step
BACK
Inv. done
BACK → Serialnumber · Inv. done → Completion
Flow overview
Start: Load Step (onAppear) → Storage Step.
Main loop: Storage (scan storage location) → Article (scan article) → Count (digits + OK) → Check (RIGHT / WRONG / SN).
RIGHT: Entry confirmed → new entry appended → back to Storage Step.
WRONG: Discard storage/article/quantity → back to Storage Step (same index).
SN: Scan serial numbers (count = stock); duplicates → negative_feedback; last SN → same as RIGHT, then Storage.
Options (OPTION): In Storage, Article, Check, Serialnumber: BACK to previous step; „Inv. done“ sets check, increments index, goes to Completion Step.
Completion: „Continue“ → back to Storage Step (more inventory possible).

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-inventory-job Load inventory count job and lines
2 Storage Step
GET get-pick-line Load current line: storage, quantity, article, stock
GET validate-storage Validate scanned storage location barcode
3 Article Step
GET get-pick-line Load current line: storage, quantity, article, stock
GET validate-article Validate scanned article barcode matches current line
4 Check Step
GET get-pick-line Load current line: storage, quantity, article, stock
POST submit-count Submit counted quantity for current line
GET validate-serial Validate serial number for counted item
5 Serialnumber Step
GET get-pick-line Load current line: storage, quantity, article, stock
GET validate-serial Validate serial number for counted item
POST submit-count Submit counted quantity for current line
6 Completion Step
POST complete-inventory Close inventory section and finish job

Technical Reference — Inventory

Storage → article → quantity → optional serial numbers. 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
storageScanned storage location
articleArticle number / EAN
stockCounted quantity
snSerial number(s)
checkTimestamp when line is completed
lineIdOptional ERP reference for submit-count

4 · Request / response examples

submit-count
POST /inventory/counts
{ "lineId": "9001", "location": "12.0.1", "article": "4711", "quantity": 15, "serials": ["SN001"] }
complete-inventory
POST /inventory/sections/42/close
→ await api.workflow.done();

Coordinates 1:1 from NimmstaLayout (device pxx=200, pxy=200). Inventory workflow (PoVTemplates/Inventory.json).