diff --git a/fusion-plating/fusion_plating_configurator/models/fp_coating_config.py b/fusion-plating/fusion_plating_configurator/models/fp_coating_config.py new file mode 100644 index 00000000..c7a29f88 --- /dev/null +++ b/fusion-plating/fusion_plating_configurator/models/fp_coating_config.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 Nexa Systems Inc. +# License OPL-1 (Odoo Proprietary License v1.0) +# Part of the Fusion Plating product family. + +from odoo import fields, models + + +class FpCoatingConfig(models.Model): + """Coating configuration template. + + Defines a specific coating setup: process type, phosphorus level, + thickness range, spec reference, and required pre/post treatments. + Used by the configurator to drive pricing and recipe selection. + """ + _name = 'fp.coating.config' + _description = 'Fusion Plating — Coating Configuration' + _order = 'sequence, name' + + name = fields.Char(string='Configuration', required=True, help='e.g. "EN Mid-Phos AMS 2404"') + process_type_id = fields.Many2one( + 'fusion.plating.process.type', string='Process Type', required=True, ondelete='restrict', + ) + recipe_id = fields.Many2one( + 'fusion.plating.process.node', string='Default Recipe', + domain="[('node_type', '=', 'recipe')]", + help='Default recipe template for this coating configuration.', + ) + phosphorus_level = fields.Selection( + [('low_phos', 'Low Phosphorus (2-5%)'), ('mid_phos', 'Mid Phosphorus (6-9%)'), + ('high_phos', 'High Phosphorus (10-13%)'), ('na', 'N/A')], + string='Phosphorus Level', default='na', help='EN-specific. Set to N/A for non-EN processes.', + ) + thickness_min = fields.Float(string='Min Thickness', digits=(10, 4)) + thickness_max = fields.Float(string='Max Thickness', digits=(10, 4)) + thickness_uom = fields.Selection( + [('mils', 'mils'), ('microns', 'microns'), ('inches', 'inches')], + string='Thickness UoM', default='mils', + ) + spec_reference = fields.Char(string='Spec Reference', help='e.g. "AMS 2404", "E499-303-00-005"') + certification_level = fields.Selection( + [('commercial', 'Commercial'), ('mil_spec', 'Mil-Spec'), + ('nadcap', 'Nadcap'), ('nuclear', 'Nuclear (CSA N299)')], + string='Certification Level', default='commercial', + ) + pre_treatment_ids = fields.Many2many( + 'fp.treatment', 'fp_coating_config_pre_treatment_rel', 'config_id', 'treatment_id', + string='Pre-Treatments', domain="[('treatment_type', '=', 'pre')]", + ) + post_treatment_ids = fields.Many2many( + 'fp.treatment', 'fp_coating_config_post_treatment_rel', 'config_id', 'treatment_id', + string='Post-Treatments', domain="[('treatment_type', '=', 'post')]", + ) + sequence = fields.Integer(string='Sequence', default=10) + description = fields.Text(string='Description') + active = fields.Boolean(string='Active', default=True) diff --git a/fusion-plating/fusion_plating_configurator/views/fp_coating_config_views.xml b/fusion-plating/fusion_plating_configurator/views/fp_coating_config_views.xml index 85d8c23e..83b44714 100644 --- a/fusion-plating/fusion_plating_configurator/views/fp_coating_config_views.xml +++ b/fusion-plating/fusion_plating_configurator/views/fp_coating_config_views.xml @@ -1,2 +1,123 @@ - + + + + + + fp.coating.config.list + fp.coating.config + + + + + + + + + + + + + + + + + + fp.coating.config.form + fp.coating.config + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + + + fp.coating.config.search + fp.coating.config + + + + + + + + + + + + + + + + + + + + + + + + + + + Coating Configurations + fp.coating.config + list,form + + +

+ No coating configurations defined yet +

+

+ Define coating setups with process type, phosphorus level, + thickness range, spec reference, and required treatments. +

+
+
+ +