feat: 支持个号转批号4
This commit is contained in:
parent
7131697802
commit
6b8fa4e58c
|
@ -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()
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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}-所属仓库批次")
|
||||
|
|
Loading…
Reference in New Issue