Files
2026-04-16 20:53:53 -04:00

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>