fix: 变更单件产品的属性问题

This commit is contained in:
caoqianming 2025-01-17 09:57:53 +08:00
parent 7605574f37
commit 8b7887ec43
2 changed files with 20 additions and 8 deletions

View File

@ -10,7 +10,7 @@ from apps.wpm.models import WMaterial
from apps.wpm.services_2 import get_alldata_with_batch_and_store from apps.wpm.services_2 import get_alldata_with_batch_and_store
from apps.wpmw.models import Wpr from apps.wpmw.models import Wpr
from apps.qm.models import FtestDefect, Defect from apps.qm.models import FtestDefect, Defect
from django.db.models import Count from django.db.models import Count, Q
def do_out(item: MIOItem): def do_out(item: MIOItem):
""" """
@ -329,8 +329,11 @@ class InmService:
mb.count = mb.count + change_count mb.count = mb.count + change_count
mb.save() mb.save()
if tracking == Material.MA_TRACKING_SINGLE: if tracking == Material.MA_TRACKING_SINGLE:
mioitemws = MIOItemw.objects.filter(mioitem=i) if defect:
if mioitemws.count() != i.count: mioitemws = MIOItemw.objects.filter(mioitem=i, ftest__is_ok=False, ftest__defects_ftest__defect=defect)
else:
mioitemws = MIOItemw.objects.filter(Q(ftest=None) | Q(ftest__is_ok=True), mioitem=i)
if mioitemws.count() != change_count:
raise ParseError("出入库与明细数量不一致,操作失败") raise ParseError("出入库与明细数量不一致,操作失败")
for mioitemw in mioitemws: for mioitemw in mioitemws:
if mioitemw.wpr: if mioitemw.wpr:
@ -347,8 +350,11 @@ class InmService:
else: else:
mb.save() mb.save()
if tracking == Material.MA_TRACKING_SINGLE: if tracking == Material.MA_TRACKING_SINGLE:
mioitemws = MIOItemw.objects.filter(mioitem=i) if defect:
if mioitemws.count() != i.count: mioitemws = MIOItemw.objects.filter(mioitem=i, ftest__is_ok=False, ftest__defects_ftest__defect=defect)
else:
mioitemws = MIOItemw.objects.filter(Q(ftest=None) | Q(ftest__is_ok=True), mioitem=i)
if mioitemws.count() != change_count:
raise ParseError("出入库与明细数量不一致,操作失败") raise ParseError("出入库与明细数量不一致,操作失败")
for mioitemw in mioitemws: for mioitemw in mioitemws:
Wpr.change_or_new(wpr=mioitemw.wpr, old_mb=mb) Wpr.change_or_new(wpr=mioitemw.wpr, old_mb=mb)

View File

@ -20,7 +20,7 @@ from apps.wpm.services_2 import get_alldata_with_batch_and_store
from datetime import timedelta from datetime import timedelta
from apps.wpmw.models import Wpr, WprDefect from apps.wpmw.models import Wpr, WprDefect
from ..qm.models import Defect, FtestDefect from ..qm.models import Defect, FtestDefect
from django.db.models import Count from django.db.models import Count, Q
myLogger = logging.getLogger('log') myLogger = logging.getLogger('log')
@ -299,7 +299,10 @@ def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
wm.material_ofrom = mlog_or_b.material_ofrom wm.material_ofrom = mlog_or_b.material_ofrom
wm.save() wm.save()
if material_out.tracking == Material.MA_TRACKING_SINGLE: if material_out.tracking == Material.MA_TRACKING_SINGLE:
mlogbws = Mlogbw.objects.filter(mlogb=mlog_or_b) if notok_sign_or_defect:
mlogbws = Mlogbw.objects.filter(mlogb=mlog_or_b, ftest__is_ok=False, ftest__defects_ftest__defect=defect)
else:
mlogbws = Mlogbw.objects.filter(Q(ftest=None) | Q(ftest__is_ok=True), mioitem=mlog_or_b)
if mlogbws.count() != mo_count: if mlogbws.count() != mo_count:
raise ParseError("日志与明细数量不一致,操作失败") raise ParseError("日志与明细数量不一致,操作失败")
for item in mlogbws: for item in mlogbws:
@ -412,7 +415,10 @@ def mlog_revert(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
wm.update_by = user wm.update_by = user
wm.save() wm.save()
if material_out.tracking == Material.MA_TRACKING_SINGLE: if material_out.tracking == Material.MA_TRACKING_SINGLE:
mlogbws = Mlogbw.objects.filter(mlogb=mlog_or_b) if notok_sign_or_defect:
mlogbws = Mlogbw.objects.filter(mlogb=mlog_or_b, ftest__is_ok=False, ftest__defects_ftest__defect=defect)
else:
mlogbws = Mlogbw.objects.filter(Q(ftest=None) | Q(ftest__is_ok=True), mioitem=mlog_or_b)
if mlogbws.count() != mo_count: if mlogbws.count() != mo_count:
raise ParseError("日志与明细数量不一致,操作失败") raise ParseError("日志与明细数量不一致,操作失败")
for item in mlogbws: for item in mlogbws: