feat: 调整wpmw允许编号重复
This commit is contained in:
parent
f58b84a4ee
commit
dcfa6155a9
|
@ -0,0 +1,19 @@
|
||||||
|
# Generated by Django 3.2.12 on 2025-03-14 01:02
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('wpmw', '0004_auto_20250312_1610'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='wpr',
|
||||||
|
name='wpr_from',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='wpmw.wpr', verbose_name='来源于'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -22,6 +22,7 @@ class Wpr(BaseModel):
|
||||||
mb = models.ForeignKey("inm.materialbatch", verbose_name="仓库物料", on_delete=models.CASCADE, null=True, blank=True)
|
mb = models.ForeignKey("inm.materialbatch", verbose_name="仓库物料", on_delete=models.CASCADE, null=True, blank=True)
|
||||||
wm = models.ForeignKey("wpm.wmaterial", verbose_name="车间物料", on_delete=models.CASCADE, null=True, blank=True)
|
wm = models.ForeignKey("wpm.wmaterial", verbose_name="车间物料", on_delete=models.CASCADE, null=True, blank=True)
|
||||||
oinfo = models.JSONField(verbose_name="其他信息", default=dict, blank=True)
|
oinfo = models.JSONField(verbose_name="其他信息", default=dict, blank=True)
|
||||||
|
wpr_from = models.ForeignKey("self", verbose_name="来源于", on_delete=models.CASCADE, null=True, blank=True)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def change_or_new(cls, wpr=None, number=None, mb=None, wm=None, old_mb=None, old_wm=None, ftest=None):
|
def change_or_new(cls, wpr=None, number=None, mb=None, wm=None, old_mb=None, old_wm=None, ftest=None):
|
||||||
|
@ -36,17 +37,20 @@ class Wpr(BaseModel):
|
||||||
wpr.delete()
|
wpr.delete()
|
||||||
return
|
return
|
||||||
elif number:
|
elif number:
|
||||||
|
wpr_from = None
|
||||||
try:
|
try:
|
||||||
if wm:
|
ins = cls.objects.get(number=number)
|
||||||
ins = cls.objects.get(number=number, wm__material=wm.material)
|
if ins.wm is None and ins.mb is None:
|
||||||
elif mb:
|
if ins.version > 1: # 说明被复用了
|
||||||
ins = cls.objects.get(number=number, mb__material=mb.material)
|
wpr_from = ins
|
||||||
|
else:
|
||||||
|
raise ParseError(f"该物料编号{number}-已存在不可使用")
|
||||||
else:
|
else:
|
||||||
raise ParseError(f"该物料编号{number}-请指定ID")
|
|
||||||
raise ParseError(f"该物料编号{number}-已存在不可使用")
|
raise ParseError(f"该物料编号{number}-已存在不可使用")
|
||||||
except cls.DoesNotExist:
|
except cls.DoesNotExist:
|
||||||
ins = cls(number=number)
|
ins = cls(number=number)
|
||||||
ins.version = 0
|
ins.wpr_from = wpr_from
|
||||||
|
ins.version = -1
|
||||||
|
|
||||||
if old_mb and ins.mb != old_mb:
|
if old_mb and ins.mb != old_mb:
|
||||||
raise ParseError(f"请检查-{ins.number}-所属仓库批次")
|
raise ParseError(f"请检查-{ins.number}-所属仓库批次")
|
||||||
|
|
Loading…
Reference in New Issue