Files
Odoo-Modules/fusion-plating/fusion_plating_kpi/views/fp_kpi_value_views.xml
gsinghpal be611876ad changes
2026-04-12 09:09:50 -04:00

144 lines
6.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 VIEW ===== -->
<record id="fp_kpi_value_view_list" model="ir.ui.view">
<field name="name">fusion.plating.kpi.value.list</field>
<field name="model">fusion.plating.kpi.value</field>
<field name="arch" type="xml">
<list string="KPI History" editable="bottom">
<field name="kpi_id"/>
<field name="kpi_type" optional="show"/>
<field name="date"/>
<field name="value"/>
<field name="facility_id" optional="show"/>
</list>
</field>
</record>
<!-- ===== LINE GRAPH VIEW (default) ===== -->
<record id="fp_kpi_value_view_graph" model="ir.ui.view">
<field name="name">fusion.plating.kpi.value.graph.line</field>
<field name="model">fusion.plating.kpi.value</field>
<field name="arch" type="xml">
<graph string="KPI Trend (Line)" type="line">
<field name="date" type="row"/>
<field name="value" type="measure"/>
</graph>
</field>
</record>
<!-- ===== STACKED BAR GRAPH VIEW ===== -->
<record id="fp_kpi_value_view_graph_bar" model="ir.ui.view">
<field name="name">fusion.plating.kpi.value.graph.bar</field>
<field name="model">fusion.plating.kpi.value</field>
<field name="arch" type="xml">
<graph string="KPI Values (Bar)" type="bar" stacked="True">
<field name="date" interval="month" type="row"/>
<field name="kpi_type" type="col"/>
<field name="value" type="measure"/>
</graph>
</field>
</record>
<!-- ===== PIVOT VIEW ===== -->
<record id="fp_kpi_value_view_pivot" model="ir.ui.view">
<field name="name">fusion.plating.kpi.value.pivot</field>
<field name="model">fusion.plating.kpi.value</field>
<field name="arch" type="xml">
<pivot string="KPI Values">
<field name="kpi_id" type="row"/>
<field name="date" type="col" interval="month"/>
<field name="value" type="measure"/>
</pivot>
</field>
</record>
<!-- ===== SEARCH VIEW ===== -->
<record id="fp_kpi_value_view_search" model="ir.ui.view">
<field name="name">fusion.plating.kpi.value.search</field>
<field name="model">fusion.plating.kpi.value</field>
<field name="arch" type="xml">
<search string="Search KPI Values">
<field name="kpi_id"/>
<field name="kpi_type"/>
<field name="facility_id"/>
<field name="date"/>
<separator/>
<filter string="Today" name="filter_today"
domain="[('date', '=', context_today().strftime('%Y-%m-%d'))]"/>
<filter string="Last 7 Days" name="filter_week"
domain="[('date', '>=', (context_today() - datetime.timedelta(days=7)).strftime('%Y-%m-%d'))]"/>
<filter string="Last 30 Days" name="filter_month"
domain="[('date', '>=', (context_today() - datetime.timedelta(days=30)).strftime('%Y-%m-%d'))]"/>
<filter string="Last 90 Days" name="filter_quarter"
domain="[('date', '>=', (context_today() - datetime.timedelta(days=90)).strftime('%Y-%m-%d'))]"/>
<filter string="Last 365 Days" name="filter_year"
domain="[('date', '>=', (context_today() - datetime.timedelta(days=365)).strftime('%Y-%m-%d'))]"/>
<separator/>
<!-- KPI Type Filters -->
<filter string="On-Time Delivery" name="filter_otd"
domain="[('kpi_type', '=', 'otd')]"/>
<filter string="Dock-to-Dock" name="filter_d2d"
domain="[('kpi_type', '=', 'dock_to_dock')]"/>
<filter string="Throughput" name="filter_throughput"
domain="[('kpi_type', '=', 'throughput')]"/>
<filter string="Quality Yield" name="filter_quality"
domain="[('kpi_type', '=', 'quality_yield')]"/>
<filter string="Bath Uptime" name="filter_bath"
domain="[('kpi_type', '=', 'bath_uptime')]"/>
<filter string="Rework Events" name="filter_rework"
domain="[('kpi_type', '=', 'rework_count')]"/>
<filter string="Failed Specs" name="filter_failed_spec"
domain="[('kpi_type', '=', 'failed_spec_count')]"/>
<filter string="Processed Parts" name="filter_processed"
domain="[('kpi_type', '=', 'processed_parts')]"/>
<filter string="Shipped Parts" name="filter_shipped"
domain="[('kpi_type', '=', 'shipped_parts')]"/>
<filter string="Cost Per Part" name="filter_cost_per_part"
domain="[('kpi_type', '=', 'cost_per_part')]"/>
<separator/>
<group>
<filter string="KPI" name="group_kpi"
context="{'group_by': 'kpi_id'}"/>
<filter string="KPI Type" name="group_kpi_type"
context="{'group_by': 'kpi_type'}"/>
<filter string="Facility" name="group_facility"
context="{'group_by': 'facility_id'}"/>
<filter string="Date (Day)" name="group_date_day"
context="{'group_by': 'date:day'}"/>
<filter string="Date (Week)" name="group_date_week"
context="{'group_by': 'date:week'}"/>
<filter string="Date (Month)" name="group_date"
context="{'group_by': 'date:month'}"/>
<filter string="Date (Quarter)" name="group_date_quarter"
context="{'group_by': 'date:quarter'}"/>
</group>
</search>
</field>
</record>
<!-- ===== ACTION (generic history) ===== -->
<record id="action_fp_kpi_value" model="ir.actions.act_window">
<field name="name">KPI History</field>
<field name="res_model">fusion.plating.kpi.value</field>
<field name="view_mode">list,graph,pivot</field>
<field name="search_view_id" ref="fp_kpi_value_view_search"/>
<field name="context">{'search_default_filter_month': 1}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
No KPI values recorded yet
</p>
<p>
Values are computed daily by the scheduled action or entered manually.
</p>
</field>
</record>
</odoo>