diff --git a/apps/wpm/serializers.py b/apps/wpm/serializers.py index 6884167a..351a8246 100644 --- a/apps/wpm/serializers.py +++ b/apps/wpm/serializers.py @@ -659,11 +659,16 @@ class MlogbInSerializer(CustomModelSerializer): wm_in: WMaterial = attrs['wm_in'] if wm_in is None: raise ParseError("请选择相应车间库存!") + if is_fix: # 返修或复检 + if wm_in.state in [WMaterial.WM_NOTOK, WMaterial.WM_REPAIR, WMaterial.WM_REPAIRED]: + pass + else: + raise ParseError('返修或复检不可使用该物料') + elif wm_in.state != WMaterial.WM_OK: + raise ParseError('非合格品不可使用') if wm_in.state in [WMaterial.WM_OK, WMaterial.WM_REPAIR, WMaterial.WM_REPAIRED]: if is_fix and wm_in.state not in [WMaterial.WM_REPAIR, WMaterial.WM_REPAIRED]: raise ParseError('需要使用返修品') - else: - raise ParseError('非合格/返修品不可使用') if mtask and mlog.route != mtask.route: raise ParseError('工序不匹配') route = mlog.route @@ -689,9 +694,10 @@ class MlogbInSerializer(CustomModelSerializer): if mlog.is_fix: if mlog.material_in is None: mlog.material_in = ins.material_in + mlog.material_out = ins.material_in mlog.save(update_fields="material_in") elif mlog.material_in != ins.material_in: - raise ParseError('返修记录必须使用同一物料') + raise ParseError('该记录必须使用同一物料') if mlogbdefect is not None and ins.material_in.tracking == Material.MA_TRACKING_BATCH: mlogb_defect_objects = [