feat(configurator): Sub 3 Phase B — part-scoped Process Composer client action + part form Compose button

- Add fp_part_composer_controller with 3 JSON-RPC endpoints:
  /fp/part/composer/state, /fp/part/composer/templates,
  /fp/part/composer/load_template (deep-clones a shared template
  into a part-owned tree inside a cr.savepoint, sets
  fp.part.catalog.default_process_id atomically)
- _clone_subtree copies name/sequence/opt_in_out/treatment_uom plus
  description/notes/icon/color/timing/behaviour/work_center/process_type
  and stamps part_catalog_id + cloned_from_id on every node
- Add fp_part_process_composer OWL client action (JS + XML + SCSS):
  picks template from dropdown, clones, hands off to existing
  fp_recipe_tree_editor via context={recipe_id, part_id}
- Add Process tab on part form with readonly default_process_id
  field and Compose button calling action_open_part_composer
- Register new assets in web.assets_backend, bump configurator
  version to 19.0.11.0.0
This commit is contained in:
gsinghpal
2026-04-22 09:02:03 -04:00
parent 7d5c826f3e
commit 3de37ea735
7 changed files with 541 additions and 1 deletions

View File

@@ -144,6 +144,24 @@
</div>
</group>
<notebook>
<page string="Process" name="process">
<group>
<field name="default_process_id" readonly="1"
help="Use the Compose button to set up this part's process tree."/>
</group>
<div class="mt-2">
<button name="action_open_part_composer" type="object"
string="Compose"
icon="fa-wrench"
class="btn-primary"
help="Open the Process Composer to load a template and edit this part's tree."/>
</div>
<p class="text-muted mt-3">
The <strong>Compose</strong> button opens the Process Composer where you can
load a shared template and customise it for this part. When a job runs for
this part, work orders are generated from the composed tree.
</p>
</page>
<page string="Dimensions &amp; Complexity" name="dimensions">
<group>
<group>