Files
Odoo-Modules/fusion_plating/fusion_plating_shopfloor
gsinghpal 1b473a7873 fix(tablet_pin_reset): manifest data slot + drop notif wrapper (deploy fixes)
Two bugs caught by entech battle test on first deploy:

1. Manifest entry landed in the 'demo' list instead of 'data' because
   my anchor (fp_demo_shopfloor_data.xml) was already in 'demo' —
   the entry pattern-matched into the wrong section. Demo data
   doesn't load on entech (no --load demo), so the mail.template
   never existed. Moved fp_tablet_pin_reset_template.xml to 'data'.

2. The fp.notification.template wrapper record referenced a model
   that doesn't exist until fusion_plating_notifications loads;
   fusion_plating_shopfloor doesn't depend on notifications, so
   the data load ParseError'd. Removed the wrapper — the controller
   calls mail_template.send_mail() directly anyway, not via the
   notification dispatcher. Added an inline comment explaining why
   the wrapper isn't here.

Battle test updated to drop the (now removed) wrapper xmlid check.
Battle test ALL PASS on entech after fixes.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-25 17:02:18 -04:00
..
2026-05-25 08:17:29 -04:00
2026-05-25 08:17:29 -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