Files
Odoo-Modules/fusion_plating/fusion_plating_shopfloor
gsinghpal eed1c4619d feat(workspace): pre-recipe receiving card with box count + damage log
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>
2026-05-24 19:08:30 -04:00
..
2026-04-16 20:53:53 -04:00
2026-04-16 20:53:53 -04:00

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 start
  • window_hours — customer spec
  • bake_required_by — computed deadline
  • stateawaiting_bake -> bake_in_progress -> baked, with missed_window / scrapped exit paths
  • A 5-minute cron that flips records past their deadline to missed_window automatically
  • 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/scan
  • POST /fp/shopfloor/log_chemistry
  • POST /fp/shopfloor/start_bake
  • POST /fp/shopfloor/end_bake
  • POST /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