fix: 变更单件产品的属性问题
This commit is contained in:
parent
7605574f37
commit
8b7887ec43
|
@ -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)
|
||||||
|
|
|
@ -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:
|
||||||
|
|
Loading…
Reference in New Issue