SP
JEIMPE· Main Shop
TF
Dashboard
Customer Management
Shop Management
Catalog
Purchasing
Reports
Settings
Purchasing/Returns & Refunds

Returns & Refunds

SPD-590 · Phase 0 fix + the new Mark for Return / Return two-button model on a work order

Viewing as
Behaviour
You have Return management — you can use both Mark for Return and Return.
WO-1042 · Parts
PartVendorOrdRcvdRet reqReturn status
Brake rotor (front)
BR-55120
ManualNAPA
2.002.000.00
Turbo actuator
TA-9920· Defective on arrival
APIWorldpac (Turn 14)
1.001.001.00
Cabin air filter
CF-3301
APIPartsTech · WORLDPAC
4.000.000.00
OEM coolant 1gal
SYS-COOL
SystemSystem price
3.003.000.00
Custom bracket (one-off)
Single-useSingle-use
1.001.000.00
Strut assembly
ST-4410· set via status picker
ManualNAPA
2.002.000.00
Two buttons, one decision
Mark for Return = quick flag (qty + optional reason + optional note), available to anyone. Return = one-shot (qty + RMA + return type + restocking + reason/note), gated on the new Return management permission. If a return was marked first, the Return modal pre-fills its reason and note.
The bug — Hole #1 = SPD-1876
getPartActions() line 1033 checks return_requested_qty === 0. Decimal:2 cast → “0.00” === 0 is always false. Five (float) casts is the Phase 0 fix. Independent of the Mark/Return change but a hard prerequisite for it.
Reasons come from Settings → Dictionaries
Reason is an optional dropdown sourced from a tenant-configurable dictionary (shop adds/removes their own). Free-text note rides alongside. Both fields persist on the return record and surface in the Returns manager — see View 3.
Status picker is a third entry point
SPD-596 applyPartWorkflowState still writes Return Requested directly from the status picker, bypassing both Mark and Return — no qty, no reason, no note. The Strut row shows this. Deferred to the Hole #4 refactor.
← Prototype hub