采购记录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 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())
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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)
|
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):
|
||||||
|
|
|
@ -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)
|
|
@ -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()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue