diff --git a/sf_manufacturing/models/stock.py b/sf_manufacturing/models/stock.py index 46ac6f32..3ecb80be 100644 --- a/sf_manufacturing/models/stock.py +++ b/sf_manufacturing/models/stock.py @@ -596,18 +596,18 @@ class StockPicking(models.Model): for move_id in item.move_ids: move_ids.append(move_id.product_id.id) boms = self.env['mrp.bom'].sudo().search([('bom_line_ids.product_id', 'in', move_ids)]) - default_codes = '' if boms: + codes_list = [] for bom in boms: if bom.product_tmpl_id.default_code: - code = bom.product_tmpl_id.default_code.split('-')[-1] - default_code = bom.product_tmpl_id.default_code.split(f'-{code}')[0] - if default_code not in default_codes: - if default_codes == '': - default_codes = default_code - else: - default_codes = default_codes + ',' + default_code - item.retrospect_ref = default_codes + code_list = bom.product_tmpl_id.default_code.split('-') + if len(code_list) >= 4: + code = '-'.join(code_list[:4]) + if code not in codes_list: + codes_list.append(code) + else: + raise ValidationError('坯料成品的内部参考值格式错误') + item.retrospect_ref = ','.join(codes_list) elif item.picking_type_id.sequence_code in ['INT', 'PC']: pass