feat(plating): split templates vs part-scoped processes + Process smart button
Two user-reported gaps: 1. The Process Recipes list was about to be flooded by part-scoped clones as soon as parts started carrying customised processes — thousands of clones would bury the handful of real shared templates (General Processing, Anodize, etc.). Fix: the main Process Recipes action now narrows to part_catalog_id = False so shared templates stay alone in that view. A sibling menu "Part Processes" (Plating → Operations → Part Processes) shows the inverse list — every part-cloned process, grouped by part — so admins can audit clones without cluttering the templates list. Search view gains two toggle filters (Shared Templates / Part-Scoped) and a "Group by Part" option. The node list gains an optional "Part" column. Split across modules: core owns the base search / tree / action (unchanged); configurator owns all the part_catalog_id-dependent pieces (filter extensions, list column, narrower domain, "Part Processes" action + menu). Keeps the dependency direction clean — configurator always depends on core, never the other way. 2. Added a "Process" smart button to the part form's button box. Shows either a green check (composed) or "None" (not yet composed) and opens the part-scoped Composer on click. Gives users one-tap access from any part form without hunting through the Process tab. fusion_plating → 19.0.8.0.0 fusion_plating_configurator → 19.0.13.1.0 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
|
||||
{
|
||||
'name': 'Fusion Plating',
|
||||
'version': '19.0.7.4.0',
|
||||
'version': '19.0.8.0.0',
|
||||
'category': 'Manufacturing/Plating',
|
||||
'summary': 'Core plating / metal finishing ERP: facilities, processes, tanks, baths, jobs, operators.',
|
||||
'description': """
|
||||
|
||||
@@ -161,6 +161,7 @@
|
||||
domain="[('node_type', '=', 'sub_process')]"/>
|
||||
<filter name="operations" string="Operations"
|
||||
domain="[('node_type', '=', 'operation')]"/>
|
||||
<separator/>
|
||||
<filter name="archived" string="Archived"
|
||||
domain="[('active', '=', False)]"/>
|
||||
<filter name="group_type" string="Type"
|
||||
@@ -169,11 +170,17 @@
|
||||
context="{'group_by': 'process_type_id'}"/>
|
||||
<filter name="group_wc" string="Work Centre"
|
||||
context="{'group_by': 'work_center_id'}"/>
|
||||
<!-- Part-scoped filters live in fusion_plating_configurator;
|
||||
the part_catalog_id field is declared there (core
|
||||
can't see it without a circular dep). -->
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- ===== WINDOW ACTION — Recipe list ===== -->
|
||||
<!-- Domain only narrows by node_type in core. The configurator
|
||||
module adds the part_catalog_id = False narrowing via a
|
||||
view/action inherit (see fusion_plating_configurator). -->
|
||||
<record id="action_fp_process_recipe" model="ir.actions.act_window">
|
||||
<field name="name">Process Recipes</field>
|
||||
<field name="res_model">fusion.plating.process.node</field>
|
||||
|
||||
Reference in New Issue
Block a user