folder rename

This commit is contained in:
gsinghpal
2026-04-16 20:53:53 -04:00
parent 3f3ddcbab4
commit 7c7ef06057
634 changed files with 0 additions and 0 deletions

View File

@@ -0,0 +1,83 @@
<?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_bake_oven_list" model="ir.ui.view">
<field name="name">fp.bake.oven.list</field>
<field name="model">fusion.plating.bake.oven</field>
<field name="arch" type="xml">
<list string="Bake Ovens">
<field name="code"/>
<field name="name"/>
<field name="facility_id"/>
<field name="work_center_id"/>
<field name="target_temp_min"/>
<field name="target_temp_max"/>
<field name="chart_recorder_ref" optional="show"/>
<field name="active" widget="boolean_toggle" optional="hide"/>
</list>
</field>
</record>
<record id="view_fp_bake_oven_form" model="ir.ui.view">
<field name="name">fp.bake.oven.form</field>
<field name="model">fusion.plating.bake.oven</field>
<field name="arch" type="xml">
<form string="Bake Oven">
<sheet>
<div class="oe_title">
<label for="name"/>
<h1><field name="name" placeholder="e.g. Oven A"/></h1>
<div class="text-muted">
<field name="code" placeholder="OVN-A"/>
</div>
</div>
<group>
<group string="Location">
<field name="facility_id"/>
<field name="work_center_id"/>
</group>
<group string="Targets">
<field name="target_temp_min"/>
<field name="target_temp_max"/>
<field name="chart_recorder_ref"/>
<field name="active"/>
</group>
</group>
</sheet>
<chatter/>
</form>
</field>
</record>
<record id="view_fp_bake_oven_search" model="ir.ui.view">
<field name="name">fp.bake.oven.search</field>
<field name="model">fusion.plating.bake.oven</field>
<field name="arch" type="xml">
<search string="Bake Ovens">
<field name="name"/>
<field name="code"/>
<field name="facility_id"/>
<field name="work_center_id"/>
<separator/>
<filter string="Archived" name="inactive" domain="[('active','=',False)]"/>
<group>
<filter string="Facility" name="group_facility" context="{'group_by':'facility_id'}"/>
<filter string="Work Center" name="group_wc" context="{'group_by':'work_center_id'}"/>
</group>
</search>
</field>
</record>
<record id="action_fp_bake_oven" model="ir.actions.act_window">
<field name="name">Bake Ovens</field>
<field name="res_model">fusion.plating.bake.oven</field>
<field name="view_mode">list,form</field>
<field name="search_view_id" ref="view_fp_bake_oven_search"/>
</record>
</odoo>

View File

@@ -0,0 +1,172 @@
<?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_bake_window_list" model="ir.ui.view">
<field name="name">fp.bake.window.list</field>
<field name="model">fusion.plating.bake.window</field>
<field name="arch" type="xml">
<list string="Bake Windows" decoration-danger="state == 'missed_window'"
decoration-success="state == 'baked'"
decoration-info="state == 'bake_in_progress'"
decoration-muted="state == 'scrapped'">
<field name="name"/>
<field name="bath_id"/>
<field name="tank_id" optional="show"/>
<field name="part_ref"/>
<field name="lot_ref" optional="show"/>
<field name="customer_ref" optional="show"/>
<field name="quantity" optional="hide"/>
<field name="plate_exit_time"/>
<field name="window_hours"/>
<field name="bake_required_by"/>
<field name="time_remaining_display" string="Remaining"/>
<field name="oven_id" optional="show"/>
<field name="state" widget="badge"
decoration-success="state == 'baked'"
decoration-info="state == 'bake_in_progress'"
decoration-warning="state == 'awaiting_bake'"
decoration-danger="state in ('missed_window','scrapped')"/>
</list>
</field>
</record>
<record id="view_fp_bake_window_form" model="ir.ui.view">
<field name="name">fp.bake.window.form</field>
<field name="model">fusion.plating.bake.window</field>
<field name="arch" type="xml">
<form string="Bake Window">
<header>
<button name="action_start_bake" string="Start Bake" type="object"
class="oe_highlight" invisible="state != 'awaiting_bake'"/>
<button name="action_end_bake" string="End Bake" type="object"
class="oe_highlight" invisible="state != 'bake_in_progress'"/>
<button name="action_scrap" string="Scrap" type="object"
invisible="state in ('baked','scrapped')"/>
<field name="state" widget="statusbar"
statusbar_visible="awaiting_bake,bake_in_progress,baked"/>
</header>
<sheet>
<widget name="web_ribbon" title="Missed Window" bg_color="text-bg-danger"
invisible="state != 'missed_window'"/>
<div class="oe_title">
<label for="name"/>
<h1><field name="name" readonly="1"/></h1>
</div>
<group>
<group string="Job">
<field name="bath_id"/>
<field name="tank_id" readonly="1"/>
<field name="facility_id" readonly="1"/>
<field name="part_ref"/>
<field name="lot_ref"/>
<field name="customer_ref"/>
<field name="quantity"/>
</group>
<group string="Window">
<field name="plate_exit_time"/>
<field name="window_hours"/>
<field name="bake_required_by" readonly="1"/>
<field name="time_remaining_display" readonly="1"/>
</group>
</group>
<group>
<group string="Bake">
<field name="oven_id"/>
<field name="operator_id"/>
<field name="bake_start_time" readonly="1"/>
<field name="bake_end_time" readonly="1"/>
</group>
<group string="Result">
<field name="bake_temp"/>
<field name="bake_duration_hours" readonly="1"/>
</group>
</group>
<group string="Notes">
<field name="notes" nolabel="1"/>
</group>
</sheet>
<chatter/>
</form>
</field>
</record>
<record id="view_fp_bake_window_kanban" model="ir.ui.view">
<field name="name">fp.bake.window.kanban</field>
<field name="model">fusion.plating.bake.window</field>
<field name="arch" type="xml">
<kanban default_group_by="state" class="o_fp_bake_window_kanban">
<field name="id"/>
<field name="name"/>
<field name="part_ref"/>
<field name="lot_ref"/>
<field name="customer_ref"/>
<field name="bake_required_by"/>
<field name="time_remaining_display"/>
<field name="state"/>
<field name="status_color"/>
<templates>
<t t-name="card">
<div class="o_fp_card o_fp_bake_window_card"
t-att-data-status="record.state.raw_value">
<div class="d-flex align-items-start justify-content-between">
<div>
<strong class="o_fp_card_title"><field name="name"/></strong>
<div class="small text-muted"><field name="part_ref"/></div>
</div>
<span class="o_fp_health_dot" t-att-data-status="record.state.raw_value"/>
</div>
<div class="mt-2 small">
<div><i class="fa fa-clock-o me-1 text-muted"/><field name="time_remaining_display"/></div>
<div class="text-muted">Lot <field name="lot_ref"/></div>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record id="view_fp_bake_window_search" model="ir.ui.view">
<field name="name">fp.bake.window.search</field>
<field name="model">fusion.plating.bake.window</field>
<field name="arch" type="xml">
<search string="Bake Windows">
<field name="name"/>
<field name="part_ref"/>
<field name="lot_ref"/>
<field name="customer_ref"/>
<field name="bath_id"/>
<field name="tank_id"/>
<field name="oven_id"/>
<separator/>
<filter string="Awaiting Bake" name="awaiting" domain="[('state','=','awaiting_bake')]"/>
<filter string="In Progress" name="in_progress" domain="[('state','=','bake_in_progress')]"/>
<filter string="Baked" name="baked" domain="[('state','=','baked')]"/>
<filter string="Missed Window" name="missed" domain="[('state','=','missed_window')]"/>
<filter string="Scrapped" name="scrapped" domain="[('state','=','scrapped')]"/>
<separator/>
<filter string="Archived" name="inactive" domain="[('active','=',False)]"/>
<group>
<filter string="State" name="group_state" context="{'group_by':'state'}"/>
<filter string="Tank" name="group_tank" context="{'group_by':'tank_id'}"/>
<filter string="Oven" name="group_oven" context="{'group_by':'oven_id'}"/>
<filter string="Customer" name="group_customer" context="{'group_by':'customer_ref'}"/>
</group>
</search>
</field>
</record>
<record id="action_fp_bake_window" model="ir.actions.act_window">
<field name="name">Bake Windows</field>
<field name="res_model">fusion.plating.bake.window</field>
<field name="view_mode">kanban,list,form</field>
<field name="search_view_id" ref="view_fp_bake_window_search"/>
<field name="context">{'search_default_awaiting': 1, 'search_default_in_progress': 1}</field>
</record>
</odoo>

View File

@@ -0,0 +1,147 @@
<?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_first_piece_gate_list" model="ir.ui.view">
<field name="name">fp.first.piece.gate.list</field>
<field name="model">fusion.plating.first.piece.gate</field>
<field name="arch" type="xml">
<list string="First-Piece Gates"
decoration-success="result == 'pass' and rest_of_lot_released"
decoration-warning="result == 'pass' and not rest_of_lot_released"
decoration-danger="result == 'fail'"
decoration-muted="result == 'pending'">
<field name="name"/>
<field name="bath_id"/>
<field name="part_ref"/>
<field name="customer_ref" optional="show"/>
<field name="routing_first_run" widget="boolean_toggle" optional="hide"/>
<field name="first_piece_produced" optional="show"/>
<field name="first_piece_inspected" optional="show"/>
<field name="inspector_id" optional="show"/>
<field name="result" widget="badge"
decoration-success="result == 'pass'"
decoration-danger="result == 'fail'"
decoration-muted="result == 'pending'"/>
<field name="rest_of_lot_released" widget="boolean_toggle"/>
</list>
</field>
</record>
<record id="view_fp_first_piece_gate_form" model="ir.ui.view">
<field name="name">fp.first.piece.gate.form</field>
<field name="model">fusion.plating.first.piece.gate</field>
<field name="arch" type="xml">
<form string="First-Piece Gate">
<header>
<button name="action_mark_pass" string="Mark Pass" type="object"
class="oe_highlight" invisible="result != 'pending'"/>
<button name="action_mark_fail" string="Mark Fail" type="object"
invisible="result != 'pending'"/>
<button name="action_release_lot" string="Release Lot" type="object"
invisible="result != 'pass' or rest_of_lot_released"/>
<field name="result" widget="statusbar"
statusbar_visible="pending,pass"/>
</header>
<sheet>
<div class="oe_title">
<label for="name"/>
<h1><field name="name" readonly="1"/></h1>
</div>
<group>
<group string="Job">
<field name="bath_id"/>
<field name="facility_id" readonly="1"/>
<field name="part_ref"/>
<field name="customer_ref"/>
<field name="routing_first_run"/>
</group>
<group string="Inspection">
<field name="first_piece_produced"/>
<field name="first_piece_inspected"/>
<field name="inspector_id"/>
<field name="rest_of_lot_released"/>
</group>
</group>
<group string="Notes">
<field name="notes" nolabel="1"/>
</group>
</sheet>
<chatter/>
</form>
</field>
</record>
<record id="view_fp_first_piece_gate_kanban" model="ir.ui.view">
<field name="name">fp.first.piece.gate.kanban</field>
<field name="model">fusion.plating.first.piece.gate</field>
<field name="arch" type="xml">
<kanban default_group_by="result">
<field name="id"/>
<field name="name"/>
<field name="part_ref"/>
<field name="customer_ref"/>
<field name="result"/>
<field name="rest_of_lot_released"/>
<field name="status_color"/>
<templates>
<t t-name="card">
<div class="o_fp_card">
<div class="d-flex align-items-start justify-content-between">
<div>
<strong class="o_fp_card_title"><field name="name"/></strong>
<div class="small text-muted"><field name="part_ref"/></div>
</div>
</div>
<div class="mt-2 small text-muted">
<field name="customer_ref"/>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record id="view_fp_first_piece_gate_search" model="ir.ui.view">
<field name="name">fp.first.piece.gate.search</field>
<field name="model">fusion.plating.first.piece.gate</field>
<field name="arch" type="xml">
<search string="First-Piece Gates">
<field name="name"/>
<field name="part_ref"/>
<field name="customer_ref"/>
<field name="bath_id"/>
<field name="inspector_id"/>
<separator/>
<filter string="Pending" name="pending" domain="[('result','=','pending')]"/>
<filter string="Passed" name="passed" domain="[('result','=','pass')]"/>
<filter string="Failed" name="failed" domain="[('result','=','fail')]"/>
<separator/>
<filter string="Lot Released" name="released" domain="[('rest_of_lot_released','=',True)]"/>
<filter string="Lot On Hold" name="on_hold"
domain="[('result','=','pass'),('rest_of_lot_released','=',False)]"/>
<separator/>
<filter string="Archived" name="inactive" domain="[('active','=',False)]"/>
<group>
<filter string="Result" name="group_result" context="{'group_by':'result'}"/>
<filter string="Customer" name="group_customer" context="{'group_by':'customer_ref'}"/>
<filter string="Inspector" name="group_inspector" context="{'group_by':'inspector_id'}"/>
</group>
</search>
</field>
</record>
<record id="action_fp_first_piece_gate" model="ir.actions.act_window">
<field name="name">First-Piece Gates</field>
<field name="res_model">fusion.plating.first.piece.gate</field>
<field name="view_mode">kanban,list,form</field>
<field name="search_view_id" ref="view_fp_first_piece_gate_search"/>
<field name="context">{'search_default_pending': 1}</field>
</record>
</odoo>

View File

@@ -0,0 +1,55 @@
<?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>
<!-- ===== SHOP FLOOR (top-level under Plating) ===== -->
<menuitem id="menu_fp_shopfloor"
name="Shop Floor"
parent="fusion_plating.menu_fp_root"
sequence="12"
groups="fusion_plating.group_fusion_plating_operator"/>
<menuitem id="menu_fp_shopfloor_plant_overview"
name="Plant Overview"
parent="menu_fp_shopfloor"
action="action_fp_plant_overview"
sequence="5"/>
<menuitem id="menu_fp_shopfloor_tablet"
name="Tablet Station"
parent="menu_fp_shopfloor"
action="action_fp_shopfloor_tablet"
sequence="10"/>
<menuitem id="menu_fp_shopfloor_bake_windows"
name="Bake Windows"
parent="menu_fp_shopfloor"
action="action_fp_bake_window"
sequence="20"/>
<menuitem id="menu_fp_shopfloor_first_piece"
name="First-Piece Gates"
parent="menu_fp_shopfloor"
action="action_fp_first_piece_gate"
sequence="30"/>
<!-- ===== Configuration (under existing core Configuration menu) ===== -->
<menuitem id="menu_fp_shopfloor_stations_cfg"
name="Shopfloor Stations"
parent="fusion_plating.menu_fp_config"
action="action_fp_shopfloor_station"
sequence="60"
groups="fusion_plating.group_fusion_plating_manager"/>
<menuitem id="menu_fp_shopfloor_ovens_cfg"
name="Bake Ovens"
parent="fusion_plating.menu_fp_config"
action="action_fp_bake_oven"
sequence="65"
groups="fusion_plating.group_fusion_plating_manager"/>
</odoo>

View File

@@ -0,0 +1,25 @@
<?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>
<!-- ================================================================== -->
<!-- Client action — Plant Overview Dashboard -->
<!-- ================================================================== -->
<record id="action_fp_plant_overview" model="ir.actions.client">
<field name="name">Plant Overview</field>
<field name="tag">fp_plant_overview</field>
</record>
<!-- ================================================================== -->
<!-- Client action — Process Tree -->
<!-- ================================================================== -->
<record id="action_fp_process_tree" model="ir.actions.client">
<field name="name">Process Tree</field>
<field name="tag">fp_process_tree</field>
</record>
</odoo>

View File

@@ -0,0 +1,100 @@
<?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_shopfloor_station_list" model="ir.ui.view">
<field name="name">fp.shopfloor.station.list</field>
<field name="model">fusion.plating.shopfloor.station</field>
<field name="arch" type="xml">
<list string="Shopfloor Stations">
<field name="code"/>
<field name="name"/>
<field name="facility_id"/>
<field name="work_center_id"/>
<field name="station_type"/>
<field name="current_operator_id" optional="show"/>
<field name="last_ping" optional="show"/>
<field name="active" widget="boolean_toggle" optional="hide"/>
</list>
</field>
</record>
<record id="view_fp_shopfloor_station_form" model="ir.ui.view">
<field name="name">fp.shopfloor.station.form</field>
<field name="model">fusion.plating.shopfloor.station</field>
<field name="arch" type="xml">
<form string="Shopfloor Station">
<sheet>
<div class="oe_title">
<label for="name"/>
<h1><field name="name" placeholder="e.g. Tablet — EN Line"/></h1>
<div class="text-muted">
<field name="code" placeholder="TAB-EN-01"/>
</div>
</div>
<group>
<group string="Location">
<field name="facility_id"/>
<field name="work_center_id"/>
<field name="station_type"/>
</group>
<group string="Identity / State">
<field name="qr_code"/>
<field name="current_operator_id"/>
<field name="last_ping" readonly="1"/>
<field name="active"/>
</group>
</group>
<group string="Notes">
<field name="notes" nolabel="1"/>
</group>
</sheet>
<chatter/>
</form>
</field>
</record>
<record id="view_fp_shopfloor_station_search" model="ir.ui.view">
<field name="name">fp.shopfloor.station.search</field>
<field name="model">fusion.plating.shopfloor.station</field>
<field name="arch" type="xml">
<search string="Shopfloor Stations">
<field name="name"/>
<field name="code"/>
<field name="qr_code"/>
<field name="facility_id"/>
<field name="work_center_id"/>
<separator/>
<filter string="Tablets" name="tablets" domain="[('station_type','=','tablet')]"/>
<filter string="Kiosks" name="kiosks" domain="[('station_type','=','kiosk')]"/>
<separator/>
<filter string="Archived" name="inactive" domain="[('active','=',False)]"/>
<group>
<filter string="Facility" name="group_facility" context="{'group_by':'facility_id'}"/>
<filter string="Work Center" name="group_wc" context="{'group_by':'work_center_id'}"/>
<filter string="Type" name="group_type" context="{'group_by':'station_type'}"/>
</group>
</search>
</field>
</record>
<record id="action_fp_shopfloor_station" model="ir.actions.act_window">
<field name="name">Shopfloor Stations</field>
<field name="res_model">fusion.plating.shopfloor.station</field>
<field name="view_mode">list,form</field>
<field name="search_view_id" ref="view_fp_shopfloor_station_search"/>
</record>
<!-- ================================================================== -->
<!-- Client action that launches the OWL tablet component -->
<!-- ================================================================== -->
<record id="action_fp_shopfloor_tablet" model="ir.actions.client">
<field name="name">Tablet Station</field>
<field name="tag">fp_shopfloor_tablet</field>
</record>
</odoo>