Sorting Parcel Inbound

Sorting Parcel Inbound with LightTag navigation. Device pxx=200, pxy=200. Main flow: Start → Package Step (scan parcel) ↔ Placing Step (Pallet/Quantity/Article, Confirmed/Skip, LightTag). Options: New Pallet (numpad), New Container, Clear allocation, Pallet Info. onStopJobCode: finalizeJobData, done(true).

Main flow
Start Step
OPTION
START
onAppear: If workflow.job → Package Step. OPTION → Options Start Step. START → Package Step.
Package Step
OPTION
Scan parcel
Scan (barcode > 4 chars): create entry (parcel_article, palette from reusable or max+1), scanLog, → Placing Step. Short barcode → negative_feedback. OPTION → Options Package Step.
Placing Step
OPTION
Pallet
1
Quantity
0
Article
2545465
Confirmed
Skip
onAppear: LightTag current_palette (worker color, TRIPLE). Confirmed / DoubleTrigger / scan pallet barcode: entry.palette_quantity=1, check, scanLog → Package Step. Skip: remove entry → Package Step. Wrong scan → negative_feedback. onDisappear: disableLightTag. OPTION → Options Placing Step.
(Return from Placing: Package Step; then scan again → Placing)
Completion path (Check Done / Completion)
Check Done Step
OPTION
START
onAppear: all result.check set → Completion Step; else → Package Step. (No targetStep points to Check Done Step in the workflow.)
Completion Step
OPTION
Sortinglist complete
Please save
SAVE
SAVE: finalizeJobData(), api.workflow.done().
Options menus (via OPTION button)
Options Start Step
BACK
No OPTION available
BACK
back / back1 → Start Step
Options Package Step
BACK
New Pallet
New Container
Clear allocation
Pallet Info
back → Package Step. New Pallet → Count Step Package Step. New Container → Options Package Step 2. Clear allocation → Clear Allocation Step. Pallet Info → Pallet Info Step.
Options Placing Step
BACK
New Pallet
New Container
Clear allocation
back → Placing Step. New Pallet → Count Step Placing Step. New Container → Options Placing Step 2. Clear allocation → Clear Allocation Step.
Branch: New Container (confirmation)
Options Package Step 2
Are you sure? New Container?
No
Yes
No → Package Step. Yes → finalizeJobData(), new Job, api.workflow.done(true, newJob).
Options Placing Step 2
Are you sure? New Container?
No
Yes
No → Placing Step. Yes → finalizeJobData(), new Job, done(true, newJob) → Package Step.
Branch: Clear allocation
Clear Allocation Step
BACK
Clear allocation
Scan the Lighttag for allocation
Scan LightTag = pallet no.: entries to clearedAllocations, pallet in reusablePalettes, results filtered → Package Step. Invalid scan → negative_feedback. BACK → Package Step.
Branch: Pallet Info
Pallet Info Step
OPTION
Scan pallet for Info
Scan Pallet: load entries (current_palette, current_parcel_article, quantity) → Pallet Info 2 Step. No match → negative_feedback. OPTION → Options Pallet Info.
Pallet Info 2 Step
SKU
000002286902
Quantity
58
Done
Done → Package Step. Another pallet scan → Pallet Info 2 Step (show other pallet).
Options Pallet Info
BACK
Back to Process
back → Pallet Info Step. back_process → Package Step.
Branch: New Pallet (Numpad)
Count Step Package Step
Del
7
8
9
4
5
6
1
2
3
0
OK
0–9: set selected_palette. OK: palette_quantity=0 for all entries of this pallet → Package Step. Del: selected_palette null. onDoubleTrigger → Package Step.
Count Step Placing Step
Del
7
8
9
4
5
6
1
2
3
0
OK
Same numpad logic: OK → Placing Step (palette_quantity=0 for selected pallet). onDoubleTrigger → Placing Step.
Flow overview
Start Step: With workflow.job automatically → Package Step; else START button. OPTION → Options Start Step ("No OPTION available", BACK → Start).
Package Step: Scan parcel (barcode > 4 chars): new entry (parcel_article, palette from reusablePalettes or max+1, palette_quantity 0), scanLog "SCAN;timestamp;sku;palette", → Placing Step. Short barcode → negative_feedback. OPTION → Options Package Step (New Pallet, New Container, Clear allocation, Pallet Info).
Placing Step: Shows pallet no., quantity (sum for this pallet), article (SKU). onAppear: LightTag for current_palette (worker.additionalData, TRIPLE). "Confirmed" button or onDoubleTrigger or scan pallet LightTag barcode: entry.palette_quantity=1, entry.check, scanLog entry → Package Step. Skip: remove entry from results → Package Step. Wrong scan → negative_feedback. onDisappear: disableLightTag(current_lighttag). OPTION → Options Placing Step (New Pallet, New Container, Clear allocation).
Check Done Step / Completion Step: Present in definition; Check Done onAppear checks whether all result.check set → Completion Step, else → Package Step. No other step links to Check Done. Completion Step: SAVE → finalizeJobData(), api.workflow.done().
New Container (Options Package Step 2 / Options Placing Step 2): "Are you sure?" No → back (Package/Placing). Yes → finalizeJobData(), new job created, api.workflow.done(true, newJob) (current job completed, new open job).
Clear Allocation Step: Scan LightTag (pallet no.): all results with this pallet → clearedAllocations (with clearedAt), removed from results, pallet in reusablePalettes. Next scan can assign this pallet again. BACK → Package Step.
Pallet Info: Scan Pallet → Pallet Info 2 Step (SKU, quantity per entry). Done → Package Step. Options Pallet Info: Back to Process → Package Step, BACK → Pallet Info Step.
New Pallet (Count Step Package/Placing): Numpad selects selected_palette (digits 0–9). OK sets palette_quantity=0 for all entries of this pallet (Package: → Package Step; Placing: → Placing Step). Del clears display. onDoubleTrigger → back to previous step.
onStopJobCode: finalizeJobData(), api.workflow.done(true). finalizeJobData writes summary lines (SUMMARY;sku;palette;qty, PALETTE_SUMMARY) to scanLog/results.
Data: job.results[]: parcel_article, palette, palette_quantity, time, check. job.scanLog: SCAN;timestamp;sku;palette, SUMMARY, PALETTE_SUMMARY. job.clearedAllocations on Clear allocation. workflow.reusablePalettes for pallet reuse.

Device pxx=200, pxy=200. PoVTemplates/Sorting Parcel Inbound.json