folder rename
This commit is contained in:
109
fusion_plating/fusion_plating_safety/views/fp_chemical_views.xml
Normal file
109
fusion_plating/fusion_plating_safety/views/fp_chemical_views.xml
Normal file
@@ -0,0 +1,109 @@
|
||||
<?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_chemical_list" model="ir.ui.view">
|
||||
<field name="name">fp.chemical.list</field>
|
||||
<field name="model">fusion.plating.chemical</field>
|
||||
<field name="arch" type="xml">
|
||||
<list string="Chemicals" decoration-warning="needs_reorder">
|
||||
<field name="name"/>
|
||||
<field name="sds_id"/>
|
||||
<field name="facility_id"/>
|
||||
<field name="location"/>
|
||||
<field name="container_size"/>
|
||||
<field name="container_uom"/>
|
||||
<field name="quantity_on_hand"/>
|
||||
<field name="reorder_point"/>
|
||||
<field name="needs_reorder"/>
|
||||
<field name="active" widget="boolean_toggle"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_fp_chemical_form" model="ir.ui.view">
|
||||
<field name="name">fp.chemical.form</field>
|
||||
<field name="model">fusion.plating.chemical</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Chemical">
|
||||
<sheet>
|
||||
<widget name="web_ribbon" title="Reorder" bg_color="text-bg-warning" invisible="not needs_reorder"/>
|
||||
<div class="oe_title">
|
||||
<label for="name"/>
|
||||
<h1><field name="name" placeholder="e.g. 50% Sodium Hydroxide"/></h1>
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="sds_id"/>
|
||||
<field name="product_id"/>
|
||||
<field name="facility_id"/>
|
||||
<field name="location" placeholder="Acid Cabinet 2"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<field name="active" widget="boolean_toggle"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="container_size"/>
|
||||
<field name="container_uom" placeholder="L"/>
|
||||
<field name="quantity_on_hand"/>
|
||||
<field name="reorder_point"/>
|
||||
<field name="needs_reorder"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Incompatibilities">
|
||||
<field name="incompatible_with_ids" widget="many2many_tags"/>
|
||||
<p class="text-muted mt-2">
|
||||
Chemicals that must not be stored next to this one
|
||||
(e.g. acids vs bases, oxidizers vs flammables).
|
||||
</p>
|
||||
</page>
|
||||
<page string="Notes">
|
||||
<field name="notes"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<chatter/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_fp_chemical_search" model="ir.ui.view">
|
||||
<field name="name">fp.chemical.search</field>
|
||||
<field name="model">fusion.plating.chemical</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Chemicals">
|
||||
<field name="name"/>
|
||||
<field name="sds_id"/>
|
||||
<field name="facility_id"/>
|
||||
<field name="location"/>
|
||||
<filter string="Needs Reorder" name="filter_reorder" domain="[('needs_reorder', '=', True)]"/>
|
||||
<filter string="Archived" name="filter_inactive" domain="[('active', '=', False)]"/>
|
||||
<group>
|
||||
<filter string="Facility" name="group_facility" context="{'group_by': 'facility_id'}"/>
|
||||
<filter string="Location" name="group_location" context="{'group_by': 'location'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_fp_chemical" model="ir.actions.act_window">
|
||||
<field name="name">Chemicals</field>
|
||||
<field name="res_model">fusion.plating.chemical</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="search_view_id" ref="view_fp_chemical_search"/>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Add a chemical
|
||||
</p>
|
||||
<p>
|
||||
Track the physical chemicals stored on site, who supplies them,
|
||||
where they live, and when they need to be reordered.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
@@ -0,0 +1,109 @@
|
||||
<?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_exposure_monitoring_list" model="ir.ui.view">
|
||||
<field name="name">fp.exposure.monitoring.list</field>
|
||||
<field name="model">fusion.plating.exposure.monitoring</field>
|
||||
<field name="arch" type="xml">
|
||||
<list string="Exposure Monitoring" decoration-danger="result == 'exceed'" decoration-warning="result == 'approaching'">
|
||||
<field name="name"/>
|
||||
<field name="sample_date"/>
|
||||
<field name="employee_id"/>
|
||||
<field name="facility_id"/>
|
||||
<field name="sample_type"/>
|
||||
<field name="substance"/>
|
||||
<field name="concentration"/>
|
||||
<field name="uom"/>
|
||||
<field name="oel_limit"/>
|
||||
<field name="percent_of_oel"/>
|
||||
<field name="result"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_fp_exposure_monitoring_form" model="ir.ui.view">
|
||||
<field name="name">fp.exposure.monitoring.form</field>
|
||||
<field name="model">fusion.plating.exposure.monitoring</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Exposure Sample">
|
||||
<header>
|
||||
<field name="result" widget="statusbar" statusbar_visible="below,approaching,exceed"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<div class="oe_title">
|
||||
<label for="name"/>
|
||||
<h1><field name="name"/></h1>
|
||||
</div>
|
||||
<group>
|
||||
<group string="Sample">
|
||||
<field name="sample_date"/>
|
||||
<field name="sample_type"/>
|
||||
<field name="employee_id"/>
|
||||
<field name="facility_id"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
</group>
|
||||
<group string="Result">
|
||||
<field name="substance"/>
|
||||
<field name="concentration"/>
|
||||
<field name="uom" placeholder="mg/m3"/>
|
||||
<field name="oel_reference" placeholder="Ontario Reg. 833 TWA"/>
|
||||
<field name="oel_limit"/>
|
||||
<field name="percent_of_oel"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Notes">
|
||||
<field name="notes"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<chatter/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_fp_exposure_monitoring_search" model="ir.ui.view">
|
||||
<field name="name">fp.exposure.monitoring.search</field>
|
||||
<field name="model">fusion.plating.exposure.monitoring</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Exposure Samples">
|
||||
<field name="name"/>
|
||||
<field name="employee_id"/>
|
||||
<field name="facility_id"/>
|
||||
<field name="substance"/>
|
||||
<filter string="Below" name="filter_below" domain="[('result', '=', 'below')]"/>
|
||||
<filter string="Approaching" name="filter_approaching" domain="[('result', '=', 'approaching')]"/>
|
||||
<filter string="Exceeds" name="filter_exceed" domain="[('result', '=', 'exceed')]"/>
|
||||
<group>
|
||||
<filter string="Sample Type" name="group_sample_type" context="{'group_by': 'sample_type'}"/>
|
||||
<filter string="Substance" name="group_substance" context="{'group_by': 'substance'}"/>
|
||||
<filter string="Employee" name="group_employee" context="{'group_by': 'employee_id'}"/>
|
||||
<filter string="Result" name="group_result" context="{'group_by': 'result'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_fp_exposure_monitoring" model="ir.actions.act_window">
|
||||
<field name="name">Exposure Monitoring</field>
|
||||
<field name="res_model">fusion.plating.exposure.monitoring</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="search_view_id" ref="view_fp_exposure_monitoring_search"/>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Log an exposure sample
|
||||
</p>
|
||||
<p>
|
||||
Capture air, biological, noise and vibration sampling results
|
||||
and compare them automatically against the applicable
|
||||
Occupational Exposure Limit.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
161
fusion_plating/fusion_plating_safety/views/fp_incident_views.xml
Normal file
161
fusion_plating/fusion_plating_safety/views/fp_incident_views.xml
Normal file
@@ -0,0 +1,161 @@
|
||||
<?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_incident_list" model="ir.ui.view">
|
||||
<field name="name">fp.incident.list</field>
|
||||
<field name="model">fusion.plating.incident</field>
|
||||
<field name="arch" type="xml">
|
||||
<list string="Incident Register" decoration-danger="incident_type in ('injury', 'lost_time', 'medical')" decoration-warning="incident_type == 'first_aid'">
|
||||
<field name="name"/>
|
||||
<field name="incident_date"/>
|
||||
<field name="incident_type"/>
|
||||
<field name="facility_id"/>
|
||||
<field name="employee_id"/>
|
||||
<field name="location"/>
|
||||
<field name="lost_time_days"/>
|
||||
<field name="wsib_reportable"/>
|
||||
<field name="state"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_fp_incident_form" model="ir.ui.view">
|
||||
<field name="name">fp.incident.form</field>
|
||||
<field name="model">fusion.plating.incident</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Incident">
|
||||
<header>
|
||||
<button name="action_start_investigation" type="object" string="Start Investigation" invisible="state != 'draft'"/>
|
||||
<button name="action_close" type="object" string="Close" invisible="state != 'investigation'"/>
|
||||
<button name="action_reopen" type="object" string="Reopen" invisible="state != 'closed'"/>
|
||||
<field name="state" widget="statusbar" statusbar_visible="draft,investigation,closed"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<div class="oe_title">
|
||||
<label for="name"/>
|
||||
<h1><field name="name"/></h1>
|
||||
</div>
|
||||
<group>
|
||||
<group string="Incident">
|
||||
<field name="incident_date"/>
|
||||
<field name="incident_type"/>
|
||||
<field name="facility_id"/>
|
||||
<field name="location"/>
|
||||
<field name="employee_id"/>
|
||||
<field name="reported_by_id"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
</group>
|
||||
<group string="WSIB / Outcome">
|
||||
<field name="wsib_reportable"/>
|
||||
<field name="wsib_form_7_submitted" invisible="not wsib_reportable"/>
|
||||
<field name="lost_time_days"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Description">
|
||||
<field name="description"/>
|
||||
</page>
|
||||
<page string="Immediate Action">
|
||||
<field name="immediate_action"/>
|
||||
</page>
|
||||
<page string="Investigation">
|
||||
<field name="investigation"/>
|
||||
</page>
|
||||
<page string="Root Cause">
|
||||
<field name="root_cause"/>
|
||||
</page>
|
||||
<page string="Corrective Action">
|
||||
<field name="corrective_action"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<chatter/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_fp_incident_kanban" model="ir.ui.view">
|
||||
<field name="name">fp.incident.kanban</field>
|
||||
<field name="model">fusion.plating.incident</field>
|
||||
<field name="arch" type="xml">
|
||||
<kanban class="o_fp_incident_kanban">
|
||||
<field name="id"/>
|
||||
<field name="name"/>
|
||||
<field name="incident_type"/>
|
||||
<field name="incident_date"/>
|
||||
<field name="facility_id"/>
|
||||
<field name="employee_id"/>
|
||||
<field name="state"/>
|
||||
<templates>
|
||||
<t t-name="card">
|
||||
<div class="o_fp_card o_fp_incident_card" t-att-data-type="record.incident_type.raw_value" t-att-data-state="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="text-muted small"><field name="incident_type"/></div>
|
||||
</div>
|
||||
<i class="fa fa-exclamation-triangle text-muted" aria-hidden="true"/>
|
||||
</div>
|
||||
<div class="mt-2 small">
|
||||
<div><field name="incident_date"/></div>
|
||||
<div><field name="facility_id"/></div>
|
||||
<div><field name="employee_id"/></div>
|
||||
<span class="o_fp_badge mt-2 d-inline-block" t-att-data-state="record.state.raw_value">
|
||||
<field name="state"/>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_fp_incident_search" model="ir.ui.view">
|
||||
<field name="name">fp.incident.search</field>
|
||||
<field name="model">fusion.plating.incident</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Incidents">
|
||||
<field name="name"/>
|
||||
<field name="employee_id"/>
|
||||
<field name="facility_id"/>
|
||||
<field name="location"/>
|
||||
<filter string="Draft" name="filter_draft" domain="[('state', '=', 'draft')]"/>
|
||||
<filter string="Investigation" name="filter_investigation" domain="[('state', '=', 'investigation')]"/>
|
||||
<filter string="Closed" name="filter_closed" domain="[('state', '=', 'closed')]"/>
|
||||
<separator/>
|
||||
<filter string="WSIB Reportable" name="filter_wsib" domain="[('wsib_reportable', '=', True)]"/>
|
||||
<filter string="Lost-Time" name="filter_lost_time" domain="[('incident_type', '=', 'lost_time')]"/>
|
||||
<filter string="Near Miss" name="filter_near_miss" domain="[('incident_type', '=', 'near_miss')]"/>
|
||||
<group>
|
||||
<filter string="Type" name="group_type" context="{'group_by': 'incident_type'}"/>
|
||||
<filter string="Facility" name="group_facility" context="{'group_by': 'facility_id'}"/>
|
||||
<filter string="Status" name="group_state" context="{'group_by': 'state'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_fp_incident" model="ir.actions.act_window">
|
||||
<field name="name">Incident Register</field>
|
||||
<field name="res_model">fusion.plating.incident</field>
|
||||
<field name="view_mode">kanban,list,form</field>
|
||||
<field name="search_view_id" ref="view_fp_incident_search"/>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Log an incident, near-miss or first-aid event
|
||||
</p>
|
||||
<p>
|
||||
Capture every safety event — even close calls — and walk it
|
||||
through investigation to closure with a documented root
|
||||
cause and corrective action.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
186
fusion_plating/fusion_plating_safety/views/fp_jhsc_views.xml
Normal file
186
fusion_plating/fusion_plating_safety/views/fp_jhsc_views.xml
Normal file
@@ -0,0 +1,186 @@
|
||||
<?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>
|
||||
|
||||
<!-- ===================================================================== -->
|
||||
<!-- JHSC -->
|
||||
<!-- ===================================================================== -->
|
||||
<record id="view_fp_jhsc_list" model="ir.ui.view">
|
||||
<field name="name">fp.jhsc.list</field>
|
||||
<field name="model">fusion.plating.jhsc</field>
|
||||
<field name="arch" type="xml">
|
||||
<list string="JHSC">
|
||||
<field name="name"/>
|
||||
<field name="facility_id"/>
|
||||
<field name="member_count"/>
|
||||
<field name="meeting_count"/>
|
||||
<field name="active" widget="boolean_toggle"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_fp_jhsc_form" model="ir.ui.view">
|
||||
<field name="name">fp.jhsc.form</field>
|
||||
<field name="model">fusion.plating.jhsc</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="JHSC">
|
||||
<sheet>
|
||||
<div class="oe_title">
|
||||
<label for="name"/>
|
||||
<h1><field name="name" placeholder="e.g. Site A JHSC"/></h1>
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="facility_id"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<field name="active" widget="boolean_toggle"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="member_count"/>
|
||||
<field name="meeting_count"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Members">
|
||||
<field name="member_ids" widget="many2many_tags"/>
|
||||
</page>
|
||||
<page string="Worker Representatives">
|
||||
<field name="worker_rep_ids" widget="many2many_tags"/>
|
||||
</page>
|
||||
<page string="Management Representatives">
|
||||
<field name="mgmt_rep_ids" widget="many2many_tags"/>
|
||||
</page>
|
||||
<page string="Meetings">
|
||||
<field name="meeting_ids">
|
||||
<list>
|
||||
<field name="meeting_date"/>
|
||||
<field name="name"/>
|
||||
<field name="state"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<chatter/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_fp_jhsc_search" model="ir.ui.view">
|
||||
<field name="name">fp.jhsc.search</field>
|
||||
<field name="model">fusion.plating.jhsc</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="JHSC">
|
||||
<field name="name"/>
|
||||
<field name="facility_id"/>
|
||||
<filter string="Archived" name="filter_inactive" domain="[('active', '=', False)]"/>
|
||||
<group>
|
||||
<filter string="Facility" name="group_facility" context="{'group_by': 'facility_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_fp_jhsc" model="ir.actions.act_window">
|
||||
<field name="name">JHSC</field>
|
||||
<field name="res_model">fusion.plating.jhsc</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="search_view_id" ref="view_fp_jhsc_search"/>
|
||||
</record>
|
||||
|
||||
<!-- ===================================================================== -->
|
||||
<!-- JHSC Meetings -->
|
||||
<!-- ===================================================================== -->
|
||||
<record id="view_fp_jhsc_meeting_list" model="ir.ui.view">
|
||||
<field name="name">fp.jhsc.meeting.list</field>
|
||||
<field name="model">fusion.plating.jhsc.meeting</field>
|
||||
<field name="arch" type="xml">
|
||||
<list string="JHSC Meetings">
|
||||
<field name="meeting_date"/>
|
||||
<field name="name"/>
|
||||
<field name="jhsc_id"/>
|
||||
<field name="facility_id"/>
|
||||
<field name="state"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_fp_jhsc_meeting_form" model="ir.ui.view">
|
||||
<field name="name">fp.jhsc.meeting.form</field>
|
||||
<field name="model">fusion.plating.jhsc.meeting</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="JHSC Meeting">
|
||||
<header>
|
||||
<button name="action_mark_held" type="object" string="Mark Held" invisible="state != 'planned'"/>
|
||||
<button name="action_post_minutes" type="object" string="Post Minutes" invisible="state not in ('held',)"/>
|
||||
<button name="action_close" type="object" string="Close" invisible="state not in ('minutes_ready',)"/>
|
||||
<field name="state" widget="statusbar" statusbar_visible="planned,held,minutes_ready,closed"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<div class="oe_title">
|
||||
<label for="name"/>
|
||||
<h1><field name="name" placeholder="e.g. Q1 2026 JHSC Meeting"/></h1>
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="jhsc_id"/>
|
||||
<field name="meeting_date"/>
|
||||
<field name="facility_id"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Attendees">
|
||||
<field name="attendee_ids" widget="many2many_tags"/>
|
||||
</page>
|
||||
<page string="Agenda">
|
||||
<field name="agenda"/>
|
||||
</page>
|
||||
<page string="Minutes">
|
||||
<field name="minutes"/>
|
||||
</page>
|
||||
<page string="Action Items">
|
||||
<field name="action_items"/>
|
||||
</page>
|
||||
<page string="Attachments">
|
||||
<field name="attachment_ids" widget="many2many_binary"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<chatter/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_fp_jhsc_meeting_search" model="ir.ui.view">
|
||||
<field name="name">fp.jhsc.meeting.search</field>
|
||||
<field name="model">fusion.plating.jhsc.meeting</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="JHSC Meetings">
|
||||
<field name="name"/>
|
||||
<field name="jhsc_id"/>
|
||||
<field name="facility_id"/>
|
||||
<filter string="Planned" name="filter_planned" domain="[('state', '=', 'planned')]"/>
|
||||
<filter string="Held" name="filter_held" domain="[('state', '=', 'held')]"/>
|
||||
<filter string="Minutes Ready" name="filter_minutes" domain="[('state', '=', 'minutes_ready')]"/>
|
||||
<filter string="Closed" name="filter_closed" domain="[('state', '=', 'closed')]"/>
|
||||
<group>
|
||||
<filter string="Committee" name="group_jhsc" context="{'group_by': 'jhsc_id'}"/>
|
||||
<filter string="Status" name="group_state" context="{'group_by': 'state'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_fp_jhsc_meeting" model="ir.actions.act_window">
|
||||
<field name="name">JHSC Meetings</field>
|
||||
<field name="res_model">fusion.plating.jhsc.meeting</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="search_view_id" ref="view_fp_jhsc_meeting_search"/>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
71
fusion_plating/fusion_plating_safety/views/fp_menu.xml
Normal file
71
fusion_plating/fusion_plating_safety/views/fp_menu.xml
Normal file
@@ -0,0 +1,71 @@
|
||||
<?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>
|
||||
|
||||
<!-- ===== SAFETY (top-level under Plating) ===== -->
|
||||
<menuitem id="menu_fp_safety_root"
|
||||
name="Safety"
|
||||
parent="fusion_plating.menu_fp_root"
|
||||
sequence="45"
|
||||
groups="fusion_plating.group_fusion_plating_operator"/>
|
||||
|
||||
<menuitem id="menu_fp_safety_sds"
|
||||
name="SDS Library"
|
||||
parent="menu_fp_safety_root"
|
||||
action="action_fp_sds"
|
||||
sequence="10"/>
|
||||
|
||||
<menuitem id="menu_fp_safety_training"
|
||||
name="Training Records"
|
||||
parent="menu_fp_safety_root"
|
||||
action="action_fp_training_record"
|
||||
sequence="20"/>
|
||||
|
||||
<menuitem id="menu_fp_safety_exposure"
|
||||
name="Exposure Monitoring"
|
||||
parent="menu_fp_safety_root"
|
||||
action="action_fp_exposure_monitoring"
|
||||
sequence="30"/>
|
||||
|
||||
<menuitem id="menu_fp_safety_jhsc"
|
||||
name="JHSC"
|
||||
parent="menu_fp_safety_root"
|
||||
action="action_fp_jhsc"
|
||||
sequence="40"/>
|
||||
|
||||
<menuitem id="menu_fp_safety_jhsc_meetings"
|
||||
name="JHSC Meetings"
|
||||
parent="menu_fp_safety_root"
|
||||
action="action_fp_jhsc_meeting"
|
||||
sequence="45"/>
|
||||
|
||||
<menuitem id="menu_fp_safety_incidents"
|
||||
name="Incident Register"
|
||||
parent="menu_fp_safety_root"
|
||||
action="action_fp_incident"
|
||||
sequence="50"/>
|
||||
|
||||
<menuitem id="menu_fp_safety_ppe"
|
||||
name="PPE Issuance"
|
||||
parent="menu_fp_safety_root"
|
||||
action="action_fp_ppe_issuance"
|
||||
sequence="60"/>
|
||||
|
||||
<!-- ===== Configuration (under existing Plating > Configuration) ===== -->
|
||||
<menuitem id="menu_fp_safety_training_types"
|
||||
name="Training Types"
|
||||
parent="fusion_plating.menu_fp_config"
|
||||
action="action_fp_training_type"
|
||||
sequence="60"/>
|
||||
|
||||
<menuitem id="menu_fp_safety_chemicals"
|
||||
name="Chemicals"
|
||||
parent="fusion_plating.menu_fp_config"
|
||||
action="action_fp_chemical"
|
||||
sequence="70"/>
|
||||
|
||||
</odoo>
|
||||
@@ -0,0 +1,75 @@
|
||||
<?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_ppe_issuance_list" model="ir.ui.view">
|
||||
<field name="name">fp.ppe.issuance.list</field>
|
||||
<field name="model">fusion.plating.ppe.issuance</field>
|
||||
<field name="arch" type="xml">
|
||||
<list string="PPE Issuance">
|
||||
<field name="employee_id"/>
|
||||
<field name="ppe_type"/>
|
||||
<field name="size"/>
|
||||
<field name="quantity"/>
|
||||
<field name="issue_date"/>
|
||||
<field name="next_replacement"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_fp_ppe_issuance_form" model="ir.ui.view">
|
||||
<field name="name">fp.ppe.issuance.form</field>
|
||||
<field name="model">fusion.plating.ppe.issuance</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="PPE Issuance">
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="employee_id"/>
|
||||
<field name="ppe_type"/>
|
||||
<field name="size"/>
|
||||
<field name="quantity"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="issue_date"/>
|
||||
<field name="next_replacement"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Notes">
|
||||
<field name="notes"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<chatter/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_fp_ppe_issuance_search" model="ir.ui.view">
|
||||
<field name="name">fp.ppe.issuance.search</field>
|
||||
<field name="model">fusion.plating.ppe.issuance</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="PPE Issuance">
|
||||
<field name="employee_id"/>
|
||||
<field name="ppe_type"/>
|
||||
<group>
|
||||
<filter string="Employee" name="group_employee" context="{'group_by': 'employee_id'}"/>
|
||||
<filter string="PPE Type" name="group_ppe_type" context="{'group_by': 'ppe_type'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_fp_ppe_issuance" model="ir.actions.act_window">
|
||||
<field name="name">PPE Issuance</field>
|
||||
<field name="res_model">fusion.plating.ppe.issuance</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="search_view_id" ref="view_fp_ppe_issuance_search"/>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
165
fusion_plating/fusion_plating_safety/views/fp_sds_views.xml
Normal file
165
fusion_plating/fusion_plating_safety/views/fp_sds_views.xml
Normal file
@@ -0,0 +1,165 @@
|
||||
<?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_sds_list" model="ir.ui.view">
|
||||
<field name="name">fp.sds.list</field>
|
||||
<field name="model">fusion.plating.sds</field>
|
||||
<field name="arch" type="xml">
|
||||
<list string="Safety Data Sheets" decoration-danger="state == 'expired'" decoration-warning="state == 'expiring_soon'" decoration-muted="state == 'withdrawn'">
|
||||
<field name="name"/>
|
||||
<field name="product_name"/>
|
||||
<field name="supplier_name"/>
|
||||
<field name="cas_number"/>
|
||||
<field name="version"/>
|
||||
<field name="issue_date"/>
|
||||
<field name="expiry_date"/>
|
||||
<field name="hazard_class"/>
|
||||
<field name="language"/>
|
||||
<field name="state"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_fp_sds_form" model="ir.ui.view">
|
||||
<field name="name">fp.sds.form</field>
|
||||
<field name="model">fusion.plating.sds</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Safety Data Sheet">
|
||||
<header>
|
||||
<button name="action_mark_withdrawn" type="object" string="Mark Withdrawn" invisible="withdrawn"/>
|
||||
<button name="action_mark_active" type="object" string="Mark Active" invisible="not withdrawn"/>
|
||||
<field name="state" widget="statusbar" statusbar_visible="current,expiring_soon,expired,withdrawn"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<widget name="web_ribbon" title="Withdrawn" bg_color="text-bg-secondary" invisible="not withdrawn"/>
|
||||
<div class="oe_title">
|
||||
<label for="name"/>
|
||||
<h1><field name="name" placeholder="e.g. Acme Bright Acid Copper"/></h1>
|
||||
</div>
|
||||
<group>
|
||||
<group string="Product">
|
||||
<field name="product_name"/>
|
||||
<field name="cas_number"/>
|
||||
<field name="hazard_class"/>
|
||||
<field name="ghs_pictograms" placeholder="GHS01,GHS05,GHS07"/>
|
||||
<field name="language"/>
|
||||
</group>
|
||||
<group string="Supplier & Revision">
|
||||
<field name="supplier_id"/>
|
||||
<field name="supplier_name"/>
|
||||
<field name="version"/>
|
||||
<field name="issue_date"/>
|
||||
<field name="expiry_date"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<field name="active" widget="boolean_toggle"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Document">
|
||||
<group>
|
||||
<field name="attachment_id"/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Notes">
|
||||
<field name="notes"/>
|
||||
</page>
|
||||
<page string="Linked Chemicals">
|
||||
<field name="chemical_ids">
|
||||
<list>
|
||||
<field name="name"/>
|
||||
<field name="facility_id"/>
|
||||
<field name="location"/>
|
||||
<field name="quantity_on_hand"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<chatter/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_fp_sds_kanban" model="ir.ui.view">
|
||||
<field name="name">fp.sds.kanban</field>
|
||||
<field name="model">fusion.plating.sds</field>
|
||||
<field name="arch" type="xml">
|
||||
<kanban class="o_fp_sds_kanban">
|
||||
<field name="id"/>
|
||||
<field name="name"/>
|
||||
<field name="product_name"/>
|
||||
<field name="supplier_name"/>
|
||||
<field name="hazard_class"/>
|
||||
<field name="state"/>
|
||||
<field name="expiry_date"/>
|
||||
<templates>
|
||||
<t t-name="card">
|
||||
<div class="o_fp_card o_fp_sds_card" t-att-data-hazard="record.hazard_class.raw_value" t-att-data-state="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="text-muted small"><field name="product_name"/></div>
|
||||
</div>
|
||||
<i class="fa fa-flask text-muted" aria-hidden="true"/>
|
||||
</div>
|
||||
<div class="mt-2 small">
|
||||
<div><field name="supplier_name"/></div>
|
||||
<div class="text-muted">Expires: <field name="expiry_date"/></div>
|
||||
<span class="o_fp_badge mt-2 d-inline-block" t-att-data-state="record.state.raw_value">
|
||||
<field name="state"/>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_fp_sds_search" model="ir.ui.view">
|
||||
<field name="name">fp.sds.search</field>
|
||||
<field name="model">fusion.plating.sds</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Safety Data Sheets">
|
||||
<field name="name"/>
|
||||
<field name="product_name"/>
|
||||
<field name="supplier_name"/>
|
||||
<field name="cas_number"/>
|
||||
<filter string="Current" name="filter_current" domain="[('state', '=', 'current')]"/>
|
||||
<filter string="Expiring Soon" name="filter_expiring" domain="[('state', '=', 'expiring_soon')]"/>
|
||||
<filter string="Expired" name="filter_expired" domain="[('state', '=', 'expired')]"/>
|
||||
<filter string="Withdrawn" name="filter_withdrawn" domain="[('state', '=', 'withdrawn')]"/>
|
||||
<separator/>
|
||||
<filter string="Archived" name="filter_inactive" domain="[('active', '=', False)]"/>
|
||||
<group>
|
||||
<filter string="Hazard Class" name="group_hazard" context="{'group_by': 'hazard_class'}"/>
|
||||
<filter string="Status" name="group_state" context="{'group_by': 'state'}"/>
|
||||
<filter string="Supplier" name="group_supplier" context="{'group_by': 'supplier_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_fp_sds" model="ir.actions.act_window">
|
||||
<field name="name">SDS Library</field>
|
||||
<field name="res_model">fusion.plating.sds</field>
|
||||
<field name="view_mode">kanban,list,form</field>
|
||||
<field name="search_view_id" ref="view_fp_sds_search"/>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Add a Safety Data Sheet
|
||||
</p>
|
||||
<p>
|
||||
Maintain a current SDS for every hazardous product on site.
|
||||
Under WHMIS / GHS each SDS is valid for three years from
|
||||
its issue date — refresh from the supplier before expiry.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
@@ -0,0 +1,131 @@
|
||||
<?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_training_record_list" model="ir.ui.view">
|
||||
<field name="name">fp.training.record.list</field>
|
||||
<field name="model">fusion.plating.training.record</field>
|
||||
<field name="arch" type="xml">
|
||||
<list string="Training Records" decoration-danger="state == 'expired'" decoration-warning="state == 'expiring_soon'">
|
||||
<field name="employee_id"/>
|
||||
<field name="training_type_id"/>
|
||||
<field name="completion_date"/>
|
||||
<field name="expiry_date"/>
|
||||
<field name="trainer"/>
|
||||
<field name="certificate_ref"/>
|
||||
<field name="state"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_fp_training_record_form" model="ir.ui.view">
|
||||
<field name="name">fp.training.record.form</field>
|
||||
<field name="model">fusion.plating.training.record</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Training Record">
|
||||
<header>
|
||||
<field name="state" widget="statusbar" statusbar_visible="current,expiring_soon,expired"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="employee_id"/>
|
||||
<field name="training_type_id"/>
|
||||
<field name="completion_date"/>
|
||||
<field name="expiry_date"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="trainer"/>
|
||||
<field name="certificate_ref"/>
|
||||
<field name="score"/>
|
||||
<field name="attachment_id"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Notes">
|
||||
<field name="notes"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<chatter/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_fp_training_record_kanban" model="ir.ui.view">
|
||||
<field name="name">fp.training.record.kanban</field>
|
||||
<field name="model">fusion.plating.training.record</field>
|
||||
<field name="arch" type="xml">
|
||||
<kanban class="o_fp_training_kanban">
|
||||
<field name="id"/>
|
||||
<field name="employee_id"/>
|
||||
<field name="training_type_id"/>
|
||||
<field name="completion_date"/>
|
||||
<field name="expiry_date"/>
|
||||
<field name="state"/>
|
||||
<templates>
|
||||
<t t-name="card">
|
||||
<div class="o_fp_card o_fp_training_card" t-att-data-state="record.state.raw_value">
|
||||
<div class="d-flex align-items-start justify-content-between">
|
||||
<div>
|
||||
<strong class="o_fp_card_title"><field name="employee_id"/></strong>
|
||||
<div class="text-muted small"><field name="training_type_id"/></div>
|
||||
</div>
|
||||
<i class="fa fa-graduation-cap text-muted" aria-hidden="true"/>
|
||||
</div>
|
||||
<div class="mt-2 small">
|
||||
<div>Completed: <field name="completion_date"/></div>
|
||||
<div>Expires: <field name="expiry_date"/></div>
|
||||
<span class="o_fp_badge mt-2 d-inline-block" t-att-data-state="record.state.raw_value">
|
||||
<field name="state"/>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_fp_training_record_search" model="ir.ui.view">
|
||||
<field name="name">fp.training.record.search</field>
|
||||
<field name="model">fusion.plating.training.record</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Training Records">
|
||||
<field name="employee_id"/>
|
||||
<field name="training_type_id"/>
|
||||
<field name="certificate_ref"/>
|
||||
<filter string="Current" name="filter_current" domain="[('state', '=', 'current')]"/>
|
||||
<filter string="Expiring Soon" name="filter_expiring" domain="[('state', '=', 'expiring_soon')]"/>
|
||||
<filter string="Expired" name="filter_expired" domain="[('state', '=', 'expired')]"/>
|
||||
<group>
|
||||
<filter string="Employee" name="group_employee" context="{'group_by': 'employee_id'}"/>
|
||||
<filter string="Training Type" name="group_type" context="{'group_by': 'training_type_id'}"/>
|
||||
<filter string="Status" name="group_state" context="{'group_by': 'state'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_fp_training_record" model="ir.actions.act_window">
|
||||
<field name="name">Training Records</field>
|
||||
<field name="res_model">fusion.plating.training.record</field>
|
||||
<field name="view_mode">kanban,list,form</field>
|
||||
<field name="search_view_id" ref="view_fp_training_record_search"/>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Log a training completion
|
||||
</p>
|
||||
<p>
|
||||
Build the shop training matrix one completion at a time.
|
||||
Records expire automatically based on the training type's
|
||||
validity window.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
@@ -0,0 +1,77 @@
|
||||
<?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_training_type_list" model="ir.ui.view">
|
||||
<field name="name">fp.training.type.list</field>
|
||||
<field name="model">fusion.plating.training.type</field>
|
||||
<field name="arch" type="xml">
|
||||
<list string="Training Types">
|
||||
<field name="code"/>
|
||||
<field name="name"/>
|
||||
<field name="category"/>
|
||||
<field name="validity_months"/>
|
||||
<field name="required_for_roles"/>
|
||||
<field name="active" widget="boolean_toggle"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_fp_training_type_form" model="ir.ui.view">
|
||||
<field name="name">fp.training.type.form</field>
|
||||
<field name="model">fusion.plating.training.type</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Training Type">
|
||||
<sheet>
|
||||
<div class="oe_title">
|
||||
<label for="name"/>
|
||||
<h1><field name="name" placeholder="e.g. WHMIS 2015"/></h1>
|
||||
<div class="text-muted"><field name="code" placeholder="WHMIS"/></div>
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="category"/>
|
||||
<field name="validity_months"/>
|
||||
<field name="active" widget="boolean_toggle"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="required_for_roles"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Description">
|
||||
<field name="description"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_fp_training_type_search" model="ir.ui.view">
|
||||
<field name="name">fp.training.type.search</field>
|
||||
<field name="model">fusion.plating.training.type</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Training Types">
|
||||
<field name="name"/>
|
||||
<field name="code"/>
|
||||
<filter string="Archived" name="filter_inactive" domain="[('active', '=', False)]"/>
|
||||
<group>
|
||||
<filter string="Category" name="group_category" context="{'group_by': 'category'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_fp_training_type" model="ir.actions.act_window">
|
||||
<field name="name">Training Types</field>
|
||||
<field name="res_model">fusion.plating.training.type</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="search_view_id" ref="view_fp_training_type_search"/>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
@@ -0,0 +1,82 @@
|
||||
<?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_hr_employee_form_inherit_fp_safety" model="ir.ui.view">
|
||||
<field name="name">hr.employee.form.inherit.fp.safety</field>
|
||||
<field name="model">hr.employee</field>
|
||||
<field name="inherit_id" ref="hr.view_employee_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//notebook" position="inside">
|
||||
<page string="Safety" name="fp_safety">
|
||||
<group>
|
||||
<group>
|
||||
<field name="x_fc_training_current"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="x_fc_training_count"/>
|
||||
<field name="x_fc_exposure_count"/>
|
||||
<field name="x_fc_incident_count"/>
|
||||
<field name="x_fc_ppe_count"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Training">
|
||||
<field name="x_fc_training_ids">
|
||||
<list>
|
||||
<field name="training_type_id"/>
|
||||
<field name="completion_date"/>
|
||||
<field name="expiry_date"/>
|
||||
<field name="trainer"/>
|
||||
<field name="certificate_ref"/>
|
||||
<field name="state"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Exposure">
|
||||
<field name="x_fc_exposure_ids">
|
||||
<list>
|
||||
<field name="name"/>
|
||||
<field name="sample_date"/>
|
||||
<field name="sample_type"/>
|
||||
<field name="substance"/>
|
||||
<field name="concentration"/>
|
||||
<field name="oel_limit"/>
|
||||
<field name="percent_of_oel"/>
|
||||
<field name="result"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Incidents">
|
||||
<field name="x_fc_incident_ids">
|
||||
<list>
|
||||
<field name="name"/>
|
||||
<field name="incident_date"/>
|
||||
<field name="incident_type"/>
|
||||
<field name="facility_id"/>
|
||||
<field name="state"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
<page string="PPE Issued">
|
||||
<field name="x_fc_ppe_ids">
|
||||
<list>
|
||||
<field name="issue_date"/>
|
||||
<field name="ppe_type"/>
|
||||
<field name="size"/>
|
||||
<field name="quantity"/>
|
||||
<field name="next_replacement"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</page>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user