feat: 日志提交时不合格品存储到车间库存
This commit is contained in:
parent
ee65658145
commit
d561a0d24b
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 3.2.12 on 2024-07-18 03:18
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('mtm', '0034_route_batch_bind'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='process',
|
||||
name='store_notok',
|
||||
field=models.BooleanField(default=False, verbose_name='不合格品是否入库'),
|
||||
),
|
||||
]
|
|
@ -16,6 +16,7 @@ class Process(CommonBModel):
|
|||
File, verbose_name='指导书', on_delete=models.SET_NULL, null=True, blank=True)
|
||||
instruction_content = models.TextField('指导书内容', null=True, blank=True)
|
||||
into_wm_mgroup = models.BooleanField('交接到工段', default=False)
|
||||
store_notok = models.BooleanField('不合格品是否入库', default=False)
|
||||
|
||||
class Meta:
|
||||
verbose_name = '工序'
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
# Generated by Django 3.2.12 on 2024-07-18 03:18
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('wpm', '0055_auto_20240717_1653'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='mlog',
|
||||
name='stored_mgroup',
|
||||
field=models.BooleanField(default=False, verbose_name='入库到工段'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='mlog',
|
||||
name='stored_notok',
|
||||
field=models.BooleanField(default=False, verbose_name='不合格品是否已入库'),
|
||||
),
|
||||
]
|
|
@ -110,6 +110,8 @@ class Mlog(CommonADModel):
|
|||
work_end_time = models.DateTimeField('生产结束时间', null=True, blank=True)
|
||||
hour_work = models.FloatField('预计工时', null=True, blank=True)
|
||||
reminder_interval_list = models.JSONField('提醒间隔', default=list, blank=True)
|
||||
stored_mgroup = models.BooleanField('入库到工段', default=False)
|
||||
stored_notok = models.BooleanField('不合格品是否已入库', default=False)
|
||||
route = models.ForeignKey(Route, verbose_name='生产路线', on_delete=models.SET_NULL, null=True, blank=True)
|
||||
mtask = models.ForeignKey(
|
||||
Mtask, verbose_name='关联任务', on_delete=models.CASCADE, null=True, blank=True, related_name='mlog_mtask')
|
||||
|
|
|
@ -220,17 +220,29 @@ def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
|
|||
wm.save()
|
||||
if material_out: # 需要入车间库存
|
||||
into_wm_mgroup = material_out.process.into_wm_mgroup if material_out.process else False
|
||||
need_store_notok = material_out.process.store_notok if material_out.process else False
|
||||
m_outs = Mlogb.objects.filter(mlog=mlog, material_out__isnull=False)
|
||||
stored_notok = False
|
||||
stored_mgroup = False
|
||||
if m_outs.exists():
|
||||
m_outs_list = [(mo.material_out, mo.batch if mo.batch else mlog.batch, mo.count_ok, mlog.count_real_eweight) for mo in m_outs.all()]
|
||||
m_outs_list = [(mo.material_out, mo.batch if mo.batch else mlog.batch, mo.count_ok, mlog.count_real_eweight, None) for mo in m_outs.all()]
|
||||
if need_store_notok:
|
||||
for item in m_outs:
|
||||
for f in Mlogb._meta.fields:
|
||||
if 'count_n_' in f.name and getattr(item, f.name) > 0:
|
||||
notok_sign = f.name.replace('count_n_', '')
|
||||
m_outs_list.append( (item.material_out, item.batch if item.batch else mlog.batch, getattr(item, f.name), mlog.count_real_eweight, notok_sign))
|
||||
stored_notok = True
|
||||
else:
|
||||
m_outs_list = [(material_out, mlog.batch, mlog.count_ok, mlog.count_real_eweight)]
|
||||
m_outs_list = [(material_out, mlog.batch, mlog.count_ok, mlog.count_real_eweight, None)]
|
||||
# 一次填写的暂时不处理不合格品
|
||||
|
||||
for mo in m_outs_list:
|
||||
mo_ma, mo_batch, mo_count, mo_count_eweight = mo
|
||||
lookup = {'batch': mo_batch, 'material': mo_ma, 'mgroup': None, 'notok_sign': None}
|
||||
mo_ma, mo_batch, mo_count, mo_count_eweight, notok_sign = mo
|
||||
lookup = {'batch': mo_batch, 'material': mo_ma, 'mgroup': None, 'notok_sign': notok_sign}
|
||||
if into_wm_mgroup:
|
||||
lookup['mgroup'] = mgroup
|
||||
stored_mgroup = True
|
||||
else:
|
||||
lookup['belong_dept'] = belong_dept
|
||||
if mo_count > 0:
|
||||
|
@ -239,8 +251,11 @@ def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
|
|||
wm.count_eweight = mo_count_eweight
|
||||
wm.update_by = user
|
||||
wm.save()
|
||||
|
||||
mlog.submit_time = now
|
||||
mlog.submit_user = user
|
||||
mlog.stored_notok = stored_notok
|
||||
mlog.stored_mgroup = stored_mgroup
|
||||
mlog.save()
|
||||
|
||||
|
||||
|
@ -256,6 +271,8 @@ def mlog_revert(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
|
|||
belong_dept = mgroup.belong_dept
|
||||
material_out = mlog.material_out
|
||||
material_in = mlog.material_in
|
||||
stored_notok = mlog.stored_notok
|
||||
stored_mgroup = mlog.stored_mgroup
|
||||
if material_in:
|
||||
# 领用数退回
|
||||
into_wm_mgroup = material_in.process.into_wm_mgroup if material_in.process else False
|
||||
|
@ -272,9 +289,8 @@ def mlog_revert(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
|
|||
mi_wm_in.save()
|
||||
else:
|
||||
lookup = {'batch': mi_batch, 'material': mi_ma, 'mgroup': None, 'notok_sign': None}
|
||||
if mi_wm_in:
|
||||
lookup['id']
|
||||
if into_wm_mgroup:
|
||||
# 退回到本工段
|
||||
lookup['mgroup'] = mgroup
|
||||
else:
|
||||
lookup['belong_dept'] = belong_dept
|
||||
|
@ -285,17 +301,24 @@ def mlog_revert(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
|
|||
wm.save()
|
||||
if material_out: # 产物退回
|
||||
# 有多个产物的情况
|
||||
into_wm_mgroup = material_out.process.into_wm_mgroup if material_out.process else False
|
||||
# 需要考虑不合格品退回的情况
|
||||
m_outs = Mlogb.objects.filter(mlog=mlog, material_out__isnull=False)
|
||||
if m_outs.exists():
|
||||
m_outs_list = [(mo.material_out, mo.batch if mo.batch else mlog.batch, mo.count_ok, mlog.count_real_eweight) for mo in m_outs.all()]
|
||||
m_outs_list = [(mo.material_out, mo.batch if mo.batch else mlog.batch, mo.count_ok, mlog.count_real_eweight, None) for mo in m_outs.all()]
|
||||
if stored_notok:
|
||||
for item in m_outs:
|
||||
for f in Mlogb._meta.fields:
|
||||
if 'count_n_' in f.name and getattr(item, f.name) > 0:
|
||||
notok_sign = f.name.replace('count_n_', '')
|
||||
m_outs_list.append( (item.material_out, item.batch if item.batch else mlog.batch, getattr(item, f.name), mlog.count_real_eweight, notok_sign))
|
||||
else:
|
||||
m_outs_list = [(material_out, mlog.batch, mlog.count_ok, mlog.count_real_eweight)]
|
||||
|
||||
m_outs_list = [(material_out, mlog.batch, mlog.count_ok, mlog.count_real_eweight, None)]
|
||||
# 一次填写的暂时不处理不合格品
|
||||
|
||||
for mo in m_outs_list:
|
||||
mo_ma, mo_batch, mo_count, _ = mo
|
||||
lookup = {'batch': mo_batch, 'material': mo_ma, 'mgroup': None, 'notok_sign': None}
|
||||
if into_wm_mgroup:
|
||||
mo_ma, mo_batch, mo_count, _, notok_sign = mo
|
||||
lookup = {'batch': mo_batch, 'material': mo_ma, 'mgroup': None, 'notok_sign': notok_sign}
|
||||
if stored_mgroup:
|
||||
lookup['mgroup'] = mgroup
|
||||
else:
|
||||
lookup['belong_dept'] = belong_dept
|
||||
|
|
Loading…
Reference in New Issue