出入库增加need_test字段
This commit is contained in:
parent
490440cad3
commit
75ff28535a
|
@ -3,22 +3,25 @@ from django_filters import rest_framework as filters
|
||||||
from apps.mtm.models import Material
|
from apps.mtm.models import Material
|
||||||
from .models import IProduct, MaterialBatch
|
from .models import IProduct, MaterialBatch
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
|
|
||||||
|
|
||||||
class MbFilterSet(filters.FilterSet):
|
class MbFilterSet(filters.FilterSet):
|
||||||
material = filters.ModelMultipleChoiceFilter(field_name="material", queryset=Material.objects.all())
|
material = filters.ModelMultipleChoiceFilter(field_name="material", queryset=Material.objects.all())
|
||||||
tag = filters.CharFilter(method="filter_tag")
|
tag = filters.CharFilter(method="filter_tag")
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = MaterialBatch
|
model = MaterialBatch
|
||||||
fields = ['material', 'warehouse']
|
fields = ['material', 'warehouse']
|
||||||
|
|
||||||
def filter_tag(self, queryset, name, value):
|
def filter_tag(self, queryset, name, value):
|
||||||
if value == 'expired':
|
if value == 'expired':
|
||||||
queryset = queryset.exclude(expiration_date=None).filter(expiration_date__lte = timezone.now())
|
queryset = queryset.exclude(expiration_date=None).filter(expiration_date__lte=timezone.now())
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
|
||||||
class IProductFilterSet(filters.FilterSet):
|
class IProductFilterSet(filters.FilterSet):
|
||||||
|
|
||||||
order = filters.NumberFilter(field_name="wproduct__subproduction_plan__production_plan__order")
|
order = filters.NumberFilter(field_name="wproduct__subproduction_plan__production_plan__order")
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = IProduct
|
model = IProduct
|
||||||
fields = ['material', 'warehouse', 'batch', 'order', 'material__type']
|
fields = ['material', 'warehouse', 'batch', 'order', 'material__type']
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
# Generated by Django 3.2.9 on 2022-01-14 07:51
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('system', '0003_auto_20210812_0909'),
|
||||||
|
('inm', '0026_alter_fifo_inout_date'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name='fifoitem',
|
||||||
|
name='is_tested',
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='fifoitem',
|
||||||
|
name='files',
|
||||||
|
field=models.ManyToManyField(to='system.File', verbose_name='上传材料'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='fifoitem',
|
||||||
|
name='need_test',
|
||||||
|
field=models.BooleanField(default=False, verbose_name='是否需要复验'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='fifoitem',
|
||||||
|
name='is_testok',
|
||||||
|
field=models.BooleanField(blank=True, null=True, verbose_name='是否复验合格'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -84,8 +84,8 @@ class FIFOItem(BaseModel):
|
||||||
"""
|
"""
|
||||||
出入库详细条目
|
出入库详细条目
|
||||||
"""
|
"""
|
||||||
is_tested = models.BooleanField('是否已检验', default=False)
|
need_test = models.BooleanField('是否需要复验', default=False)
|
||||||
is_testok = models.BooleanField('是否检验合格', default=False)
|
is_testok = models.BooleanField('是否复验合格', null=True, blank=True)
|
||||||
warehouse = models.ForeignKey(
|
warehouse = models.ForeignKey(
|
||||||
WareHouse, on_delete=models.CASCADE, verbose_name='仓库')
|
WareHouse, on_delete=models.CASCADE, verbose_name='仓库')
|
||||||
material = models.ForeignKey(
|
material = models.ForeignKey(
|
||||||
|
@ -96,6 +96,7 @@ class FIFOItem(BaseModel):
|
||||||
on_delete=models.CASCADE)
|
on_delete=models.CASCADE)
|
||||||
subproduction_plan = models.ForeignKey(
|
subproduction_plan = models.ForeignKey(
|
||||||
SubProductionPlan, verbose_name='关联子生产计划', on_delete=models.CASCADE, null=True, blank=True)
|
SubProductionPlan, verbose_name='关联子生产计划', on_delete=models.CASCADE, null=True, blank=True)
|
||||||
|
files = models.ManyToManyField(File, verbose_name='上传材料')
|
||||||
|
|
||||||
|
|
||||||
class IProduct(BaseModel):
|
class IProduct(BaseModel):
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
from django.shortcuts import render
|
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from rest_framework import exceptions
|
from rest_framework import exceptions
|
||||||
from rest_framework.exceptions import APIException
|
from rest_framework.exceptions import APIException
|
||||||
from rest_framework.mixins import DestroyModelMixin, ListModelMixin, RetrieveModelMixin
|
from rest_framework.mixins import DestroyModelMixin, ListModelMixin
|
||||||
from rest_framework.viewsets import GenericViewSet, ModelViewSet
|
from rest_framework.viewsets import GenericViewSet, ModelViewSet
|
||||||
from apps.inm.filters import IProductFilterSet, MbFilterSet
|
from apps.inm.filters import IProductFilterSet, MbFilterSet
|
||||||
|
|
||||||
|
@ -11,17 +10,13 @@ from apps.inm.serializers import FIFOItemSerializer, FIFOInPurSerializer, FIFOLi
|
||||||
InmTestRecordCreateSerializer, MaterialBatchQuerySerializer, MaterialBatchSerializer, WareHouseSerializer, \
|
InmTestRecordCreateSerializer, MaterialBatchQuerySerializer, MaterialBatchSerializer, WareHouseSerializer, \
|
||||||
WareHouseCreateUpdateSerializer, InventorySerializer
|
WareHouseCreateUpdateSerializer, InventorySerializer
|
||||||
from apps.inm.signals import update_inm
|
from apps.inm.signals import update_inm
|
||||||
from apps.mtm.models import Material
|
|
||||||
from apps.pm.services import PmService
|
|
||||||
from apps.qm.models import TestRecordItem
|
from apps.qm.models import TestRecordItem
|
||||||
from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin
|
from apps.system.mixins import CreateUpdateModelAMixin
|
||||||
from rest_framework.decorators import action
|
from rest_framework.decorators import action
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from django.db import transaction
|
from django.db import transaction
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
|
|
||||||
from apps.wpm.services import WpmServies
|
|
||||||
|
|
||||||
|
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
|
|
||||||
|
@ -168,7 +163,7 @@ class FIFOViewSet(ListModelMixin, DestroyModelMixin, GenericViewSet):
|
||||||
审核通过
|
审核通过
|
||||||
"""
|
"""
|
||||||
obj = self.get_object()
|
obj = self.get_object()
|
||||||
for i in FIFOItem.objects.filter(fifo=obj):
|
for i in FIFOItem.objects.filter(fifo=obj, need_test=True):
|
||||||
if not i.is_testok:
|
if not i.is_testok:
|
||||||
raise APIException('未检验通过, 不可审核')
|
raise APIException('未检验通过, 不可审核')
|
||||||
if obj.is_audited:
|
if obj.is_audited:
|
||||||
|
|
|
@ -150,8 +150,7 @@ class SaleViewSet(CreateUpdateCustomMixin, ListModelMixin, RetrieveModelMixin, C
|
||||||
warehouse = WareHouse.objects.get(id=i['warehouse'])
|
warehouse = WareHouse.objects.get(id=i['warehouse'])
|
||||||
material = Material.objects.get(id=i['material'])
|
material = Material.objects.get(id=i['material'])
|
||||||
fifoitem = FIFOItem()
|
fifoitem = FIFOItem()
|
||||||
fifoitem.is_tested = True
|
fifoitem.need_test = False
|
||||||
fifoitem.is_testok = True
|
|
||||||
fifoitem.warehouse = warehouse
|
fifoitem.warehouse = warehouse
|
||||||
fifoitem.material = material
|
fifoitem.material = material
|
||||||
fifoitem.count = i['total']
|
fifoitem.count = i['total']
|
||||||
|
|
|
@ -69,7 +69,6 @@ class PickSerializer(serializers.Serializer):
|
||||||
if isLowLevel:
|
if isLowLevel:
|
||||||
iproducts = i.pop('iproducts')
|
iproducts = i.pop('iproducts')
|
||||||
i['fifo'] = fifo
|
i['fifo'] = fifo
|
||||||
i['is_testok'] = True # 默认检验合格
|
|
||||||
i['subproduction_plan'] = sp
|
i['subproduction_plan'] = sp
|
||||||
fifoitem = FIFOItem.objects.create(**i)
|
fifoitem = FIFOItem.objects.create(**i)
|
||||||
# 创建再下一个层级
|
# 创建再下一个层级
|
||||||
|
|
|
@ -248,8 +248,6 @@ class WProductViewSet(ListModelMixin, RetrieveModelMixin, GenericViewSet):
|
||||||
for i in wproducts_a:
|
for i in wproducts_a:
|
||||||
spi = SubProductionPlan.objects.get(pk=i['subproduction_plan'])
|
spi = SubProductionPlan.objects.get(pk=i['subproduction_plan'])
|
||||||
fifoitem = FIFOItem()
|
fifoitem = FIFOItem()
|
||||||
fifoitem.is_tested = True
|
|
||||||
fifoitem.is_testok = True
|
|
||||||
fifoitem.warehouse = warehouse
|
fifoitem.warehouse = warehouse
|
||||||
fifoitem.material = Material.objects.get(pk=i['material'])
|
fifoitem.material = Material.objects.get(pk=i['material'])
|
||||||
fifoitem.count = i['total']
|
fifoitem.count = i['total']
|
||||||
|
@ -303,8 +301,6 @@ class WProductViewSet(ListModelMixin, RetrieveModelMixin, GenericViewSet):
|
||||||
create_by=request.user, remark=remark)
|
create_by=request.user, remark=remark)
|
||||||
# 创建入库明细
|
# 创建入库明细
|
||||||
fifoitem = FIFOItem()
|
fifoitem = FIFOItem()
|
||||||
fifoitem.is_tested = True
|
|
||||||
fifoitem.is_testok = True
|
|
||||||
fifoitem.warehouse = warehouse
|
fifoitem.warehouse = warehouse
|
||||||
fifoitem.material = material
|
fifoitem.material = material
|
||||||
fifoitem.count = 1 # 单个半成品入库
|
fifoitem.count = 1 # 单个半成品入库
|
||||||
|
|
Loading…
Reference in New Issue