feat(sub12a): step library list/form/search views
Form: Title + Code + Classification (kind/icon/process/material) + Stations & Flags + 4 notebook tabs (Instructions / Operation Measurements / Transition Form / Advanced). Operation Measurements + Transition Form are inline-editable o2m lists with handle widget for drag reorder. Header button: 'Seed Default Inputs' (visible only when default_kind is set). Triggers the idempotent seeding helper. NB: I removed `string=` from <search> per Odoo 19 rule (CLAUDE.md critical rule 4 — no string attr on search). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
144
fusion_plating/fusion_plating/views/fp_step_template_views.xml
Normal file
144
fusion_plating/fusion_plating/views/fp_step_template_views.xml
Normal file
@@ -0,0 +1,144 @@
|
||||
<?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_step_template_list" model="ir.ui.view">
|
||||
<field name="name">fp.step.template.list</field>
|
||||
<field name="model">fp.step.template</field>
|
||||
<field name="arch" type="xml">
|
||||
<list string="Step Library">
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="name"/>
|
||||
<field name="code"/>
|
||||
<field name="default_kind"/>
|
||||
<field name="tank_ids" widget="many2many_tags" optional="show"/>
|
||||
<field name="requires_signoff" optional="hide"/>
|
||||
<field name="requires_rack_assignment" optional="hide"/>
|
||||
<field name="requires_transition_form" optional="hide"/>
|
||||
<field name="active" widget="boolean_toggle" optional="hide"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_fp_step_template_form" model="ir.ui.view">
|
||||
<field name="name">fp.step.template.form</field>
|
||||
<field name="model">fp.step.template</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Step Library Template">
|
||||
<header>
|
||||
<button name="_seed_default_inputs" type="object"
|
||||
string="Seed Default Inputs" class="btn-secondary"
|
||||
invisible="not default_kind"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<div class="oe_title">
|
||||
<label for="name" string="Title"/>
|
||||
<h1><field name="name" placeholder="e.g. Soak Clean"/></h1>
|
||||
<div class="text-muted">
|
||||
<field name="code" placeholder="SOAK_CLEAN"/>
|
||||
</div>
|
||||
</div>
|
||||
<group>
|
||||
<group string="Classification">
|
||||
<field name="default_kind"/>
|
||||
<field name="icon"/>
|
||||
<field name="process_type_id"/>
|
||||
<field name="material_callout"/>
|
||||
</group>
|
||||
<group string="Stations + Flags">
|
||||
<field name="tank_ids" widget="many2many_tags"/>
|
||||
<field name="requires_signoff"/>
|
||||
<field name="requires_predecessor_done"/>
|
||||
<field name="requires_rack_assignment"/>
|
||||
<field name="requires_transition_form"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Instructions" name="instructions">
|
||||
<field name="description"
|
||||
placeholder="Rich-text instructions / WI reference."/>
|
||||
</page>
|
||||
<page string="Operation Measurements" name="op_measurements">
|
||||
<field name="input_template_ids">
|
||||
<list editable="bottom">
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="name"/>
|
||||
<field name="input_type"/>
|
||||
<field name="target_min"/>
|
||||
<field name="target_max"/>
|
||||
<field name="target_unit"/>
|
||||
<field name="required" widget="boolean_toggle"/>
|
||||
<field name="hint"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Transition Form" name="transition_form">
|
||||
<field name="transition_input_ids">
|
||||
<list editable="bottom">
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="name"/>
|
||||
<field name="input_type"/>
|
||||
<field name="required" widget="boolean_toggle"/>
|
||||
<field name="compliance_tag"/>
|
||||
<field name="hint"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Advanced" name="advanced">
|
||||
<group>
|
||||
<group string="Time Target">
|
||||
<field name="time_min_target"/>
|
||||
<field name="time_max_target"/>
|
||||
<field name="time_unit"/>
|
||||
</group>
|
||||
<group string="Temperature Target">
|
||||
<field name="temp_min_target"/>
|
||||
<field name="temp_max_target"/>
|
||||
<field name="temp_unit"/>
|
||||
</group>
|
||||
<group string="Other Targets">
|
||||
<field name="voltage_target"/>
|
||||
<field name="viscosity_target"/>
|
||||
</group>
|
||||
</group>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<chatter/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_fp_step_template_search" model="ir.ui.view">
|
||||
<field name="name">fp.step.template.search</field>
|
||||
<field name="model">fp.step.template</field>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<field name="name"/>
|
||||
<field name="code"/>
|
||||
<field name="default_kind"/>
|
||||
<field name="tank_ids"/>
|
||||
<separator/>
|
||||
<filter string="Archived" name="inactive" domain="[('active','=',False)]"/>
|
||||
<group>
|
||||
<filter string="Step Kind" name="group_kind"
|
||||
context="{'group_by':'default_kind'}"/>
|
||||
<filter string="Process Type" name="group_proc"
|
||||
context="{'group_by':'process_type_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_fp_step_template" model="ir.actions.act_window">
|
||||
<field name="name">Step Library</field>
|
||||
<field name="res_model">fp.step.template</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="search_view_id" ref="view_fp_step_template_search"/>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user