203 lines
9.9 KiB
XML
203 lines
9.9 KiB
XML
<?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>
|
|
|
|
<!-- ===== LIST ===== -->
|
|
<record id="view_fp_batch_list" model="ir.ui.view">
|
|
<field name="name">fp.batch.list</field>
|
|
<field name="model">fusion.plating.batch</field>
|
|
<field name="arch" type="xml">
|
|
<list string="Batches"
|
|
decoration-muted="state == 'cancelled'"
|
|
decoration-success="state == 'complete'">
|
|
<field name="name"/>
|
|
<field name="facility_id"/>
|
|
<field name="bath_id"/>
|
|
<field name="tank_id" optional="show"/>
|
|
<field name="rack_ref" optional="show"/>
|
|
<field name="part_count"/>
|
|
<field name="operator_id" widget="many2one_avatar_user"/>
|
|
<field name="state" widget="badge"
|
|
decoration-info="state == 'draft'"
|
|
decoration-warning="state == 'loading'"
|
|
decoration-primary="state == 'in_process'"
|
|
decoration-success="state in ('unloading','complete')"
|
|
decoration-danger="state == 'cancelled'"/>
|
|
<field name="duration_minutes" optional="show" widget="float_time"/>
|
|
<field name="start_time" optional="hide"/>
|
|
<field name="end_time" optional="hide"/>
|
|
</list>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- ===== FORM ===== -->
|
|
<record id="view_fp_batch_form" model="ir.ui.view">
|
|
<field name="name">fp.batch.form</field>
|
|
<field name="model">fusion.plating.batch</field>
|
|
<field name="arch" type="xml">
|
|
<form string="Batch">
|
|
<header>
|
|
<button name="action_start_loading" string="Start Loading"
|
|
type="object" class="oe_highlight"
|
|
invisible="state != 'draft'"/>
|
|
<button name="action_start_process" string="Start Process"
|
|
type="object" class="oe_highlight"
|
|
invisible="state != 'loading'"/>
|
|
<button name="action_start_unloading" string="Unload"
|
|
type="object" class="oe_highlight"
|
|
invisible="state != 'in_process'"/>
|
|
<button name="action_complete" string="Complete"
|
|
type="object" class="oe_highlight"
|
|
invisible="state != 'unloading'"/>
|
|
<button name="action_cancel" string="Cancel"
|
|
type="object"
|
|
invisible="state in ('complete','cancelled')"/>
|
|
<field name="state" widget="statusbar"
|
|
statusbar_visible="draft,loading,in_process,unloading,complete"/>
|
|
</header>
|
|
<sheet>
|
|
<div class="oe_button_box" name="button_box">
|
|
<button name="%(fusion_plating_batch.action_fp_batch_chemistry)d"
|
|
type="action" class="oe_stat_button" icon="fa-flask"
|
|
context="{'search_default_batch_id': id}">
|
|
<field name="chemistry_count" widget="statinfo" string="Readings"/>
|
|
</button>
|
|
</div>
|
|
<div class="oe_title">
|
|
<label for="name"/>
|
|
<h1><field name="name" readonly="1"/></h1>
|
|
</div>
|
|
<group>
|
|
<group>
|
|
<field name="facility_id"/>
|
|
<field name="bath_id" domain="[('facility_id','=',facility_id)]"/>
|
|
<field name="tank_id"/>
|
|
<field name="process_type_id"/>
|
|
</group>
|
|
<group>
|
|
<field name="rack_ref"/>
|
|
<field name="part_count"/>
|
|
<field name="operator_id"/>
|
|
<field name="company_id" groups="base.group_multi_company"/>
|
|
</group>
|
|
</group>
|
|
<group>
|
|
<group>
|
|
<field name="start_time"/>
|
|
<field name="end_time"/>
|
|
<field name="duration_minutes" widget="float_time"/>
|
|
</group>
|
|
</group>
|
|
<notebook>
|
|
<page string="Chemistry Readings">
|
|
<field name="chemistry_ids">
|
|
<list editable="bottom">
|
|
<field name="parameter_id"/>
|
|
<field name="value"/>
|
|
<field name="reading_time"/>
|
|
<field name="status" widget="badge"
|
|
decoration-success="status == 'pass'"
|
|
decoration-warning="status == 'warning'"
|
|
decoration-danger="status == 'fail'"/>
|
|
<field name="notes"/>
|
|
</list>
|
|
</field>
|
|
</page>
|
|
<page string="Notes">
|
|
<field name="notes"/>
|
|
</page>
|
|
</notebook>
|
|
</sheet>
|
|
<chatter/>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- ===== KANBAN ===== -->
|
|
<record id="view_fp_batch_kanban" model="ir.ui.view">
|
|
<field name="name">fp.batch.kanban</field>
|
|
<field name="model">fusion.plating.batch</field>
|
|
<field name="arch" type="xml">
|
|
<kanban default_group_by="state" class="o_fp_batch_kanban">
|
|
<field name="id"/>
|
|
<field name="name"/>
|
|
<field name="facility_id"/>
|
|
<field name="bath_id"/>
|
|
<field name="rack_ref"/>
|
|
<field name="part_count"/>
|
|
<field name="state"/>
|
|
<field name="operator_id"/>
|
|
<field name="duration_minutes"/>
|
|
<templates>
|
|
<t t-name="card">
|
|
<div class="o_fp_card o_fp_batch_card">
|
|
<div class="d-flex justify-content-between align-items-start">
|
|
<strong class="o_fp_card_title"><field name="name"/></strong>
|
|
</div>
|
|
<div class="small text-muted">
|
|
<field name="bath_id"/>
|
|
</div>
|
|
<div class="small">
|
|
<i class="fa fa-cubes me-1 text-muted"/>
|
|
<field name="rack_ref"/>
|
|
</div>
|
|
<div class="d-flex justify-content-between mt-2 small">
|
|
<span class="text-muted">Parts</span>
|
|
<span class="fw-bold"><field name="part_count"/></span>
|
|
</div>
|
|
<div class="d-flex justify-content-between small">
|
|
<span class="text-muted">Operator</span>
|
|
<field name="operator_id" widget="many2one_avatar_user"/>
|
|
</div>
|
|
</div>
|
|
</t>
|
|
</templates>
|
|
</kanban>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- ===== SEARCH ===== -->
|
|
<record id="view_fp_batch_search" model="ir.ui.view">
|
|
<field name="name">fp.batch.search</field>
|
|
<field name="model">fusion.plating.batch</field>
|
|
<field name="arch" type="xml">
|
|
<search string="Batches">
|
|
<field name="name"/>
|
|
<field name="bath_id"/>
|
|
<field name="facility_id"/>
|
|
<field name="rack_ref"/>
|
|
<field name="operator_id"/>
|
|
<separator/>
|
|
<filter string="Draft" name="draft" domain="[('state','=','draft')]"/>
|
|
<filter string="Loading" name="loading" domain="[('state','=','loading')]"/>
|
|
<filter string="In Process" name="in_process" domain="[('state','=','in_process')]"/>
|
|
<filter string="Unloading" name="unloading" domain="[('state','=','unloading')]"/>
|
|
<filter string="Complete" name="complete" domain="[('state','=','complete')]"/>
|
|
<filter string="Cancelled" name="cancelled" domain="[('state','=','cancelled')]"/>
|
|
<separator/>
|
|
<filter string="Archived" name="inactive" domain="[('active','=',False)]"/>
|
|
<group>
|
|
<filter string="Facility" name="group_facility" context="{'group_by':'facility_id'}"/>
|
|
<filter string="Bath" name="group_bath" context="{'group_by':'bath_id'}"/>
|
|
<filter string="Status" name="group_state" context="{'group_by':'state'}"/>
|
|
<filter string="Operator" name="group_operator" context="{'group_by':'operator_id'}"/>
|
|
</group>
|
|
</search>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- ===== ACTION ===== -->
|
|
<record id="action_fp_batch" model="ir.actions.act_window">
|
|
<field name="name">Batches</field>
|
|
<field name="res_model">fusion.plating.batch</field>
|
|
<field name="view_mode">kanban,list,form</field>
|
|
<field name="search_view_id" ref="view_fp_batch_search"/>
|
|
<field name="context">{'search_default_draft': 1, 'search_default_loading': 1, 'search_default_in_process': 1, 'search_default_unloading': 1}</field>
|
|
</record>
|
|
|
|
</odoo>
|