Files
Odoo-Modules/fusion_plating/fusion_plating/data/fp_recipe_chem_conversion.xml
gsinghpal a68bf2eae7 fix(recipes): noupdate=1 on 5 seeded recipes — STOP wiping user edits
CRITICAL BUG: 5 of 6 seeded recipe files had <data noupdate="0">
which caused EVERY module upgrade to re-import the recipe and
overwrite any user customisations to the base recipe (renamed
steps, added child nodes, custom prompts on seeded steps).

Files fixed (now noupdate="1"):
- fp_recipe_enp_alum_basic.xml
- fp_recipe_enp_steel_basic.xml
- fp_recipe_enp_sp.xml
- fp_recipe_anodize.xml
- fp_recipe_chem_conversion.xml

(fp_recipe_general_processing.xml was already correctly noupdate=1.)

Companion entech-side action (not in this commit, executed via SQL
during the fix session): 200 ir.model.data rows for the affected
process_node + process_node_input records were updated to
noupdate=true so the next module upgrade will skip them entirely
and respect the user's current state.

Recovery for users whose base recipe edits were already lost:
the variants (part-cloned recipes that share the recipe name)
were untouched because they have no XML xmlid match. The
customisations are preserved in the variants and can be lifted
back to the base recipe via the simple/tree editor.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 08:20:04 -04:00

267 lines
13 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2026 Nexa Systems Inc.
License OPL-1 (Odoo Proprietary License v1.0)
Recipe: CHEM_CONVERSION (Chemical Conversion Process - Trivalent Chromate)
Source: Client's Steelhead export (April 2026 transcription).
Chemical conversion coating for aluminium (MIL-DTL-5541 Type II /
Trivalent chromate). Optional Nickel Strip lane handles stripping
re-work parts that had previous EN plating.
Tree:
CHEM_CONVERSION (recipe)
Racking (sub-process, auto)
Ready for Racking (operation)
Racking (operation, customer-visible)
Chemical Conversion (sub-process, auto)
Ready For Chemical Conversion (operation)
Drying (operation)
Soak Clean (A-1) (operation, customer-visible)
Rinse (A-2)
Etch (A-3) (operation, customer-visible)
Rinse (A-2)
Rinse (A-4)
Desmutter (A-5) (operation, customer-visible)
Rinse (A-4)
Rinse (A-6)
Trivalent Chromate Conversion (A-14 / A) (operation, signoff, customer-visible)
Rinse (A-15)
Plug The Threaded Holes (sub-process, signoff)
Nickel Strip - Aluminum Line (sub-process, signoff, auto)
Strip Process - AL (operation, auto)
Nitric Acid (A-13 / SP-10)
Final Rinse (A-14 / SP-11)
Drying (operation)
Post Stripping Inspection (operation, auto)
Ready for Post Stripping Inspection
Post Stripping Inspection (customer-visible)
-->
<odoo>
<data noupdate="1">
<!-- ========================= ROOT ========================= -->
<record id="recipe_chem_conversion" model="fusion.plating.process.node">
<field name="name">Chemical Conversion Process</field>
<field name="code">CHEM_CONVERSION</field>
<field name="node_type">recipe</field>
<field name="icon">fa-flask</field>
<field name="sequence">60</field>
<field name="auto_complete">True</field>
<field name="customer_visible">False</field>
</record>
<!-- ========================= 1. Racking ========================= -->
<record id="cc_racking" model="fusion.plating.process.node">
<field name="name">Racking</field>
<field name="node_type">sub_process</field>
<field name="parent_id" ref="recipe_chem_conversion"/>
<field name="icon">fa-th</field>
<field name="sequence">10</field>
<field name="auto_complete">True</field>
</record>
<record id="cc_racking_ready" model="fusion.plating.process.node">
<field name="name">Ready for Racking</field>
<field name="node_type">operation</field>
<field name="parent_id" ref="cc_racking"/>
<field name="icon">fa-clock-o</field>
<field name="sequence">10</field>
</record>
<record id="cc_racking_do" model="fusion.plating.process.node">
<field name="name">Racking</field>
<field name="node_type">operation</field>
<field name="parent_id" ref="cc_racking"/>
<field name="icon">fa-th</field>
<field name="sequence">20</field>
<field name="customer_visible">True</field>
</record>
<!-- ========================= 2. Chemical Conversion (sub-process) ========================= -->
<record id="cc_chem_conversion" model="fusion.plating.process.node">
<field name="name">Chemical Conversion</field>
<field name="node_type">sub_process</field>
<field name="parent_id" ref="recipe_chem_conversion"/>
<field name="icon">fa-industry</field>
<field name="sequence">20</field>
<field name="auto_complete">True</field>
</record>
<record id="cc_chem_ready" model="fusion.plating.process.node">
<field name="name">Ready For Chemical Conversion</field>
<field name="node_type">operation</field>
<field name="parent_id" ref="cc_chem_conversion"/>
<field name="icon">fa-clock-o</field>
<field name="sequence">10</field>
</record>
<record id="cc_chem_drying" model="fusion.plating.process.node">
<field name="name">Drying</field>
<field name="node_type">operation</field>
<field name="parent_id" ref="cc_chem_conversion"/>
<field name="icon">fa-sun-o</field>
<field name="sequence">20</field>
</record>
<!-- 2a. Soak Clean (A-1) -->
<record id="cc_soak_clean" model="fusion.plating.process.node">
<field name="name">Soak Clean (A-1)</field>
<field name="node_type">operation</field>
<field name="parent_id" ref="cc_chem_conversion"/>
<field name="icon">fa-shower</field>
<field name="sequence">30</field>
<field name="customer_visible">True</field>
</record>
<record id="cc_soak_rinse" model="fusion.plating.process.node">
<field name="name">Rinse (A-2)</field>
<field name="node_type">step</field>
<field name="parent_id" ref="cc_soak_clean"/>
<field name="icon">fa-tint</field>
<field name="sequence">10</field>
</record>
<!-- 2b. Etch (A-3) -->
<record id="cc_etch" model="fusion.plating.process.node">
<field name="name">Etch (A-3)</field>
<field name="node_type">operation</field>
<field name="parent_id" ref="cc_chem_conversion"/>
<field name="icon">fa-flask</field>
<field name="sequence">40</field>
<field name="customer_visible">True</field>
</record>
<record id="cc_etch_rinse1" model="fusion.plating.process.node">
<field name="name">Rinse (A-2)</field>
<field name="node_type">step</field>
<field name="parent_id" ref="cc_etch"/>
<field name="icon">fa-tint</field>
<field name="sequence">10</field>
</record>
<record id="cc_etch_rinse2" model="fusion.plating.process.node">
<field name="name">Rinse (A-4)</field>
<field name="node_type">step</field>
<field name="parent_id" ref="cc_etch"/>
<field name="icon">fa-tint</field>
<field name="sequence">20</field>
</record>
<!-- 2c. Desmutter (A-5) -->
<record id="cc_desmutter" model="fusion.plating.process.node">
<field name="name">Desmutter (A-5)</field>
<field name="node_type">operation</field>
<field name="parent_id" ref="cc_chem_conversion"/>
<field name="icon">fa-flask</field>
<field name="sequence">50</field>
<field name="customer_visible">True</field>
</record>
<record id="cc_desmutter_rinse1" model="fusion.plating.process.node">
<field name="name">Rinse (A-4)</field>
<field name="node_type">step</field>
<field name="parent_id" ref="cc_desmutter"/>
<field name="icon">fa-tint</field>
<field name="sequence">10</field>
</record>
<record id="cc_desmutter_rinse2" model="fusion.plating.process.node">
<field name="name">Rinse (A-6)</field>
<field name="node_type">step</field>
<field name="parent_id" ref="cc_desmutter"/>
<field name="icon">fa-tint</field>
<field name="sequence">20</field>
</record>
<!-- 2d. Trivalent Chromate Conversion (A-14 / A) -->
<record id="cc_trivalent" model="fusion.plating.process.node">
<field name="name">Trivalent Chromate Conversion (A-14 / A)</field>
<field name="node_type">operation</field>
<field name="parent_id" ref="cc_chem_conversion"/>
<field name="icon">fa-diamond</field>
<field name="sequence">60</field>
<field name="requires_signoff">True</field>
<field name="customer_visible">True</field>
</record>
<record id="cc_trivalent_rinse" model="fusion.plating.process.node">
<field name="name">Rinse (A-15)</field>
<field name="node_type">step</field>
<field name="parent_id" ref="cc_trivalent"/>
<field name="icon">fa-tint</field>
<field name="sequence">10</field>
</record>
<!-- ========================= 3. Plug The Threaded Holes ========================= -->
<record id="cc_plug_threaded" model="fusion.plating.process.node">
<field name="name">Plug The Threaded Holes</field>
<field name="node_type">sub_process</field>
<field name="parent_id" ref="recipe_chem_conversion"/>
<field name="icon">fa-shield</field>
<field name="sequence">30</field>
<field name="requires_signoff">True</field>
</record>
<!-- ========================= 4. Nickel Strip - Aluminum Line ========================= -->
<record id="cc_ni_strip" model="fusion.plating.process.node">
<field name="name">Nickel Strip - Aluminum Line</field>
<field name="node_type">sub_process</field>
<field name="parent_id" ref="recipe_chem_conversion"/>
<field name="icon">fa-eraser</field>
<field name="sequence">40</field>
<field name="auto_complete">True</field>
<field name="requires_signoff">True</field>
</record>
<!-- 4a. Strip Process - AL -->
<record id="cc_ni_strip_process" model="fusion.plating.process.node">
<field name="name">Strip Process - AL</field>
<field name="node_type">operation</field>
<field name="parent_id" ref="cc_ni_strip"/>
<field name="icon">fa-flask</field>
<field name="sequence">10</field>
<field name="auto_complete">True</field>
</record>
<record id="cc_ni_strip_nitric" model="fusion.plating.process.node">
<field name="name">Nitric Acid (A-13 / SP-10)</field>
<field name="node_type">step</field>
<field name="parent_id" ref="cc_ni_strip_process"/>
<field name="icon">fa-flask</field>
<field name="sequence">10</field>
</record>
<record id="cc_ni_strip_final_rinse" model="fusion.plating.process.node">
<field name="name">Final Rinse (A-14 / SP-11)</field>
<field name="node_type">step</field>
<field name="parent_id" ref="cc_ni_strip_process"/>
<field name="icon">fa-tint</field>
<field name="sequence">20</field>
</record>
<!-- 4b. Drying -->
<record id="cc_ni_strip_drying" model="fusion.plating.process.node">
<field name="name">Drying</field>
<field name="node_type">operation</field>
<field name="parent_id" ref="cc_ni_strip"/>
<field name="icon">fa-sun-o</field>
<field name="sequence">20</field>
</record>
<!-- 4c. Post Stripping Inspection -->
<record id="cc_ni_strip_inspect" model="fusion.plating.process.node">
<field name="name">Post Stripping Inspection</field>
<field name="node_type">operation</field>
<field name="parent_id" ref="cc_ni_strip"/>
<field name="icon">fa-search</field>
<field name="sequence">30</field>
<field name="auto_complete">True</field>
</record>
<record id="cc_ni_strip_inspect_ready" model="fusion.plating.process.node">
<field name="name">Ready for Post Stripping Inspection</field>
<field name="node_type">step</field>
<field name="parent_id" ref="cc_ni_strip_inspect"/>
<field name="icon">fa-clock-o</field>
<field name="sequence">10</field>
</record>
<record id="cc_ni_strip_inspect_do" model="fusion.plating.process.node">
<field name="name">Post Stripping Inspection</field>
<field name="node_type">step</field>
<field name="parent_id" ref="cc_ni_strip_inspect"/>
<field name="icon">fa-eye</field>
<field name="sequence">20</field>
<field name="customer_visible">True</field>
</record>
</data>
</odoo>