diff --git a/apps/wpm/services.py b/apps/wpm/services.py index c4274799..8add9df3 100644 --- a/apps/wpm/services.py +++ b/apps/wpm/services.py @@ -360,11 +360,9 @@ def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]): wpr_from = None if item.mlogbw_from: wpr_from = item.mlogbw_from.wpr - number_from = item.mlogb.number_from - batch_from = item.mlogb.batch if number_from else None wpr = Wpr.change_or_new(number=item.number, wm=wm, ftest=item.ftest, - wpr_from=wpr_from, batch_from=batch_from, number_from=number_from) + wpr_from=wpr_from) item.wpr = wpr item.save() diff --git a/apps/wpm/views.py b/apps/wpm/views.py index de69f873..67c49ed1 100644 --- a/apps/wpm/views.py +++ b/apps/wpm/views.py @@ -653,6 +653,8 @@ class MlogbInViewSet(CreateModelMixin, UpdateModelMixin, DestroyModelMixin, Cust mlogbout.save(update_fields=["count_json_from"]) if material_out.tracking == Material.MA_TRACKING_SINGLE: number = mlogbin.batch + if mlogbin.number_from: + number = mlogbin.number_from if d_count_real == 1: Mlogbw.objects.get_or_create(number=number, mlogb=mlogbout) else: diff --git a/apps/wpmw/models.py b/apps/wpmw/models.py index 3f7745c0..f1121708 100644 --- a/apps/wpmw/models.py +++ b/apps/wpmw/models.py @@ -26,7 +26,7 @@ class Wpr(BaseModel): wpr_from = models.ForeignKey("self", verbose_name="来源于", on_delete=models.CASCADE, null=True, blank=True) @classmethod - def change_or_new(cls, wpr=None, number=None, mb=None, wm=None, old_mb=None, old_wm=None, ftest=None, wpr_from=None, batch_from=None, number_from=None): + def change_or_new(cls, wpr=None, number=None, mb=None, wm=None, old_mb=None, old_wm=None, ftest=None, wpr_from=None): if wpr is None and number is None: raise ParseError("id和number不能同时为空") if mb and wm: @@ -56,26 +56,26 @@ class Wpr(BaseModel): ins = cls(number=number) ins.version = -1 ins.oinfo = {} - if batch_from: # 尝试从批号追踪来源 - 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}-已存在不可使用") - elif wpr_from is None: - raise ParseError(f"该物料编号{number}-尝试从批号追踪来源失败") - elif number_from: # 尝试从编号追踪来源 - ins_from = cls.objects.filter(number=number_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}-已存在不可使用") - elif wpr_from is None: - raise ParseError(f"该物料编号{number}-尝试历史编号追踪来源失败") + # if batch_from: # 尝试从批号追踪来源 + # 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}-已存在不可使用") + # elif wpr_from is None: + # raise ParseError(f"该物料编号{number}-尝试从批号追踪来源失败") + # elif number_from: # 尝试从编号追踪来源 + # ins_from = cls.objects.filter(number=number_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}-已存在不可使用") + # elif wpr_from is None: + # raise ParseError(f"该物料编号{number}-尝试历史编号追踪来源失败") if old_mb and ins.mb != old_mb: raise ParseError(f"请检查-{ins.number}-所属仓库批次")