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>
50 lines
2.0 KiB
XML
50 lines
2.0 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!--
|
|
Copyright 2026 Nexa Systems Inc.
|
|
License OPL-1 (Odoo Proprietary License v1.0)
|
|
Part of the Fusion Plating product family.
|
|
|
|
Phase 1 — Plating landing-page resolver.
|
|
|
|
The Plating app's root menu (menu_fp_root) calls this server action
|
|
on click. It resolves which window action to open in this priority
|
|
order:
|
|
1. user.x_fc_plating_landing_action_id (per-user override)
|
|
2. company.x_fc_default_landing_action_id (company default)
|
|
3. action_fp_sale_orders (hardcoded fallback)
|
|
|
|
Falls back to Sale Orders so that pre-Sub-12d users who haven't
|
|
set a preference still land on the Sale-Orders default we shipped
|
|
earlier in the session.
|
|
-->
|
|
<odoo noupdate="0">
|
|
|
|
<record id="action_fp_resolve_plating_landing" model="ir.actions.server">
|
|
<field name="name">Plating — Open Landing Page</field>
|
|
<field name="model_id" ref="base.model_res_users"/>
|
|
<field name="state">code</field>
|
|
<field name="code"><![CDATA[
|
|
# Resolve in priority order: user pref → company default → Sale Orders fallback.
|
|
user = env.user
|
|
target = False
|
|
if 'x_fc_plating_landing_action_id' in user._fields and user.x_fc_plating_landing_action_id:
|
|
target = user.x_fc_plating_landing_action_id.sudo()
|
|
elif 'x_fc_default_landing_action_id' in env.company._fields and env.company.x_fc_default_landing_action_id:
|
|
target = env.company.x_fc_default_landing_action_id.sudo()
|
|
if not target:
|
|
target = env.ref('fusion_plating_configurator.action_fp_sale_orders', raise_if_not_found=False)
|
|
|
|
if target:
|
|
action = target.sudo().read()[0]
|
|
# Strip ids that confuse the act_window dispatcher.
|
|
action.pop('id', None)
|
|
else:
|
|
# Last-ditch — open the Plating app's process recipes if even
|
|
# the Sale Orders action is missing (e.g. configurator not installed).
|
|
action = env.ref('fusion_plating.action_fp_process_recipe').sudo().read()[0]
|
|
action.pop('id', None)
|
|
]]></field>
|
|
</record>
|
|
|
|
</odoo>
|