采购记录need_test接口
This commit is contained in:
parent
75ff28535a
commit
4257741c2d
|
@ -2,11 +2,13 @@ from django.db.models import base
|
|||
from rest_framework import urlpatterns
|
||||
from django.urls import path, include
|
||||
from rest_framework.routers import DefaultRouter
|
||||
from apps.develop.views import CleanDataView, UpdateCuttingView, UpdateLastTestResult
|
||||
from apps.develop.views import CleanDataView, UpdateCuttingView, UpdateFIFOItem, UpdateLastTestResult
|
||||
|
||||
urlpatterns = [
|
||||
path('cleandata/', CleanDataView.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())
|
||||
]
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ from rest_framework.decorators import permission_classes
|
|||
from rest_framework.views import APIView
|
||||
from rest_framework.permissions import IsAdminUser
|
||||
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.pm.models import ProductionPlan
|
||||
from apps.sam.models import Order
|
||||
|
@ -62,3 +62,21 @@ class UpdateLastTestResult(APIView):
|
|||
i.last_test_result = tr.is_testok
|
||||
i.save()
|
||||
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()
|
||||
|
|
|
@ -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='上传材料'),
|
||||
),
|
||||
]
|
|
@ -96,7 +96,7 @@ class FIFOItem(BaseModel):
|
|||
on_delete=models.CASCADE)
|
||||
subproduction_plan = models.ForeignKey(
|
||||
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):
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
from rest_framework import exceptions
|
||||
from rest_framework import serializers
|
||||
|
||||
from apps.inm.models import FIFO, FIFOItem, FIFOItemProduct, IProduct, MaterialBatch, WareHouse, Inventory
|
||||
|
@ -169,3 +170,19 @@ class InmTestRecordCreateSerializer(serializers.ModelSerializer):
|
|||
class Meta:
|
||||
model = TestRecord
|
||||
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)
|
|
@ -1,12 +1,12 @@
|
|||
from rest_framework import serializers
|
||||
from rest_framework import exceptions
|
||||
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 apps.inm.filters import IProductFilterSet, MbFilterSet
|
||||
|
||||
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, \
|
||||
WareHouseCreateUpdateSerializer, InventorySerializer
|
||||
from apps.inm.signals import update_inm
|
||||
|
@ -77,7 +77,7 @@ class MaterialBatchViewSet(ListModelMixin, GenericViewSet):
|
|||
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()
|
||||
serializer_class = FIFOItemSerializer
|
||||
filterset_fields = ['material', 'fifo',
|
||||
'fifo__type', 'is_tested', 'is_testok']
|
||||
'fifo__type', 'need_test', 'is_testok']
|
||||
search_fields = []
|
||||
ordering_fields = ['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):
|
||||
if instance.fifo.is_audited:
|
||||
raise APIException('该出入库记录已通过审核, 无法删除')
|
||||
|
@ -119,7 +124,6 @@ class FIFOItemViewSet(ListModelMixin, DestroyModelMixin, GenericViewSet):
|
|||
# 如果检验合格
|
||||
if obj.fifo_item:
|
||||
obj.fifo_item.is_testok = True if obj.is_testok else False
|
||||
obj.fifo_item.is_tested = True
|
||||
obj.fifo_item.save()
|
||||
return Response()
|
||||
|
||||
|
|
Loading…
Reference in New Issue