Adds the receiver workflow to the Job Workspace tablet view (was the gap behind WO-30057 sitting in Receiving with no way to advance). Receivers no longer need to go to the backend form. Workspace card (renders above the step list when fp.receiving in state draft/counted on the linked SO): - Draft state: numeric box-count input + per-line received_qty / condition picker (good/damaged/mixed) + Damage Log panel + Mark Counted button. Autosaves on input blur. - Counted state: read-only summary (boxes, parts, who/when) + Damage Log still editable + Close Receiving button. - Closed: card disappears, recipe takes over. New FpDamageDialog OWL modal: - Severity pill picker (Cosmetic / Functional / Rejected) with color-coded active state - Required description textarea - Action Required pill picker (None / Notify / Return / As-Is) - Photo capture: both "Take Photo" (input capture="environment" triggers tablet camera) AND "Upload" (file picker fallback). Multi-photo with preview grid + per-photo remove. 5 new endpoints on workspace_controller.py: - receiving_save_lines (autosave box_count_in + per-line qty/cond) - receiving_mark_counted (wraps action_mark_counted) - receiving_close (wraps action_close) - damage_create (creates fp.receiving.damage + attaches base64 photos) - damage_delete (removes a damage row) No model changes — wraps existing fp.receiving actions and damage CRUD. C3 (outbound shipping carrier/label) is a separate spec. Spec: in-conversation brainstorm (C1+C2) following the 2026-05-24 workspace step actions spec; no standalone doc since scope is small. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Fusion Plating — Shop Floor
Tablet / operator ergonomics layer for the fusion_plating core.
Part of the Fusion Plating product family by Nexa Systems Inc. Copyright (c) 2026 Nexa Systems Inc. All rights reserved. Licensed under OPL-1 (Odoo Proprietary License v1.0).
What this module adds
| Feature | Model |
|---|---|
| Tablet station registration | fusion.plating.shopfloor.station |
| Bake oven master + chart recorder ref | fusion.plating.bake.oven |
| Hydrogen embrittlement bake-window enforcer | fusion.plating.bake.window |
| First-piece inspection gate | fusion.plating.first.piece.gate |
| Operator next-up queue (transient) | fusion.plating.operator.queue |
Bake-window enforcer
When a high-strength-steel part exits the plating tank, a clock starts. Customer specification dictates the window (typically 1-4 hours) inside which the relief bake must begin. Missing the window requires scrap or rework — there is no retroactive fix.
The module models this as a first-class entity with:
plate_exit_time— clock startwindow_hours— customer specbake_required_by— computed deadlinestate—awaiting_bake -> bake_in_progress -> baked, withmissed_window/scrappedexit paths- A 5-minute cron that flips records past their deadline to
missed_windowautomatically - A kanban board grouped by state with theme-aware status colours
Tablet client
A backend OWL component (Odoo 19 conventions) registered as the
fp_shopfloor_tablet client action. It hosts:
- QR scan input (wedge scanner or on-screen keyboard friendly)
- Live tank / bath / job preview cards
- One-tap Start Bake / End Bake buttons
- Live operator next-up queue
JSON-RPC endpoints (Odoo 19 type='jsonrpc'):
POST /fp/shopfloor/scanPOST /fp/shopfloor/log_chemistryPOST /fp/shopfloor/start_bakePOST /fp/shopfloor/end_bakePOST /fp/shopfloor/queue
QR code conventions
| Prefix | Resolves to |
|---|---|
FP-TANK:<code> |
fusion.plating.tank |
FP-BATH:<name> |
fusion.plating.bath |
FP-STATION:<code> |
fusion.plating.shopfloor.station |
FP-JOB:<name> |
fusion.plating.bake.window |
FP-OVEN:<code> |
fusion.plating.bake.oven |
Security
Reuses the four core Fusion Plating groups (operator, supervisor, manager,
admin) defined in fusion_plating. No new groups, no new privilege block.
ACLs are graded operator (read/write logs), supervisor (create), manager
(full).
Theme
All styling is theme-aware: CSS custom properties + color-mix() against
Bootstrap / Odoo tokens. No hex codes, no media queries — works in light
and dark mode out of the box.
Install / update
docker exec odoo-dev-app odoo -d fusion-dev -u fusion_plating_shopfloor --stop-after-init