Files
Odoo-Modules/fusion-plating/fusion_plating/data/fp_demo_recipe_data.xml
gsinghpal a7d224899a fusion_plating: add process recipe system with OWL tree editor (v19.0.2.0.0)
New model fusion.plating.process.node with _parent_store hierarchy for
defining reusable plating recipes. Node types: recipe, sub_process,
operation, step. Includes companion model for operator input definitions.

Full OWL tree editor (client action) with:
- Hierarchical tree with connector lines and type-coloured borders
- Click-to-edit side panel with save
- Add/delete child nodes inline
- Drag & drop reorder and reparent
- Theme-aware SCSS (light + dark mode)
- Demo data: Electroless Nickel Plating — Steel Line (30+ nodes)

Backend: 7 JSON-RPC endpoints for tree CRUD, reorder, move, duplicate.
Security: 3-tier ACL (operator read / supervisor write / manager full).
Menu: Process Recipes under Plating > Operations.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 14:29:58 -04:00

263 lines
12 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2026 Nexa Systems Inc.
License OPL-1 (Odoo Proprietary License v1.0)
Demo recipe: Electroless Nickel Plating — Steel Line
-->
<odoo>
<data noupdate="1">
<!-- ===== ROOT: Electroless Nickel Plating — Steel Line ===== -->
<record id="demo_recipe_en_steel" model="fusion.plating.process.node">
<field name="name">Electroless Nickel Plating — Steel Line</field>
<field name="code">EN_STEEL</field>
<field name="node_type">recipe</field>
<field name="icon">fa-flask</field>
<field name="sequence">10</field>
<field name="customer_visible">True</field>
</record>
<!-- 1. Blasting -->
<record id="demo_node_blasting" model="fusion.plating.process.node">
<field name="name">Blasting</field>
<field name="node_type">operation</field>
<field name="parent_id" ref="demo_recipe_en_steel"/>
<field name="icon">fa-bullseye</field>
<field name="sequence">10</field>
<field name="estimated_duration">30</field>
<field name="is_manual">True</field>
</record>
<record id="demo_step_ready_blast" model="fusion.plating.process.node">
<field name="name">Ready for Blast</field>
<field name="node_type">step</field>
<field name="parent_id" ref="demo_node_blasting"/>
<field name="icon">fa-clock-o</field>
<field name="sequence">10</field>
</record>
<record id="demo_step_blast" model="fusion.plating.process.node">
<field name="name">Blast</field>
<field name="node_type">step</field>
<field name="parent_id" ref="demo_node_blasting"/>
<field name="icon">fa-fire</field>
<field name="sequence">20</field>
<field name="requires_signoff">True</field>
</record>
<!-- 2. Masking -->
<record id="demo_node_masking" model="fusion.plating.process.node">
<field name="name">Masking</field>
<field name="node_type">operation</field>
<field name="parent_id" ref="demo_recipe_en_steel"/>
<field name="icon">fa-paint-brush</field>
<field name="sequence">20</field>
<field name="estimated_duration">45</field>
<field name="is_manual">True</field>
</record>
<record id="demo_step_ready_mask" model="fusion.plating.process.node">
<field name="name">Ready for Masking</field>
<field name="node_type">step</field>
<field name="parent_id" ref="demo_node_masking"/>
<field name="sequence">10</field>
</record>
<record id="demo_step_mask" model="fusion.plating.process.node">
<field name="name">Masking</field>
<field name="node_type">step</field>
<field name="parent_id" ref="demo_node_masking"/>
<field name="icon">fa-paint-brush</field>
<field name="sequence">20</field>
<field name="requires_signoff">True</field>
</record>
<!-- 3. Racking -->
<record id="demo_node_racking" model="fusion.plating.process.node">
<field name="name">Racking</field>
<field name="node_type">operation</field>
<field name="parent_id" ref="demo_recipe_en_steel"/>
<field name="icon">fa-th</field>
<field name="sequence">30</field>
<field name="estimated_duration">20</field>
</record>
<!-- 4. Steel Line (sub-process with many children) -->
<record id="demo_node_steel_line" model="fusion.plating.process.node">
<field name="name">Steel Line</field>
<field name="node_type">sub_process</field>
<field name="parent_id" ref="demo_recipe_en_steel"/>
<field name="icon">fa-industry</field>
<field name="sequence">40</field>
<field name="auto_complete">True</field>
</record>
<!-- 4a. Cleaner (sub-process inside Steel Line) -->
<record id="demo_node_cleaner" model="fusion.plating.process.node">
<field name="name">Cleaner</field>
<field name="node_type">sub_process</field>
<field name="parent_id" ref="demo_node_steel_line"/>
<field name="icon">fa-shower</field>
<field name="sequence">10</field>
</record>
<record id="demo_step_soak_clean" model="fusion.plating.process.node">
<field name="name">Soak Clean (S-3)</field>
<field name="node_type">step</field>
<field name="parent_id" ref="demo_node_cleaner"/>
<field name="sequence">10</field>
<field name="estimated_duration">10</field>
<field name="is_manual">False</field>
</record>
<record id="demo_step_electroclean" model="fusion.plating.process.node">
<field name="name">Electroclean (S-3)</field>
<field name="node_type">step</field>
<field name="parent_id" ref="demo_node_cleaner"/>
<field name="sequence">20</field>
<field name="estimated_duration">5</field>
<field name="is_manual">False</field>
</record>
<record id="demo_step_primary_rinse_1" model="fusion.plating.process.node">
<field name="name">Primary Rinse (S-4)</field>
<field name="node_type">step</field>
<field name="parent_id" ref="demo_node_cleaner"/>
<field name="sequence">30</field>
<field name="is_manual">False</field>
</record>
<!-- 4b. Acid Dip -->
<record id="demo_node_acid_dip" model="fusion.plating.process.node">
<field name="name">Acid Dip (S-5)</field>
<field name="node_type">operation</field>
<field name="parent_id" ref="demo_node_steel_line"/>
<field name="icon">fa-flask</field>
<field name="sequence">20</field>
<field name="estimated_duration">5</field>
<field name="is_manual">False</field>
</record>
<!-- 4c. Nickel Strike -->
<record id="demo_node_nickel_strike" model="fusion.plating.process.node">
<field name="name">Nickel Strike (S-7 / SP-5)</field>
<field name="node_type">operation</field>
<field name="parent_id" ref="demo_node_steel_line"/>
<field name="icon">fa-bolt</field>
<field name="sequence">30</field>
<field name="estimated_duration">8</field>
<field name="is_manual">False</field>
<field name="requires_signoff">True</field>
</record>
<!-- 4d. E-Nickel Plate (Mid Phos) -->
<record id="demo_node_en_plate" model="fusion.plating.process.node">
<field name="name">E-Nickel Plate (Mid Phos) (S-9)</field>
<field name="node_type">operation</field>
<field name="parent_id" ref="demo_node_steel_line"/>
<field name="icon">fa-diamond</field>
<field name="sequence">40</field>
<field name="estimated_duration">90</field>
<field name="is_manual">False</field>
<field name="requires_signoff">True</field>
</record>
<record id="demo_step_rinse_after_plate" model="fusion.plating.process.node">
<field name="name">Primary Rinse (S-11)</field>
<field name="node_type">step</field>
<field name="parent_id" ref="demo_node_en_plate"/>
<field name="sequence">10</field>
<field name="is_manual">False</field>
</record>
<record id="demo_step_hot_rinse" model="fusion.plating.process.node">
<field name="name">Hot Rinse (S-13)</field>
<field name="node_type">step</field>
<field name="parent_id" ref="demo_node_en_plate"/>
<field name="sequence">20</field>
<field name="is_manual">False</field>
</record>
<!-- 4e. Hot Water Porosity -->
<record id="demo_node_porosity" model="fusion.plating.process.node">
<field name="name">Hot Water Porosity (A-15)</field>
<field name="node_type">operation</field>
<field name="parent_id" ref="demo_node_steel_line"/>
<field name="icon">fa-tint</field>
<field name="sequence">50</field>
<field name="estimated_duration">15</field>
<field name="requires_signoff">True</field>
</record>
<!-- 4f. Dry -->
<record id="demo_node_dry" model="fusion.plating.process.node">
<field name="name">Dry</field>
<field name="node_type">operation</field>
<field name="parent_id" ref="demo_node_steel_line"/>
<field name="icon">fa-sun-o</field>
<field name="sequence">60</field>
<field name="is_manual">False</field>
</record>
<!-- 5. Oven Baking -->
<record id="demo_node_oven_bake" model="fusion.plating.process.node">
<field name="name">Oven Baking</field>
<field name="node_type">operation</field>
<field name="parent_id" ref="demo_recipe_en_steel"/>
<field name="icon">fa-fire</field>
<field name="sequence">50</field>
<field name="estimated_duration">240</field>
<field name="is_manual">False</field>
<field name="requires_signoff">True</field>
</record>
<!-- 6. De-racking -->
<record id="demo_node_derack" model="fusion.plating.process.node">
<field name="name">De-Racking</field>
<field name="node_type">operation</field>
<field name="parent_id" ref="demo_recipe_en_steel"/>
<field name="icon">fa-th</field>
<field name="sequence">60</field>
<field name="estimated_duration">15</field>
</record>
<!-- 7. De-Masking -->
<record id="demo_node_demask" model="fusion.plating.process.node">
<field name="name">De-Masking</field>
<field name="node_type">operation</field>
<field name="parent_id" ref="demo_recipe_en_steel"/>
<field name="icon">fa-eraser</field>
<field name="sequence">70</field>
<field name="estimated_duration">20</field>
</record>
<!-- 8. Oven Bake (Post De-Rack) -->
<record id="demo_node_post_bake" model="fusion.plating.process.node">
<field name="name">Oven Bake (Post De-Rack)</field>
<field name="node_type">operation</field>
<field name="parent_id" ref="demo_recipe_en_steel"/>
<field name="icon">fa-fire</field>
<field name="sequence">80</field>
<field name="estimated_duration">120</field>
<field name="is_manual">False</field>
</record>
<!-- 9. Post Plate Inspection -->
<record id="demo_node_inspection" model="fusion.plating.process.node">
<field name="name">Post Plate Inspection</field>
<field name="node_type">operation</field>
<field name="parent_id" ref="demo_recipe_en_steel"/>
<field name="icon">fa-search</field>
<field name="sequence">90</field>
<field name="estimated_duration">30</field>
<field name="requires_signoff">True</field>
</record>
<record id="demo_step_ready_inspect" model="fusion.plating.process.node">
<field name="name">Ready for Post Plate Inspection</field>
<field name="node_type">step</field>
<field name="parent_id" ref="demo_node_inspection"/>
<field name="sequence">10</field>
</record>
<record id="demo_step_inspect" model="fusion.plating.process.node">
<field name="name">Post Plate Inspection</field>
<field name="node_type">step</field>
<field name="parent_id" ref="demo_node_inspection"/>
<field name="icon">fa-check-circle</field>
<field name="sequence">20</field>
<field name="requires_signoff">True</field>
</record>
</data>
</odoo>