Files
Odoo-Modules/fusion-plating/fusion_plating/README.md
gsinghpal be611876ad changes
2026-04-12 09:09:50 -04:00

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).