fix(configurator): override helper kind names — mask/demask/bake (not masking/de_masking/baking)
Root cause: spec + plan assumed fusion.plating.process.node.default_kind
values for masking/baking nodes were 'masking', 'de_masking', 'baking'.
Actual values per inspection of WO-30060 / recipe ENP-ALUM-BASIC:
- 'mask' (Masking step)
- 'demask' (De-Masking step)
- 'bake' (Oven baking / Oven bake post de-rack)
So _fp_apply_express_overrides_to_job was searching for nodes that
don't exist → no override rows created → step generation included
masking + bake even when the SO line had x_fc_masking_enabled=False
and x_fc_bake_instructions=empty.
Fixed all 4 occurrences in _fp_apply_express_overrides_to_job:
- pre-deletion search uses ('mask','demask','bake')
- masking opt-out walker calls ('mask','demask')
- bake opt-out walker calls ('bake',)
- bake step instructions filter uses default_kind == 'bake'
Manually cleaned up DOD-00150 / WO-30060:
- Deleted the 4 masking/bake steps that were wrongly created
- Created 4 override rows so any re-generation respects the opt-outs
Future orders with masking off / bake empty will correctly skip these
recipe nodes at step-generation time.
This commit is contained in:
@@ -805,7 +805,7 @@ class SaleOrderLine(models.Model):
|
||||
# Idempotency: clear prior masking/bake override rows on this job
|
||||
prior = Override.search([
|
||||
('job_id', '=', job.id),
|
||||
('node_id.default_kind', 'in', ('masking', 'de_masking', 'baking')),
|
||||
('node_id.default_kind', 'in', ('mask', 'demask', 'bake')),
|
||||
])
|
||||
if prior:
|
||||
prior.unlink()
|
||||
@@ -814,7 +814,7 @@ class SaleOrderLine(models.Model):
|
||||
|
||||
# 1. Masking — opt out of masking + de_masking AS A PAIR
|
||||
if not self.x_fc_masking_enabled:
|
||||
nodes = recipe._fp_all_nodes_with_kind(('masking', 'de_masking'))
|
||||
nodes = recipe._fp_all_nodes_with_kind(('mask', 'demask'))
|
||||
for node in nodes:
|
||||
Override.create({
|
||||
'job_id': job.id,
|
||||
@@ -826,7 +826,7 @@ class SaleOrderLine(models.Model):
|
||||
|
||||
# 2. Bake — empty = opt out; non-empty = keep + write step.instructions
|
||||
bake_text = (self.x_fc_bake_instructions or '').strip()
|
||||
bake_nodes = recipe._fp_all_nodes_with_kind(('baking',))
|
||||
bake_nodes = recipe._fp_all_nodes_with_kind(('bake',))
|
||||
if not bake_text:
|
||||
for node in bake_nodes:
|
||||
Override.create({
|
||||
@@ -841,7 +841,7 @@ class SaleOrderLine(models.Model):
|
||||
# helper is called twice — first call (before action_confirm)
|
||||
# finds no steps and skips; second call (after step gen) lands.
|
||||
bake_steps = job.step_ids.filtered(
|
||||
lambda s: s.recipe_node_id.default_kind == 'baking'
|
||||
lambda s: s.recipe_node_id.default_kind == 'bake'
|
||||
)
|
||||
if bake_steps:
|
||||
bake_steps.sudo().write({'instructions': bake_text})
|
||||
|
||||
Reference in New Issue
Block a user