feat: 调整wpmw允许编号重复

This commit is contained in:
caoqianming 2025-03-14 09:02:49 +08:00
parent f58b84a4ee
commit dcfa6155a9
2 changed files with 30 additions and 7 deletions

View File

@ -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='来源于'),
),
]

View File

@ -22,6 +22,7 @@ class Wpr(BaseModel):
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)
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
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()
return
elif number:
wpr_from = None
try:
if wm:
ins = cls.objects.get(number=number, wm__material=wm.material)
elif mb:
ins = cls.objects.get(number=number, mb__material=mb.material)
ins = cls.objects.get(number=number)
if ins.wm is None and ins.mb is None:
if ins.version > 1: # 说明被复用了
wpr_from = ins
else:
raise ParseError(f"该物料编号{number}-已存在不可使用")
else:
raise ParseError(f"该物料编号{number}-请指定ID")
raise ParseError(f"该物料编号{number}-已存在不可使用")
raise ParseError(f"该物料编号{number}-已存在不可使用")
except cls.DoesNotExist:
ins = cls(number=number)
ins.version = 0
ins.wpr_from = wpr_from
ins.version = -1
if old_mb and ins.mb != old_mb:
raise ParseError(f"请检查-{ins.number}-所属仓库批次")