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,86 @@
<?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_cgp_access_log_list" model="ir.ui.view">
<field name="name">fp.cgp.access.log.list</field>
<field name="model">fusion.plating.cgp.access.log</field>
<field name="arch" type="xml">
<list string="CGP Access Log" editable="top">
<field name="access_datetime"/>
<field name="access_point"/>
<field name="entry_exit"/>
<field name="access_type"/>
<field name="employee_id"/>
<field name="related_visitor_id"/>
<field name="notes" optional="hide"/>
</list>
</field>
</record>
<record id="view_fp_cgp_access_log_form" model="ir.ui.view">
<field name="name">fp.cgp.access.log.form</field>
<field name="model">fusion.plating.cgp.access.log</field>
<field name="arch" type="xml">
<form string="CGP Access Log Entry">
<sheet>
<group>
<group>
<field name="access_datetime"/>
<field name="access_point"/>
<field name="entry_exit"/>
<field name="access_type"/>
</group>
<group>
<field name="employee_id"/>
<field name="related_visitor_id"/>
<field name="notes"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="view_fp_cgp_access_log_search" model="ir.ui.view">
<field name="name">fp.cgp.access.log.search</field>
<field name="model">fusion.plating.cgp.access.log</field>
<field name="arch" type="xml">
<search string="Access Log">
<field name="access_point"/>
<field name="employee_id"/>
<field name="related_visitor_id"/>
<separator/>
<filter string="Entries" name="entries"
domain="[('entry_exit','=','entry')]"/>
<filter string="Exits" name="exits"
domain="[('entry_exit','=','exit')]"/>
<separator/>
<filter string="Employees" name="emp_type"
domain="[('access_type','=','employee')]"/>
<filter string="Escorted Visitors" name="esc_vis"
domain="[('access_type','=','visitor_escorted')]"/>
<filter string="Unescorted Visitors" name="unesc_vis"
domain="[('access_type','=','visitor_unescorted')]"/>
<group>
<filter string="Access Point" name="group_point"
context="{'group_by':'access_point'}"/>
<filter string="Employee" name="group_employee"
context="{'group_by':'employee_id'}"/>
</group>
</search>
</field>
</record>
<record id="action_fp_cgp_access_log" model="ir.actions.act_window">
<field name="name">Access Log</field>
<field name="res_model">fusion.plating.cgp.access.log</field>
<field name="view_mode">list,form</field>
<field name="search_view_id" ref="view_fp_cgp_access_log_search"/>
</record>
</odoo>

View 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_cgp_ai_list" model="ir.ui.view">
<field name="name">fp.cgp.ai.list</field>
<field name="model">fusion.plating.cgp.authorized.individual</field>
<field name="arch" type="xml">
<list string="Authorized Individuals"
decoration-success="state == 'active'"
decoration-muted="state == 'inactive'"
decoration-warning="state == 'suspended'"
decoration-danger="state == 'revoked'">
<field name="name"/>
<field name="employee_id"/>
<field name="appointment_date"/>
<field name="psa_level"/>
<field name="psa_expiry"/>
<field name="training_completed_date"/>
<field name="state" widget="badge"
decoration-success="state == 'active'"
decoration-warning="state == 'suspended'"
decoration-danger="state == 'revoked'"
decoration-muted="state == 'inactive'"/>
</list>
</field>
</record>
<record id="view_fp_cgp_ai_form" model="ir.ui.view">
<field name="name">fp.cgp.ai.form</field>
<field name="model">fusion.plating.cgp.authorized.individual</field>
<field name="arch" type="xml">
<form string="Authorized Individual">
<header>
<button name="action_activate" string="Activate" type="object"
class="oe_highlight"
invisible="state == 'active'"/>
<button name="action_suspend" string="Suspend" type="object"
invisible="state not in ('active',)"/>
<button name="action_revoke" string="Revoke" type="object"
invisible="state == 'revoked'"/>
<button name="action_deactivate" string="Deactivate" type="object"
invisible="state != 'active'"/>
<field name="state" widget="statusbar"
statusbar_visible="active,inactive,suspended,revoked"/>
</header>
<sheet>
<div class="oe_title">
<label for="name"/>
<h1><field name="name"/></h1>
</div>
<group>
<group string="Appointment">
<field name="employee_id"/>
<field name="appointment_date"/>
<field name="training_completed_date"/>
</group>
<group string="PSA">
<field name="psa_level"/>
<field name="psa_expiry"/>
</group>
</group>
<notebook>
<page string="Notes">
<field name="notes"/>
</page>
</notebook>
</sheet>
<chatter/>
</form>
</field>
</record>
<record id="view_fp_cgp_ai_search" model="ir.ui.view">
<field name="name">fp.cgp.ai.search</field>
<field name="model">fusion.plating.cgp.authorized.individual</field>
<field name="arch" type="xml">
<search string="Authorized Individuals">
<field name="name"/>
<field name="employee_id"/>
<separator/>
<filter string="Active" name="active_ai"
domain="[('state','=','active')]"/>
<filter string="Suspended" name="suspended"
domain="[('state','=','suspended')]"/>
<filter string="Revoked" name="revoked"
domain="[('state','=','revoked')]"/>
<group>
<filter string="Status" name="group_state"
context="{'group_by':'state'}"/>
<filter string="PSA Level" name="group_level"
context="{'group_by':'psa_level'}"/>
</group>
</search>
</field>
</record>
<record id="action_fp_cgp_ai" model="ir.actions.act_window">
<field name="name">Authorized Individuals</field>
<field name="res_model">fusion.plating.cgp.authorized.individual</field>
<field name="view_mode">list,form</field>
<field name="search_view_id" ref="view_fp_cgp_ai_search"/>
</record>
</odoo>

View File

@@ -0,0 +1,113 @@
<?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_cgp_controlled_good_list" model="ir.ui.view">
<field name="name">fp.cgp.controlled.good.list</field>
<field name="model">fusion.plating.cgp.controlled.good</field>
<field name="arch" type="xml">
<list string="Controlled Goods"
decoration-success="state == 'in_storage'"
decoration-info="state == 'received'"
decoration-warning="state == 'in_process'"
decoration-muted="state in ('shipped','destroyed')">
<field name="name"/>
<field name="schedule_category"/>
<field name="customer_id"/>
<field name="current_quantity"/>
<field name="location"/>
<field name="state" widget="badge"
decoration-info="state == 'received'"
decoration-warning="state == 'in_process'"
decoration-success="state == 'in_storage'"
decoration-muted="state in ('shipped','destroyed')"/>
</list>
</field>
</record>
<record id="view_fp_cgp_controlled_good_form" model="ir.ui.view">
<field name="name">fp.cgp.controlled.good.form</field>
<field name="model">fusion.plating.cgp.controlled.good</field>
<field name="arch" type="xml">
<form string="Controlled Good" class="o_fp_cgp_classified">
<header>
<button name="action_mark_in_process" string="In Process"
type="object"
invisible="state == 'in_process'"/>
<button name="action_mark_in_storage" string="In Storage"
type="object"
invisible="state == 'in_storage'"/>
<button name="action_mark_shipped" string="Shipped" type="object"
invisible="state == 'shipped'"/>
<button name="action_mark_destroyed" string="Destroyed"
type="object"
invisible="state == 'destroyed'"/>
<field name="state" widget="statusbar"
statusbar_visible="received,in_process,in_storage,shipped"/>
</header>
<sheet>
<div class="oe_title">
<label for="name"/>
<h1><field name="name"/></h1>
</div>
<span class="o_fp_cgp_restricted_badge">Controlled Good</span>
<group>
<group string="Classification">
<field name="schedule_category"/>
<field name="customer_id"/>
</group>
<group string="Inventory">
<field name="current_quantity"/>
<field name="location"/>
</group>
</group>
<notebook>
<page string="Description">
<field name="description"/>
</page>
</notebook>
</sheet>
<chatter/>
</form>
</field>
</record>
<record id="view_fp_cgp_controlled_good_search" model="ir.ui.view">
<field name="name">fp.cgp.controlled.good.search</field>
<field name="model">fusion.plating.cgp.controlled.good</field>
<field name="arch" type="xml">
<search string="Controlled Goods">
<field name="name"/>
<field name="schedule_category"/>
<field name="customer_id"/>
<separator/>
<filter string="Received" name="received"
domain="[('state','=','received')]"/>
<filter string="In Process" name="in_process"
domain="[('state','=','in_process')]"/>
<filter string="In Storage" name="in_storage"
domain="[('state','=','in_storage')]"/>
<filter string="Shipped" name="shipped"
domain="[('state','=','shipped')]"/>
<group>
<filter string="Status" name="group_state"
context="{'group_by':'state'}"/>
<filter string="Customer" name="group_customer"
context="{'group_by':'customer_id'}"/>
</group>
</search>
</field>
</record>
<record id="action_fp_cgp_controlled_good" model="ir.actions.act_window">
<field name="name">Controlled Goods</field>
<field name="res_model">fusion.plating.cgp.controlled.good</field>
<field name="view_mode">list,form</field>
<field name="search_view_id" ref="view_fp_cgp_controlled_good_search"/>
</record>
</odoo>

View File

@@ -0,0 +1,120 @@
<?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_cgp_psa_list" model="ir.ui.view">
<field name="name">fp.cgp.psa.list</field>
<field name="model">fusion.plating.cgp.psa</field>
<field name="arch" type="xml">
<list string="Personnel Security Assessments"
decoration-success="state == 'completed'"
decoration-danger="state == 'expired'"
decoration-info="state == 'in_progress'">
<field name="name"/>
<field name="employee_id"/>
<field name="assessment_date"/>
<field name="result"/>
<field name="expiry_date"/>
<field name="assessed_by_id"/>
<field name="state" widget="badge"
decoration-success="state == 'completed'"
decoration-info="state == 'in_progress'"
decoration-danger="state == 'expired'"
decoration-muted="state == 'draft'"/>
</list>
</field>
</record>
<record id="view_fp_cgp_psa_form" model="ir.ui.view">
<field name="name">fp.cgp.psa.form</field>
<field name="model">fusion.plating.cgp.psa</field>
<field name="arch" type="xml">
<form string="Personnel Security Assessment" class="o_fp_cgp_classified">
<header>
<button name="action_start" string="Start" type="object"
class="oe_highlight"
invisible="state != 'draft'"/>
<button name="action_complete" string="Complete" type="object"
class="oe_highlight"
invisible="state != 'in_progress'"/>
<button name="action_expire" string="Mark Expired" type="object"
invisible="state != 'completed'"/>
<button name="action_reset_to_draft" string="Reset" type="object"
invisible="state == 'draft'"/>
<field name="state" widget="statusbar"
statusbar_visible="draft,in_progress,completed,expired"/>
</header>
<sheet>
<div class="oe_title">
<label for="name"/>
<h1><field name="name"/></h1>
</div>
<span class="o_fp_cgp_restricted_badge">Restricted — PSA</span>
<group>
<group string="Assessment">
<field name="employee_id"/>
<field name="assessed_by_id"/>
<field name="assessment_date"/>
<field name="expiry_date"/>
</group>
<group string="Outcome">
<field name="result"/>
</group>
</group>
<notebook>
<page string="Internal Notes">
<field name="notes"/>
</page>
<page string="Supporting Documents">
<field name="document_ids" widget="many2many_binary"/>
</page>
</notebook>
</sheet>
<chatter/>
</form>
</field>
</record>
<record id="view_fp_cgp_psa_search" model="ir.ui.view">
<field name="name">fp.cgp.psa.search</field>
<field name="model">fusion.plating.cgp.psa</field>
<field name="arch" type="xml">
<search string="PSAs">
<field name="name"/>
<field name="employee_id"/>
<separator/>
<filter string="Completed" name="completed"
domain="[('state','=','completed')]"/>
<filter string="In Progress" name="in_progress"
domain="[('state','=','in_progress')]"/>
<filter string="Expired" name="expired"
domain="[('state','=','expired')]"/>
<separator/>
<filter string="Pass" name="pass_result"
domain="[('result','=','pass')]"/>
<filter string="Conditional" name="conditional"
domain="[('result','=','conditional_pass')]"/>
<filter string="Fail" name="fail_result"
domain="[('result','=','fail')]"/>
<group>
<filter string="Status" name="group_state"
context="{'group_by':'state'}"/>
<filter string="Employee" name="group_employee"
context="{'group_by':'employee_id'}"/>
</group>
</search>
</field>
</record>
<record id="action_fp_cgp_psa" model="ir.actions.act_window">
<field name="name">Personnel Security Assessments</field>
<field name="res_model">fusion.plating.cgp.psa</field>
<field name="view_mode">list,form</field>
<field name="search_view_id" ref="view_fp_cgp_psa_search"/>
</record>
</odoo>

View File

@@ -0,0 +1,125 @@
<?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_cgp_receipt_shipment_list" model="ir.ui.view">
<field name="name">fp.cgp.receipt.shipment.list</field>
<field name="model">fusion.plating.cgp.receipt.shipment</field>
<field name="arch" type="xml">
<list string="CGP Receipts &amp; Shipments"
decoration-info="state == 'authorized'"
decoration-success="state == 'executed'"
decoration-muted="state == 'closed'">
<field name="name"/>
<field name="movement_type"/>
<field name="controlled_good_id"/>
<field name="date"/>
<field name="quantity"/>
<field name="from_party"/>
<field name="to_party"/>
<field name="authorized_by_id"/>
<field name="export_permit_ref" optional="hide"/>
<field name="state" widget="badge"
decoration-muted="state == 'draft'"
decoration-info="state == 'authorized'"
decoration-success="state == 'executed'"/>
</list>
</field>
</record>
<record id="view_fp_cgp_receipt_shipment_form" model="ir.ui.view">
<field name="name">fp.cgp.receipt.shipment.form</field>
<field name="model">fusion.plating.cgp.receipt.shipment</field>
<field name="arch" type="xml">
<form string="CGP Receipt / Shipment" class="o_fp_cgp_classified">
<header>
<button name="action_authorize" string="Authorize" type="object"
class="oe_highlight"
invisible="state != 'draft'"/>
<button name="action_execute" string="Execute" type="object"
class="oe_highlight"
invisible="state != 'authorized'"/>
<button name="action_close" string="Close" type="object"
invisible="state != 'executed'"/>
<button name="action_reset_to_draft" string="Reset" type="object"
invisible="state == 'draft'"/>
<field name="state" widget="statusbar"
statusbar_visible="draft,authorized,executed,closed"/>
</header>
<sheet>
<div class="oe_title">
<label for="name"/>
<h1><field name="name"/></h1>
</div>
<group>
<group string="Movement">
<field name="movement_type"/>
<field name="controlled_good_id"/>
<field name="date"/>
<field name="quantity"/>
</group>
<group string="Parties">
<field name="from_party"/>
<field name="to_party"/>
<field name="carrier"/>
<field name="manifest_ref"/>
<field name="authorized_by_id"/>
<field name="export_permit_ref"/>
</group>
</group>
<notebook>
<page string="Notes">
<field name="notes"/>
</page>
</notebook>
</sheet>
<chatter/>
</form>
</field>
</record>
<record id="view_fp_cgp_receipt_shipment_search" model="ir.ui.view">
<field name="name">fp.cgp.receipt.shipment.search</field>
<field name="model">fusion.plating.cgp.receipt.shipment</field>
<field name="arch" type="xml">
<search string="Receipts &amp; Shipments">
<field name="name"/>
<field name="controlled_good_id"/>
<field name="manifest_ref"/>
<field name="export_permit_ref"/>
<separator/>
<filter string="Receipts" name="receipts"
domain="[('movement_type','=','receipt')]"/>
<filter string="Shipments" name="shipments"
domain="[('movement_type','=','shipment')]"/>
<filter string="Internal Transfers" name="transfers"
domain="[('movement_type','=','internal_transfer')]"/>
<separator/>
<filter string="Draft" name="draft"
domain="[('state','=','draft')]"/>
<filter string="Authorized" name="authorized"
domain="[('state','=','authorized')]"/>
<filter string="Executed" name="executed"
domain="[('state','=','executed')]"/>
<group>
<filter string="Movement Type" name="group_type"
context="{'group_by':'movement_type'}"/>
<filter string="Status" name="group_state"
context="{'group_by':'state'}"/>
</group>
</search>
</field>
</record>
<record id="action_fp_cgp_receipt_shipment" model="ir.actions.act_window">
<field name="name">Receipts &amp; Shipments</field>
<field name="res_model">fusion.plating.cgp.receipt.shipment</field>
<field name="view_mode">list,form</field>
<field name="search_view_id" ref="view_fp_cgp_receipt_shipment_search"/>
</record>
</odoo>

View File

@@ -0,0 +1,122 @@
<?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_cgp_registration_list" model="ir.ui.view">
<field name="name">fp.cgp.registration.list</field>
<field name="model">fusion.plating.cgp.registration</field>
<field name="arch" type="xml">
<list string="CGP Registrations"
decoration-success="state == 'registered'"
decoration-warning="state == 'suspended'"
decoration-danger="state in ('expired','revoked')">
<field name="name"/>
<field name="company_id" groups="base.group_multi_company"/>
<field name="registration_number"/>
<field name="registration_date"/>
<field name="expiry_date"/>
<field name="designated_official_id"/>
<field name="next_compliance_review"/>
<field name="state" widget="badge"
decoration-success="state == 'registered'"
decoration-warning="state == 'suspended'"
decoration-danger="state in ('expired','revoked')"
decoration-info="state == 'pending'"/>
</list>
</field>
</record>
<record id="view_fp_cgp_registration_form" model="ir.ui.view">
<field name="name">fp.cgp.registration.form</field>
<field name="model">fusion.plating.cgp.registration</field>
<field name="arch" type="xml">
<form string="CGP Registration" class="o_fp_cgp_classified">
<header>
<button name="action_mark_registered" string="Mark Registered"
type="object" class="oe_highlight"
invisible="state != 'pending'"/>
<button name="action_suspend" string="Suspend" type="object"
invisible="state != 'registered'"/>
<button name="action_expire" string="Mark Expired" type="object"
invisible="state not in ('registered','suspended')"/>
<button name="action_revoke" string="Revoke" type="object"
invisible="state == 'revoked'"/>
<button name="action_reset_to_pending" string="Reset" type="object"
invisible="state == 'pending'"/>
<field name="state" widget="statusbar"
statusbar_visible="pending,registered,suspended,expired,revoked"/>
</header>
<sheet>
<div class="oe_title">
<label for="name"/>
<h1><field name="name"/></h1>
</div>
<span class="o_fp_cgp_restricted_badge">Restricted — CGP</span>
<group>
<group string="Registration">
<field name="company_id"/>
<field name="registration_number"/>
<field name="registration_date"/>
<field name="expiry_date"/>
<field name="physical_address"/>
</group>
<group string="People &amp; Plan">
<field name="designated_official_id"/>
<field name="security_plan_doc_id"/>
<field name="last_compliance_review"/>
<field name="next_compliance_review"/>
</group>
</group>
<notebook>
<page string="Notes">
<field name="notes"/>
</page>
</notebook>
</sheet>
<chatter/>
</form>
</field>
</record>
<record id="view_fp_cgp_registration_search" model="ir.ui.view">
<field name="name">fp.cgp.registration.search</field>
<field name="model">fusion.plating.cgp.registration</field>
<field name="arch" type="xml">
<search string="CGP Registrations">
<field name="name"/>
<field name="registration_number"/>
<field name="designated_official_id"/>
<separator/>
<filter string="Registered" name="registered"
domain="[('state','=','registered')]"/>
<filter string="Pending" name="pending"
domain="[('state','=','pending')]"/>
<filter string="Suspended" name="suspended"
domain="[('state','=','suspended')]"/>
<filter string="Expired" name="expired"
domain="[('state','=','expired')]"/>
<separator/>
<filter string="Archived" name="inactive"
domain="[('active','=',False)]"/>
<group>
<filter string="Status" name="group_state"
context="{'group_by':'state'}"/>
<filter string="Company" name="group_company"
context="{'group_by':'company_id'}"/>
</group>
</search>
</field>
</record>
<record id="action_fp_cgp_registration" model="ir.actions.act_window">
<field name="name">CGP Registration</field>
<field name="res_model">fusion.plating.cgp.registration</field>
<field name="view_mode">list,form</field>
<field name="search_view_id" ref="view_fp_cgp_registration_search"/>
</record>
</odoo>

View File

@@ -0,0 +1,132 @@
<?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_cgp_security_incident_list" model="ir.ui.view">
<field name="name">fp.cgp.security.incident.list</field>
<field name="model">fusion.plating.cgp.security.incident</field>
<field name="arch" type="xml">
<list string="CGP Security Incidents"
decoration-danger="severity == 'critical'"
decoration-warning="severity == 'major'"
decoration-muted="state == 'closed'">
<field name="name"/>
<field name="incident_date"/>
<field name="incident_type"/>
<field name="severity" widget="badge"
decoration-info="severity == 'minor'"
decoration-warning="severity == 'major'"
decoration-danger="severity == 'critical'"/>
<field name="discovered_by_id"/>
<field name="reported_to_pspc"/>
<field name="pspc_notification_date"/>
<field name="state" widget="badge"
decoration-info="state == 'discovered'"
decoration-warning="state == 'investigating'"
decoration-success="state == 'reported'"
decoration-muted="state == 'closed'"/>
</list>
</field>
</record>
<record id="view_fp_cgp_security_incident_form" model="ir.ui.view">
<field name="name">fp.cgp.security.incident.form</field>
<field name="model">fusion.plating.cgp.security.incident</field>
<field name="arch" type="xml">
<form string="Security Incident" class="o_fp_cgp_classified">
<header>
<button name="action_investigate" string="Investigate"
type="object" class="oe_highlight"
invisible="state != 'discovered'"/>
<button name="action_report" string="Report to PSPC"
type="object" class="oe_highlight"
invisible="state != 'investigating'"/>
<button name="action_close" string="Close" type="object"
invisible="state not in ('investigating','reported')"/>
<button name="action_reset" string="Reset" type="object"
invisible="state == 'discovered'"/>
<field name="state" widget="statusbar"
statusbar_visible="discovered,investigating,reported,closed"/>
</header>
<sheet>
<div class="oe_title">
<label for="name"/>
<h1><field name="name"/></h1>
</div>
<span class="o_fp_cgp_restricted_badge">Restricted — Security Incident</span>
<group>
<group string="Incident">
<field name="incident_date"/>
<field name="discovered_by_id"/>
<field name="incident_type"/>
<field name="severity"/>
</group>
<group string="PSPC Reporting">
<field name="reported_to_pspc"/>
<field name="pspc_notification_date"/>
</group>
</group>
<notebook>
<page string="Description">
<field name="description"/>
</page>
<page string="Containment">
<field name="containment"/>
</page>
<page string="Corrective Action">
<field name="corrective_action"/>
</page>
</notebook>
</sheet>
<chatter/>
</form>
</field>
</record>
<record id="view_fp_cgp_security_incident_search" model="ir.ui.view">
<field name="name">fp.cgp.security.incident.search</field>
<field name="model">fusion.plating.cgp.security.incident</field>
<field name="arch" type="xml">
<search string="Security Incidents">
<field name="name"/>
<field name="discovered_by_id"/>
<separator/>
<filter string="Critical" name="critical"
domain="[('severity','=','critical')]"/>
<filter string="Major" name="major"
domain="[('severity','=','major')]"/>
<filter string="Minor" name="minor"
domain="[('severity','=','minor')]"/>
<separator/>
<filter string="Discovered" name="discovered"
domain="[('state','=','discovered')]"/>
<filter string="Investigating" name="investigating"
domain="[('state','=','investigating')]"/>
<filter string="Reported" name="reported"
domain="[('state','=','reported')]"/>
<filter string="Closed" name="closed"
domain="[('state','=','closed')]"/>
<group>
<filter string="Incident Type" name="group_type"
context="{'group_by':'incident_type'}"/>
<filter string="Severity" name="group_severity"
context="{'group_by':'severity'}"/>
<filter string="Status" name="group_state"
context="{'group_by':'state'}"/>
</group>
</search>
</field>
</record>
<record id="action_fp_cgp_security_incident" model="ir.actions.act_window">
<field name="name">Security Incidents</field>
<field name="res_model">fusion.plating.cgp.security.incident</field>
<field name="view_mode">list,form</field>
<field name="search_view_id" ref="view_fp_cgp_security_incident_search"/>
</record>
</odoo>

View File

@@ -0,0 +1,126 @@
<?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_cgp_visitor_list" model="ir.ui.view">
<field name="name">fp.cgp.visitor.list</field>
<field name="model">fusion.plating.cgp.visitor</field>
<field name="arch" type="xml">
<list string="CGP Visitors"
decoration-success="state == 'checked_in'"
decoration-muted="state == 'checked_out'"
decoration-danger="state == 'denied'"
decoration-warning="state == 'cancelled'">
<field name="name"/>
<field name="company_represented"/>
<field name="visit_date"/>
<field name="visit_end"/>
<field name="host_id"/>
<field name="escort_required"/>
<field name="accessed_controlled_area"/>
<field name="approved_by_id"/>
<field name="state" widget="badge"
decoration-info="state == 'scheduled'"
decoration-success="state == 'checked_in'"
decoration-muted="state == 'checked_out'"
decoration-danger="state == 'denied'"
decoration-warning="state == 'cancelled'"/>
</list>
</field>
</record>
<record id="view_fp_cgp_visitor_form" model="ir.ui.view">
<field name="name">fp.cgp.visitor.form</field>
<field name="model">fusion.plating.cgp.visitor</field>
<field name="arch" type="xml">
<form string="CGP Visitor">
<header>
<button name="action_check_in" string="Check In" type="object"
class="oe_highlight"
invisible="state != 'scheduled'"/>
<button name="action_check_out" string="Check Out" type="object"
class="oe_highlight"
invisible="state != 'checked_in'"/>
<button name="action_deny" string="Deny" type="object"
invisible="state not in ('scheduled','checked_in')"/>
<button name="action_cancel" string="Cancel" type="object"
invisible="state in ('checked_out','cancelled','denied')"/>
<field name="state" widget="statusbar"
statusbar_visible="scheduled,checked_in,checked_out"/>
</header>
<sheet>
<div class="oe_title">
<label for="name"/>
<h1><field name="name"/></h1>
</div>
<group>
<group string="Visit">
<field name="company_represented"/>
<field name="visit_date"/>
<field name="visit_end"/>
<field name="host_id"/>
<field name="purpose"/>
</group>
<group string="Security">
<field name="is_canadian_citizen"/>
<field name="visitor_psa_on_file"/>
<field name="escort_required"/>
<field name="accessed_controlled_area"/>
<field name="approved_by_id"/>
</group>
</group>
<notebook>
<page string="Notes">
<field name="notes"/>
</page>
</notebook>
</sheet>
<chatter/>
</form>
</field>
</record>
<record id="view_fp_cgp_visitor_search" model="ir.ui.view">
<field name="name">fp.cgp.visitor.search</field>
<field name="model">fusion.plating.cgp.visitor</field>
<field name="arch" type="xml">
<search string="Visitors">
<field name="name"/>
<field name="company_represented"/>
<field name="host_id"/>
<separator/>
<filter string="Scheduled" name="scheduled"
domain="[('state','=','scheduled')]"/>
<filter string="Checked In" name="checked_in"
domain="[('state','=','checked_in')]"/>
<filter string="Checked Out" name="checked_out"
domain="[('state','=','checked_out')]"/>
<filter string="Denied" name="denied"
domain="[('state','=','denied')]"/>
<separator/>
<filter string="Accessed Controlled Area" name="accessed_ca"
domain="[('accessed_controlled_area','=',True)]"/>
<filter string="No PSA On File" name="no_psa"
domain="[('visitor_psa_on_file','=',False)]"/>
<group>
<filter string="Status" name="group_state"
context="{'group_by':'state'}"/>
<filter string="Host" name="group_host"
context="{'group_by':'host_id'}"/>
</group>
</search>
</field>
</record>
<record id="action_fp_cgp_visitor" model="ir.actions.act_window">
<field name="name">Visitors</field>
<field name="res_model">fusion.plating.cgp.visitor</field>
<field name="view_mode">list,form</field>
<field name="search_view_id" ref="view_fp_cgp_visitor_search"/>
</record>
</odoo>

View File

@@ -0,0 +1,64 @@
<?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>
<!-- ===== CGP (parent submenu under the Plating app) ===== -->
<menuitem id="menu_fp_cgp"
name="CGP"
parent="fusion_plating.menu_fp_root"
sequence="70"
groups="group_fusion_plating_cgp_officer"/>
<menuitem id="menu_fp_cgp_registration"
name="Registration"
parent="menu_fp_cgp"
action="action_fp_cgp_registration"
sequence="10"/>
<menuitem id="menu_fp_cgp_ai"
name="Authorized Individuals"
parent="menu_fp_cgp"
action="action_fp_cgp_ai"
sequence="20"/>
<menuitem id="menu_fp_cgp_psa"
name="Personnel Security Assessments"
parent="menu_fp_cgp"
action="action_fp_cgp_psa"
sequence="30"/>
<menuitem id="menu_fp_cgp_visitor"
name="Visitors"
parent="menu_fp_cgp"
action="action_fp_cgp_visitor"
sequence="40"/>
<menuitem id="menu_fp_cgp_controlled_good"
name="Controlled Goods"
parent="menu_fp_cgp"
action="action_fp_cgp_controlled_good"
sequence="50"/>
<menuitem id="menu_fp_cgp_receipt_shipment"
name="Receipts &amp; Shipments"
parent="menu_fp_cgp"
action="action_fp_cgp_receipt_shipment"
sequence="60"/>
<menuitem id="menu_fp_cgp_security_incident"
name="Security Incidents"
parent="menu_fp_cgp"
action="action_fp_cgp_security_incident"
sequence="70"/>
<menuitem id="menu_fp_cgp_access_log"
name="Access Log"
parent="menu_fp_cgp"
action="action_fp_cgp_access_log"
sequence="80"/>
</odoo>

View File

@@ -0,0 +1,37 @@
<?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>
<!--
Extend the HR employee form with a "Security (CGP)" notebook page.
Visible only to the CGP Officer group — a regular HR manager will
not see this tab or any of the PSA linkage.
-->
<record id="view_fp_cgp_hr_employee_form" model="ir.ui.view">
<field name="name">fp.cgp.hr.employee.form</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="Security (CGP)"
groups="fusion_plating_cgp.group_fusion_plating_cgp_officer">
<group>
<group string="Personnel Security Assessment">
<field name="x_fc_cgp_psa_id"/>
<field name="x_fc_cgp_psa_status"/>
</group>
<group string="Role &amp; Access">
<field name="x_fc_cgp_ai"/>
<field name="x_fc_cgp_access_level"/>
</group>
</group>
</page>
</xpath>
</field>
</record>
</odoo>