Files
Odoo-Modules/fusion_plating/fusion_plating_jobs/__manifest__.py
gsinghpal 8d082cd9cc fix(jobs): make "In Progress" workflow milestone fire reliably
Two coupled fixes so the workflow bar shows "In Progress" when work
is actually underway, even on recipes without kind tagging:

  B. Auto-promote fp.job.state on first step start.
     fp.job.step.write hook detects step transitions to in_progress
     and promotes parent job state from 'confirmed' → 'in_progress'.
     Without this, fp.job.state never reached 'in_progress' anywhere
     in the codebase, so the trigger_on_job_state='in_progress'
     path was dead code.

  C. Smarter trigger_first_step_started for untagged recipes.
     For tagged recipes (any step has kind in wet/bake/mask/rack),
     keep the strict kind-based check. For untagged recipes (all
     steps kind='other' or similar), fall back to "any step in
     in_progress/paused/done" so the milestone fires regardless of
     recipe authoring quality.

Verified end-to-end on entech with untagged steps:
  - confirmed → in_progress when first step starts
  - workflow bar tracks at in_progress through the work
  - workflow bar advances to done when all steps done/skipped

Recipe authoring still encouraged for full Received / Inspected
intermediate states (those keep their default_kind triggers).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 00:27:05 -04:00

102 lines
4.8 KiB
Python

# -*- coding: utf-8 -*-
# Copyright 2026 Nexa Systems Inc.
# License OPL-1 (Odoo Proprietary License v1.0)
{
'name': 'Fusion Plating — Native Jobs',
'version': '19.0.8.20.4',
'category': 'Manufacturing/Plating',
'summary': 'Native plating job model — replaces mrp.production / mrp.workorder bridge.',
'author': 'Nexa Systems Inc.',
'website': 'https://www.nexasystems.ca',
'maintainer': 'Nexa Systems Inc.',
'support': 'support@nexasystems.ca',
'price': 0.00,
'currency': 'CAD',
'description': """
Native Plating Job Bridge
=========================
Bridges fp.job and fp.job.step (defined in fusion_plating core, Phase 1 of
the migration spec dated 2026-04-25) to the rest of the Fusion Plating
module family — configurator, portal, logistics, quality, certificates.
Coexists with fusion_plating_bridge_mrp during the migration period.
Activate native jobs via the x_fc_use_native_jobs settings flag (default:
False). When False, SO confirm continues to create mrp.production records
through bridge_mrp. When True, SO confirm creates fp.job records here.
19.0.4.0.0 (2026-04-24): Operator UI consolidation. The parallel
OWL/controller stack (job_process_tree, job_plant_overview,
job_manager_dashboard, job_tablet) was removed. The canonical
operator-facing UIs now live in fusion_plating_shopfloor and bind
directly to fp.job / fp.job.step. This module retains lifecycle hooks,
SO → fp.job creation, reports, and the QR-scan redirect.
See docs/superpowers/specs/2026-04-25-fp-native-job-model-design.md for
full design rationale and §6.2 of the implementation plan for task list.
""",
'depends': [
'fusion_plating', # fp.job, fp.job.step, fp.work.centre
'fusion_plating_batch', # fusion.plating.batch (Phase 3)
'fusion_plating_certificates', # fp.certificate, fp.thickness.reading
'fusion_plating_configurator', # fp.part.catalog, fp.coating.config
'fusion_plating_kpi', # fusion.plating.kpi.value (Phase 4)
'fusion_plating_logistics', # fusion.plating.delivery
'fusion_plating_notifications', # fp.notification.template (Phase 4)
'fusion_plating_portal', # fusion.plating.portal.job
'fusion_plating_quality', # fusion.plating.customer.spec, fusion.plating.quality.hold
'fusion_plating_receiving', # fp.racking.inspection (Phase 3)
'fusion_plating_reports', # paperformat helpers, customer_line_header (Phase 5)
'fusion_plating_shopfloor', # canonical operator UI consoles
],
'data': [
'security/legacy_groups.xml',
'security/ir.model.access.csv',
'data/fp_cron_data.xml',
# Sub 14 — workflow state catalog (must load before fp_job_form_inherit
# so the statusbar's m2o has its targets available at view-render time).
'data/fp_workflow_state_data.xml',
'views/fp_workflow_state_views.xml',
'views/res_config_settings_views.xml',
'views/fp_job_step_quick_look_views.xml',
'views/fp_job_form_inherit.xml',
'views/fp_job_quality_buttons.xml',
'views/sale_order_views.xml',
'views/fp_certificate_views.xml',
'views/fp_job_consumption_views.xml',
'views/fp_step_priority_views.xml',
'views/jobs_in_shopfloor_menu.xml',
'views/legacy_menu_hide.xml',
'views/res_users_views.xml',
'wizards/fp_job_step_move_wizard_views.xml',
'wizards/fp_job_step_input_wizard_views.xml',
'report/report_fp_job_sticker.xml',
'report/report_fp_job_traveller.xml',
'report/report_fp_job_wo_detail.xml',
'report/report_fp_job_margin.xml',
],
'assets': {
# Sub 12d — Step Details quick-look modal styles
# Sub 12e v4 — Record Inputs OWL Dialog (replaces v2/v3)
# Both registered in both bundles so light + dark mode each
# compile correctly ($o-webclient-color-scheme branches at
# compile time per CLAUDE.md note).
'web.assets_backend': [
'fusion_plating_jobs/static/src/scss/fp_step_quick_look.scss',
'fusion_plating_jobs/static/src/scss/fp_record_inputs_dialog.scss',
'fusion_plating_jobs/static/src/js/fp_record_inputs_dialog.js',
'fusion_plating_jobs/static/src/xml/fp_record_inputs_dialog.xml',
],
'web.assets_web_dark': [
'fusion_plating_jobs/static/src/scss/fp_step_quick_look.scss',
'fusion_plating_jobs/static/src/scss/fp_record_inputs_dialog.scss',
'fusion_plating_jobs/static/src/js/fp_record_inputs_dialog.js',
'fusion_plating_jobs/static/src/xml/fp_record_inputs_dialog.xml',
],
},
'installable': True,
'application': False,
'auto_install': False,
'license': 'OPL-1',
}