出入库增加need_test字段

This commit is contained in:
caoqianming 2022-01-14 15:51:35 +08:00
parent 490440cad3
commit 75ff28535a
7 changed files with 47 additions and 21 deletions

View File

@ -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']

View File

@ -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='是否复验合格'),
),
]

View File

@ -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):

View File

@ -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:

View File

@ -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']

View File

@ -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)
# 创建再下一个层级 # 创建再下一个层级

View File

@ -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 # 单个半成品入库