fix(portal): derive portal_job initial state from fp.job.state on create
_fp_create_portal_job hardcoded state='in_progress'. Now uses the same _FP_JOB_STATE_TO_PORTAL_STATE map as write(), so a portal job created for an already-confirmed (but not yet started) fp.job lands in 'received' instead of jumping to 'in_progress'. Falls back to 'received' for unmapped states. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1368,15 +1368,24 @@ class FpJob(models.Model):
|
|||||||
seq += 10
|
seq += 10
|
||||||
|
|
||||||
def _fp_create_portal_job(self):
|
def _fp_create_portal_job(self):
|
||||||
"""Create the fusion.plating.portal.job mirror record."""
|
"""Create the fusion.plating.portal.job mirror record.
|
||||||
|
|
||||||
|
Initial state derived from the fp.job state via the same map
|
||||||
|
used by write() — so a job that's already 'in_progress' when
|
||||||
|
the portal mirror is created (e.g. a manual catch-up create)
|
||||||
|
doesn't reset to 'received'.
|
||||||
|
"""
|
||||||
self.ensure_one()
|
self.ensure_one()
|
||||||
if self.portal_job_id:
|
if self.portal_job_id:
|
||||||
return # already exists — idempotent
|
return # already exists — idempotent
|
||||||
Portal = self.env['fusion.plating.portal.job'].sudo()
|
Portal = self.env['fusion.plating.portal.job'].sudo()
|
||||||
|
initial_state = self._FP_JOB_STATE_TO_PORTAL_STATE.get(
|
||||||
|
self.state, 'received',
|
||||||
|
)
|
||||||
portal = Portal.create({
|
portal = Portal.create({
|
||||||
'name': self.name,
|
'name': self.name,
|
||||||
'partner_id': self.partner_id.id,
|
'partner_id': self.partner_id.id,
|
||||||
'state': 'in_progress',
|
'state': initial_state,
|
||||||
'x_fc_job_id': self.id,
|
'x_fc_job_id': self.id,
|
||||||
})
|
})
|
||||||
self.portal_job_id = portal.id
|
self.portal_job_id = portal.id
|
||||||
|
|||||||
Reference in New Issue
Block a user