采购记录need_test接口

This commit is contained in:
caoqianming 2022-01-14 16:34:20 +08:00
parent 75ff28535a
commit 4257741c2d
6 changed files with 69 additions and 9 deletions

View File

@ -2,11 +2,13 @@ from django.db.models import base
from rest_framework import urlpatterns from rest_framework import urlpatterns
from django.urls import path, include from django.urls import path, include
from rest_framework.routers import DefaultRouter from rest_framework.routers import DefaultRouter
from apps.develop.views import CleanDataView, UpdateCuttingView, UpdateLastTestResult from apps.develop.views import CleanDataView, UpdateCuttingView, UpdateFIFOItem, UpdateLastTestResult
urlpatterns = [ urlpatterns = [
path('cleandata/', CleanDataView.as_view()), path('cleandata/', CleanDataView.as_view()),
path('update_cutting/', UpdateCuttingView.as_view()), path('update_cutting/', UpdateCuttingView.as_view()),
path('update_last_result/', UpdateLastTestResult.as_view()) path('update_last_result/', UpdateLastTestResult.as_view()),
path('update_last_result/', UpdateLastTestResult.as_view()),
path('update_fifoitem/', UpdateFIFOItem.as_view())
] ]

View File

@ -4,7 +4,7 @@ from rest_framework.decorators import permission_classes
from rest_framework.views import APIView from rest_framework.views import APIView
from rest_framework.permissions import IsAdminUser from rest_framework.permissions import IsAdminUser
from rest_framework.response import Response from rest_framework.response import Response
from apps.inm.models import FIFO, Inventory, MaterialBatch from apps.inm.models import FIFO, FIFOItem, Inventory, MaterialBatch
from apps.mtm.models import Material from apps.mtm.models import Material
from apps.pm.models import ProductionPlan from apps.pm.models import ProductionPlan
from apps.sam.models import Order from apps.sam.models import Order
@ -62,3 +62,21 @@ class UpdateLastTestResult(APIView):
i.last_test_result = tr.is_testok i.last_test_result = tr.is_testok
i.save() i.save()
return Response() return Response()
class UpdateFIFOItem(APIView):
permission_classes = [IsAdminUser]
@transaction.atomic
def post(self, request, format=None):
"""
更新出入库结果
"""
for i in FIFOItem.objects.all():
if i.fifo.type == FIFO.FIFO_TYPE_PUR_IN:
if i.is_testok:
i.need_test = True
i.save()
else:
i.is_testok = None
i.save()
return Response()

View File

@ -0,0 +1,19 @@
# Generated by Django 3.2.9 on 2022-01-14 08:28
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('system', '0003_auto_20210812_0909'),
('inm', '0027_auto_20220114_1551'),
]
operations = [
migrations.AlterField(
model_name='fifoitem',
name='files',
field=models.ManyToManyField(blank=True, to='system.File', verbose_name='上传材料'),
),
]

View File

@ -96,7 +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='上传材料') files = models.ManyToManyField(File, verbose_name='上传材料', blank=True)
class IProduct(BaseModel): class IProduct(BaseModel):

View File

@ -1,3 +1,4 @@
from rest_framework import exceptions
from rest_framework import serializers from rest_framework import serializers
from apps.inm.models import FIFO, FIFOItem, FIFOItemProduct, IProduct, MaterialBatch, WareHouse, Inventory from apps.inm.models import FIFO, FIFOItem, FIFOItemProduct, IProduct, MaterialBatch, WareHouse, Inventory
@ -169,3 +170,19 @@ class InmTestRecordCreateSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = TestRecord model = TestRecord
fields = ['form', 'record_data', 'is_testok', 'fifo_item'] fields = ['form', 'record_data', 'is_testok', 'fifo_item']
class FIFOItemUpdateSerializer(serializers.ModelSerializer):
class Meta:
model = FIFOItem
fields = ['need_test', 'files']
def validate(self, attrs):
ins = self.instance
fifo = ins.fifo
if fifo.is_audited:
raise exceptions.APIException('该记录已审核')
if ins.is_testok is not None:
attrs.pop('need_test')
return super().validate(attrs)

View File

@ -1,12 +1,12 @@
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 from rest_framework.mixins import DestroyModelMixin, ListModelMixin, UpdateModelMixin
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
from apps.inm.models import FIFO, FIFOItem, IProduct, MaterialBatch, WareHouse, Inventory from apps.inm.models import FIFO, FIFOItem, IProduct, MaterialBatch, WareHouse, Inventory
from apps.inm.serializers import FIFOItemSerializer, FIFOInPurSerializer, FIFOListSerializer, IProductListSerializer, \ from apps.inm.serializers import FIFOItemSerializer, FIFOInPurSerializer, FIFOItemUpdateSerializer, FIFOListSerializer, IProductListSerializer, \
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
@ -77,7 +77,7 @@ class MaterialBatchViewSet(ListModelMixin, GenericViewSet):
return Response(MaterialBatchSerializer(instance=queryset, many=True).data) return Response(MaterialBatchSerializer(instance=queryset, many=True).data)
class FIFOItemViewSet(ListModelMixin, DestroyModelMixin, GenericViewSet): class FIFOItemViewSet(ListModelMixin, DestroyModelMixin, UpdateModelMixin, GenericViewSet):
""" """
出入库记录详情表 出入库记录详情表
""" """
@ -85,11 +85,16 @@ class FIFOItemViewSet(ListModelMixin, DestroyModelMixin, GenericViewSet):
queryset = FIFOItem.objects.select_related('material', 'fifo').all() queryset = FIFOItem.objects.select_related('material', 'fifo').all()
serializer_class = FIFOItemSerializer serializer_class = FIFOItemSerializer
filterset_fields = ['material', 'fifo', filterset_fields = ['material', 'fifo',
'fifo__type', 'is_tested', 'is_testok'] 'fifo__type', 'need_test', 'is_testok']
search_fields = [] search_fields = []
ordering_fields = ['create_time'] ordering_fields = ['create_time']
ordering = ['-create_time'] ordering = ['-create_time']
def get_serializer_class(self):
if self.action == 'update':
return FIFOItemUpdateSerializer
return super().get_serializer_class()
def perform_destroy(self, instance): def perform_destroy(self, instance):
if instance.fifo.is_audited: if instance.fifo.is_audited:
raise APIException('该出入库记录已通过审核, 无法删除') raise APIException('该出入库记录已通过审核, 无法删除')
@ -119,7 +124,6 @@ class FIFOItemViewSet(ListModelMixin, DestroyModelMixin, GenericViewSet):
# 如果检验合格 # 如果检验合格
if obj.fifo_item: if obj.fifo_item:
obj.fifo_item.is_testok = True if obj.is_testok else False obj.fifo_item.is_testok = True if obj.is_testok else False
obj.fifo_item.is_tested = True
obj.fifo_item.save() obj.fifo_item.save()
return Response() return Response()