folder rename
This commit is contained in:
@@ -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>
|
||||
109
fusion_plating/fusion_plating_cgp/views/fp_cgp_ai_views.xml
Normal file
109
fusion_plating/fusion_plating_cgp/views/fp_cgp_ai_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_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>
|
||||
@@ -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>
|
||||
120
fusion_plating/fusion_plating_cgp/views/fp_cgp_psa_views.xml
Normal file
120
fusion_plating/fusion_plating_cgp/views/fp_cgp_psa_views.xml
Normal 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>
|
||||
@@ -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 & 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 & 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 & 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>
|
||||
@@ -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 & 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>
|
||||
@@ -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>
|
||||
126
fusion_plating/fusion_plating_cgp/views/fp_cgp_visitor_views.xml
Normal file
126
fusion_plating/fusion_plating_cgp/views/fp_cgp_visitor_views.xml
Normal 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>
|
||||
64
fusion_plating/fusion_plating_cgp/views/fp_menu.xml
Normal file
64
fusion_plating/fusion_plating_cgp/views/fp_menu.xml
Normal 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 & 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>
|
||||
@@ -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 & Access">
|
||||
<field name="x_fc_cgp_ai"/>
|
||||
<field name="x_fc_cgp_access_level"/>
|
||||
</group>
|
||||
</group>
|
||||
</page>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user