feat: wpr追溯上游
This commit is contained in:
parent
4e7757f64d
commit
bac30a2925
|
@ -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):
|
||||
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):
|
||||
if wpr is None and number is None:
|
||||
raise ParseError("id和number不能同时为空")
|
||||
if mb and wm:
|
||||
|
@ -39,11 +39,11 @@ class Wpr(BaseModel):
|
|||
return
|
||||
elif number:
|
||||
try:
|
||||
ins = cls.objects.get(number=number)
|
||||
if ins.wm is None and ins.mb is None:
|
||||
if ins.version > 1: # 说明被复用了
|
||||
ins_x = cls.objects.get(number=number)
|
||||
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
|
||||
wpr_from = ins_x
|
||||
else:
|
||||
raise ParseError(f"该物料编号{number}-已存在不可使用")
|
||||
else:
|
||||
|
@ -52,15 +52,22 @@ class Wpr(BaseModel):
|
|||
ins = cls(number=number)
|
||||
ins.version = -1
|
||||
ins.oinfo = {}
|
||||
if batch_from: # 尝试从批号追踪来源
|
||||
try:
|
||||
ins_from = cls.objects.get(number=number)
|
||||
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
|
||||
|
||||
if old_mb and ins.mb != old_mb:
|
||||
raise ParseError(f"请检查-{ins.number}-所属仓库批次")
|
||||
if old_wm and ins.wm != old_wm:
|
||||
raise ParseError(f"请检查-{ins.number}-所属车间批次")
|
||||
|
||||
if number:
|
||||
ins.number = number
|
||||
|
||||
ins.wpr_from = wpr_from
|
||||
ins.mb = mb
|
||||
if mb:
|
||||
|
|
Loading…
Reference in New Issue