feat(phase1): top-level menu consolidation + landing-page resolver
Phase 1 collapses the Plating app's 17 top-level menus down to 6
domains (Sales, Operations, Receiving & Shipping, Quality,
Compliance, Configuration) so users no longer scroll a 17-item
sidebar to find one thing.
Re-parented (no XML id changes — bookmarks still work):
- fusion_plating_compliance.menu_fp_compliance_root
→ menu_fp_compliance_hub (renamed 'General')
- fusion_plating_safety.menu_fp_safety_root
→ menu_fp_compliance_hub (renamed 'Safety / WHMIS')
- fusion_plating_aerospace.menu_fp_aerospace
→ menu_fp_compliance_hub (renamed 'Aerospace (AS9100 / Nadcap)')
- fusion_plating_nuclear.menu_fp_nuclear
→ menu_fp_compliance_hub (renamed 'Nuclear (CSA N299 / CNSC)')
- fusion_plating_cgp.menu_fp_cgp
→ menu_fp_compliance_hub (renamed 'Controlled Goods (CGP)')
- fusion_plating_certificates.menu_fp_certificates
→ menu_fp_quality (Certs are a Quality output, not a separate
top-level concern)
- fusion_plating_bridge_maintenance.menu_fp_maintenance
→ menu_fp_operations
- fusion_plating.menu_fp_job_step_move (Move Log)
→ menu_fp_operations
- fusion_plating.menu_fp_job_step_timelog (Labor History)
→ menu_fp_operations
The new menu_fp_compliance_hub is supervisor-gated; underlying
verticals retain their own group locks (CGP officer, etc.).
Settings menu remains manager-gated through inheritance from
menu_fp_config (already in place).
NEW — Plating landing-page resolver:
- ir.actions.act_window.x_fc_pickable_landing (Boolean tag for
curated picklist; flagged on Sale Orders, Quotations, Process
Recipes for Phase 1; more in Phase 2)
- res.company.x_fc_default_landing_action_id (admin sets fallback)
- res.users.x_fc_plating_landing_action_id (per-user override)
- ir.actions.server action_fp_resolve_plating_landing — picks
user → company → Sale Orders fallback at click time
- menu_fp_root rewired to call the resolver
- User profile + Settings tabs surface the dropdowns
Configurator's earlier menu_fp_root override (action_fp_sale_orders
direct) removed — core's resolver now owns the routing.
Versions bumped: fusion_plating 19.0.11.0.0, configurator
19.0.17.16.0, plus 7 dependent modules patched.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -115,10 +115,11 @@
|
||||
<field name="search_view_id" ref="view_fp_job_step_move_search"/>
|
||||
</record>
|
||||
|
||||
<!-- Phase 1 — re-parented under Operations. -->
|
||||
<menuitem id="menu_fp_job_step_move"
|
||||
name="Move Log"
|
||||
parent="menu_fp_root"
|
||||
parent="menu_fp_operations"
|
||||
action="action_fp_job_step_move"
|
||||
sequence="62"/>
|
||||
sequence="90"/>
|
||||
|
||||
</odoo>
|
||||
|
||||
@@ -133,10 +133,11 @@
|
||||
<field name="context">{'search_default_my_timers': 1}</field>
|
||||
</record>
|
||||
|
||||
<!-- Phase 1 — re-parented under Operations. -->
|
||||
<menuitem id="menu_fp_labor_history"
|
||||
name="Labor History"
|
||||
parent="menu_fp_root"
|
||||
parent="menu_fp_operations"
|
||||
action="action_fp_labor_history"
|
||||
sequence="64"/>
|
||||
sequence="95"/>
|
||||
|
||||
</odoo>
|
||||
|
||||
82
fusion_plating/fusion_plating/views/fp_landing_views.xml
Normal file
82
fusion_plating/fusion_plating/views/fp_landing_views.xml
Normal file
@@ -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.
|
||||
|
||||
Phase 1 — Plating landing-page resolver UI.
|
||||
|
||||
Two surfaces:
|
||||
1. Settings → Fusion Plating → Recipe Editor block (extended into
|
||||
a Landing Page block for the company-level default).
|
||||
2. User profile / preferences form — adds a Fusion Plating tab
|
||||
with the per-user override dropdown.
|
||||
-->
|
||||
<odoo>
|
||||
|
||||
<!-- ====== User profile (Preferences > Fusion Plating tab) ====== -->
|
||||
<record id="view_users_form_fp_landing" model="ir.ui.view">
|
||||
<field name="name">res.users.form.fp.landing</field>
|
||||
<field name="model">res.users</field>
|
||||
<field name="inherit_id" ref="base.view_users_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//notebook" position="inside">
|
||||
<page string="Fusion Plating" name="fp_landing">
|
||||
<p class="text-muted">
|
||||
Choose which page opens when you click the Plating
|
||||
app. When blank, you see the company default
|
||||
(Sale Orders unless an admin has changed it).
|
||||
</p>
|
||||
<group>
|
||||
<field name="x_fc_plating_landing_action_id"
|
||||
options="{'no_create': True, 'no_open': True}"/>
|
||||
</group>
|
||||
</page>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Same field surfaced on the simplified preferences form (the one
|
||||
users open from the avatar menu — uses a different XML id). -->
|
||||
<record id="view_users_form_simple_fp_landing" model="ir.ui.view">
|
||||
<field name="name">res.users.form.simple.fp.landing</field>
|
||||
<field name="model">res.users</field>
|
||||
<field name="inherit_id" ref="base.view_users_form_simple_modif"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//notebook" position="inside">
|
||||
<page string="Fusion Plating" name="fp_landing_simple">
|
||||
<p class="text-muted">
|
||||
Page that opens when you click the Plating app.
|
||||
</p>
|
||||
<group>
|
||||
<field name="x_fc_plating_landing_action_id"
|
||||
options="{'no_create': True, 'no_open': True}"/>
|
||||
</group>
|
||||
</page>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- ====== Settings → Fusion Plating → Landing Page block ====== -->
|
||||
<record id="res_config_settings_view_form_fp_landing" model="ir.ui.view">
|
||||
<field name="name">res.config.settings.form.fp.landing</field>
|
||||
<field name="model">res.config.settings</field>
|
||||
<field name="inherit_id" ref="fusion_plating.res_config_settings_view_form_fp_core"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//block[@name='fp_recipe_editor_settings']"
|
||||
position="after">
|
||||
<block title="Plating Landing Page"
|
||||
name="fp_landing_settings"
|
||||
help="Page that opens when a user clicks the Plating app.">
|
||||
<setting id="fp_default_landing_action"
|
||||
string="Default Landing Page"
|
||||
help="Users without a personal preference see this page. Each user can override it under their Profile > Preferences > Fusion Plating tab.">
|
||||
<field name="x_fc_default_landing_action_id"
|
||||
options="{'no_create': True, 'no_open': True}"/>
|
||||
</setting>
|
||||
</block>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
@@ -6,13 +6,26 @@
|
||||
-->
|
||||
<odoo>
|
||||
|
||||
<!-- ===== ROOT APP MENU ===== -->
|
||||
<!-- ===== ROOT APP MENU =====
|
||||
Landing action wired via the resolver server action below.
|
||||
Per-user override > company default > Sale Orders fallback. -->
|
||||
<menuitem id="menu_fp_root"
|
||||
name="Plating"
|
||||
sequence="46"
|
||||
web_icon="fusion_plating,static/description/icon.png"
|
||||
action="action_fp_resolve_plating_landing"
|
||||
groups="group_fusion_plating_operator"/>
|
||||
|
||||
<!-- ===== Compliance hub (Phase 1) =====
|
||||
Bundles General Compliance + Safety + Aerospace + Nuclear + CGP
|
||||
under one top-level. Each vertical's existing root menu is
|
||||
re-parented here in its own module. -->
|
||||
<menuitem id="menu_fp_compliance_hub"
|
||||
name="Compliance"
|
||||
parent="menu_fp_root"
|
||||
sequence="50"
|
||||
groups="group_fusion_plating_supervisor"/>
|
||||
|
||||
<!-- ===== OPERATIONS ===== -->
|
||||
<menuitem id="menu_fp_operations"
|
||||
name="Operations"
|
||||
|
||||
@@ -227,6 +227,7 @@
|
||||
<field name="domain">[('node_type', '=', 'recipe')]</field>
|
||||
<field name="context">{'default_node_type': 'recipe', 'search_default_recipes_only': 1}</field>
|
||||
<field name="search_view_id" ref="view_fp_process_node_search"/>
|
||||
<field name="x_fc_pickable_landing" eval="True"/>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Create your first process recipe
|
||||
|
||||
Reference in New Issue
Block a user