122 lines
5.6 KiB
Markdown
122 lines
5.6 KiB
Markdown
# Fusion Plating
|
|
|
|
**Core module of the Fusion Plating product family.**
|
|
A configurable, multi-tenant capable ERP for plating and metal-finishing shops,
|
|
built for Odoo 19 Community **and** Enterprise.
|
|
|
|
Copyright © 2026 Nexa Systems Inc.
|
|
License: OPL-1 (Odoo Proprietary License v1.0)
|
|
|
|
---
|
|
|
|
## What this module is
|
|
|
|
`fusion_plating` is the **process-agnostic foundation** that every plating or
|
|
metal-finishing shop needs, regardless of size, jurisdiction, process mix, or
|
|
industry. It provides:
|
|
|
|
- **Facility** — physical sites with their own tanks, operators, capabilities
|
|
- **Process Type** — extensible taxonomy (filled in by process packs)
|
|
- **Work Center** — lines and stations inside a facility
|
|
- **Tank** — physical vessel with QR code, state, bath history
|
|
- **Bath** — the chemistry currently in a tank, with its own lifecycle
|
|
- **Bath Parameter** — schema for chemistry readings
|
|
- **Bath Log** — daily/per-shift chemistry readings with pass/warn/fail rollup
|
|
- **Security** — Operator / Supervisor / Manager / Administrator roles
|
|
- **Theme-aware UI** — respects Odoo light/dark mode with zero duplication
|
|
|
|
## What this module is **not**
|
|
|
|
This core intentionally ships with:
|
|
|
|
- **No process chemistry** — install `fusion_plating_process_en`, `_chrome`,
|
|
`_anodize`, `_black_oxide` etc. to get actual process types and their
|
|
bath parameter schemas.
|
|
- **No regulatory data** — install `fusion_plating_compliance_<region>` to
|
|
get jurisdiction-specific limits, forms, and reporting workflows.
|
|
- **No industry specialisations** — install `fusion_plating_aerospace`,
|
|
`_nuclear`, `_cgp` etc. for industry-specific QMS overlays.
|
|
- **No client-specific strings** — everything is data-driven.
|
|
|
|
## Product family
|
|
|
|
| Module | Purpose | Status |
|
|
| --- | --- | --- |
|
|
| `fusion_plating` | Core (this module) | **MVP** |
|
|
| `fusion_plating_quality` | QMS: NCR, CAPA, doc control, calibration, CoC | planned |
|
|
| `fusion_plating_compliance` | Generic compliance framework | planned |
|
|
| `fusion_plating_compliance_on` | Ontario regulatory pack | planned |
|
|
| `fusion_plating_compliance_tor` | Toronto Ch. 681 municipal pack | planned |
|
|
| `fusion_plating_safety` | SDS, WHMIS/TDG, JHSC, exposure | planned |
|
|
| `fusion_plating_shopfloor` | Tablet operator stations, QR scanning, bake-window enforcer | planned |
|
|
| `fusion_plating_portal` | Customer portal | planned |
|
|
| `fusion_plating_process_en` | Electroless nickel — low/mid/high phos | planned |
|
|
| `fusion_plating_process_chrome` | Chrome coating (hex & trivalent) | planned |
|
|
| `fusion_plating_process_anodize` | Aluminum anodizing (Type II, III) | planned |
|
|
| `fusion_plating_process_black_oxide` | Black oxidizing | planned |
|
|
| `fusion_plating_aerospace` | AS9100 + Nadcap AC7108 | planned |
|
|
| `fusion_plating_nuclear` | CSA N299, CNSC, NQA-1 | planned |
|
|
| `fusion_plating_cgp` | Controlled Goods Program | planned |
|
|
| `fusion_plating_logistics` | Pickup & delivery routing | planned |
|
|
| `fusion_plating_culture` | Values / fundamentals framework | planned |
|
|
| `fusion_plating_bridge_sign` | EE bridge: e-sign CoC acceptance | planned |
|
|
| `fusion_plating_bridge_documents` | EE bridge: Documents workspace | planned |
|
|
| `fusion_plating_bridge_quality` | EE bridge: native `quality` module | planned |
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
# Development
|
|
docker exec odoo-dev-app odoo -d fusion-dev -u fusion_plating --stop-after-init
|
|
|
|
# Production — after rsync to target server
|
|
docker exec <odoo-container> odoo -d <db> -u fusion_plating --stop-after-init
|
|
```
|
|
|
|
No external Python dependencies. Depends only on standard Odoo 19 Community
|
|
base modules (`base`, `mail`, `contacts`, `product`, `stock`, `sale_management`,
|
|
`purchase`, `hr`, `uom`).
|
|
|
|
## Design principles
|
|
|
|
1. **Works on both Odoo Community and Enterprise.** Never depends on
|
|
`quality`, `documents`, `sign`, `studio`, or `mrp_plm`. EE-specific
|
|
integrations live in separate `fusion_plating_bridge_*` modules.
|
|
2. **No client-specific strings in core.** Configuration, not code.
|
|
3. **Regions are data, not code.** Sewer limits, waste classes, reporting
|
|
forms come from region packs.
|
|
4. **Processes are plug-ins.** New process (copper, zinc, tin) = new
|
|
`fusion_plating_process_*` module, core untouched.
|
|
5. **Dashboards are configured, not coded.** Shops pick their own headline KPIs.
|
|
6. **Theme-aware.** Uses Odoo/Bootstrap CSS variables. One source of truth
|
|
for colours; Odoo's theme engine decides light vs dark.
|
|
|
|
## Security groups
|
|
|
|
| Group | Intended for |
|
|
| --- | --- |
|
|
| **Operator** | Shop-floor staff. Reads reference data, writes chemistry logs. |
|
|
| **Supervisor** | Line supervisors. Manages baths, schedules jobs, reviews logs. |
|
|
| **Manager** | Quality, EHS, plant manager, engineer. Full CRUD on configuration. |
|
|
| **Administrator** | Owner, system admin. All manager rights + system settings. |
|
|
|
|
## Field naming convention
|
|
|
|
- New models use `fusion.plating.*` namespace.
|
|
- Fields on our own models use simple names (no prefix).
|
|
- Fields added to base Odoo models (`res.company`, `res.partner`,
|
|
`product.template`, etc.) use the `x_fc_` prefix per the repo convention.
|
|
|
|
## Developer notes
|
|
|
|
- All models inheriting from `mail.thread` use the Odoo 19 chatter pattern.
|
|
- Security follows the Odoo 19 `res.groups.privilege` pattern (module
|
|
category → privilege → groups), not the legacy `category_id`-on-group
|
|
pattern.
|
|
- Sequence numbers use `ir.sequence` seeded in `data/fp_sequence_data.xml`.
|
|
- SCSS uses `color-mix()` against CSS custom properties — never hardcodes
|
|
hex values. See `static/src/scss/fusion_plating.scss` for the theming
|
|
contract.
|
|
- No `group expand="0"` in search views (Odoo 19 incompatibility).
|
|
- No `category_id` or `users` field on `res.groups` (Odoo 19 incompatibility).
|