feat(promote-customer-spec): Phase A — recipe + spec foundation
- Add fp.recipe.thickness model (replaces fp.coating.thickness, scoped to recipe root)
- Add spec metadata + bake-relief fields to fusion.plating.process.node (recipe root):
phosphorus_level, thickness_min/max/uom, thickness_option_ids,
requires_bake_relief + bake_window_hours/temperature/duration
- Add recipe_ids M2M + print_on_cert to fusion.plating.customer.spec
- Add applicable_spec_ids reverse M2M as inherit in fusion_plating_quality
(avoids circular dep — core can't reference customer.spec which lives in quality)
- Surface new fields on recipe form ("Specification & Bake" notebook page)
- Surface recipe linkage on customer spec form
Pure additive. Foundation for Phases B-E.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -226,6 +226,44 @@
|
||||
<page string="Notes" name="notes">
|
||||
<field name="notes" placeholder="Internal notes..."/>
|
||||
</page>
|
||||
<page string="Specification & Bake"
|
||||
name="spec_metadata"
|
||||
invisible="node_type != 'recipe' or parent_id">
|
||||
<group>
|
||||
<group string="Spec Metadata">
|
||||
<field name="phosphorus_level"/>
|
||||
<field name="thickness_min"/>
|
||||
<field name="thickness_max"/>
|
||||
<field name="thickness_uom"/>
|
||||
</group>
|
||||
<group string="Bake Relief (AMS 2759/9)">
|
||||
<field name="requires_bake_relief"/>
|
||||
<field name="bake_window_hours"
|
||||
invisible="not requires_bake_relief"/>
|
||||
<field name="bake_temperature"
|
||||
invisible="not requires_bake_relief"/>
|
||||
<field name="bake_temperature_uom"
|
||||
invisible="not requires_bake_relief"/>
|
||||
<field name="bake_duration_hours"
|
||||
invisible="not requires_bake_relief"/>
|
||||
</group>
|
||||
</group>
|
||||
<group string="Thickness Options">
|
||||
<field name="thickness_option_ids" nolabel="1">
|
||||
<list editable="bottom">
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="value"/>
|
||||
<field name="uom"/>
|
||||
<field name="label" readonly="1"/>
|
||||
<field name="note" optional="hide"/>
|
||||
<field name="active" optional="hide"/>
|
||||
</list>
|
||||
</field>
|
||||
</group>
|
||||
<!-- Applicable Specifications group is added
|
||||
by fusion_plating_quality via an inherit
|
||||
view (the field lives there too). -->
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<chatter/>
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright 2026 Nexa Systems Inc.
|
||||
License OPL-1 (Odoo Proprietary License v1.0)
|
||||
Part of the Fusion Plating product family.
|
||||
-->
|
||||
<odoo>
|
||||
|
||||
<record id="view_fp_recipe_thickness_list" model="ir.ui.view">
|
||||
<field name="name">fp.recipe.thickness.list</field>
|
||||
<field name="model">fp.recipe.thickness</field>
|
||||
<field name="arch" type="xml">
|
||||
<list string="Thickness Options" decoration-muted="not active" editable="bottom">
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="recipe_id"/>
|
||||
<field name="value"/>
|
||||
<field name="uom"/>
|
||||
<field name="label" string="Display"/>
|
||||
<field name="note" optional="hide"/>
|
||||
<field name="active" optional="hide"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user