diff --git a/apps/wpmw/models.py b/apps/wpmw/models.py index 2c0df756..7ca50929 100644 --- a/apps/wpmw/models.py +++ b/apps/wpmw/models.py @@ -38,30 +38,34 @@ class Wpr(BaseModel): wpr.delete() return elif number: - try: - ins_x = cls.objects.get(number=number) + ins_x = cls.objects.filter(number=number).order_by("-version").first() + if ins_x: if ins_x.wm is None and ins_x.mb is None: if ins_x.version > 1: # 说明被复用了 if wpr_from is None: wpr_from = ins_x + # 创建新的wpr + ins = cls(number=number) + ins.version = -1 + ins.oinfo = {} else: raise ParseError(f"该物料编号{number}-已存在不可使用") else: raise ParseError(f"该物料编号{number}-已存在不可使用") - except cls.DoesNotExist: + else: ins = cls(number=number) ins.version = -1 ins.oinfo = {} if batch_from: # 尝试从批号追踪来源 - try: - ins_from = cls.objects.get(number=number) + ins_from = cls.objects.filter(number=batch_from).order_by("-version").first() + if ins_from: if ins_from.wm is None and ins_from.mb is None: if ins_from.version > 1: # 说明被复用了 wpr_from = ins_from else: raise ParseError(f"该物料编号{number}-已存在不可使用") - except cls.DoesNotExist: - pass + elif wpr_from is None: + raise ParseError(f"该物料编号{number}-尝试从批号追踪来源失败") if old_mb and ins.mb != old_mb: raise ParseError(f"请检查-{ins.number}-所属仓库批次")