feat(jobs): cutover - bridge_mrp gate, menu nesting, migration robustness
Three changes to support live cutover on entech (2026-04-25): 1. Bridge_mrp gate: sale.order.action_confirm in fusion_plating_bridge_mrp now skips _fp_auto_create_mo when the x_fc_use_native_jobs config flag is True. Without this, every SO confirm would create both an mrp.production AND an fp.job (duplicate work). The gate is the only modification to bridge_mrp during the migration — the rest stays untouched. 2. Menu nesting: Plating Jobs (Native) now lives INSIDE the existing Plating app (parent=menu_fp_root) instead of as a separate top-level app. Two parallel 'Plating' apps was confusing UX. Work Centres (Native) goes under the existing Configuration sub-menu. '(Native)' suffix is temporary — drops at full legacy removal. 3. Migration script robustness: per-MO savepoints (so one bad MO doesn't abort the whole transaction with cascading 'transaction aborted' errors) + extended partner resolver fallback chain (warehouse partner → company partner) for orphan demo MOs without SO link or x_fc_customer_id. Verified: 43 MOs + 297 WOs migrated on entech with 0 errors after these fixes. Part of: native job model migration (spec 2026-04-25) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -81,6 +81,13 @@ class SaleOrder(models.Model):
|
||||
# ------------------------------------------------------------------
|
||||
def action_confirm(self):
|
||||
res = super().action_confirm()
|
||||
# Cutover gate (2026-04-25): when the native job model is the
|
||||
# primary, skip MO creation here — fusion_plating_jobs handles
|
||||
# SO → fp.job. Both modules' SO-confirm hooks would otherwise
|
||||
# run on every confirm and create duplicate work.
|
||||
ICP = self.env['ir.config_parameter'].sudo()
|
||||
if ICP.get_param('fusion_plating_jobs.use_native_jobs') == 'True':
|
||||
return res
|
||||
for so in self:
|
||||
try:
|
||||
so._fp_auto_create_mo()
|
||||
|
||||
Reference in New Issue
Block a user