采购订单的审核

This commit is contained in:
caoqianming 2022-01-27 16:08:20 +08:00
parent c8c6945a38
commit 7271c78cd6
3 changed files with 64 additions and 6 deletions

View File

@ -19,6 +19,11 @@ class PuOrderItemSerializer(ModelSerializer):
model = PuOrderItem
fields = '__all__'
class PuOrderItemCreateUpdateSerializer(ModelSerializer):
class Meta:
model = PuOrderItem
fields = ['count', 'delivery_date']
class PuOrderSerializer(ModelSerializer):
vendor_ = VendorSimpleSerializer(source='vendor', read_only=True)
items = PuOrderItemSerializer(source='item_pu_order', many=True, read_only=True)
@ -28,4 +33,5 @@ class PuOrderSerializer(ModelSerializer):
class PuOrderCreateUpdateSerializer(ModelSerializer):
class Meta:
model = PuOrder
fields = ['number', 'vendor']

View File

@ -1,11 +1,13 @@
from django.db.models import base
from rest_framework import urlpatterns
from apps.pum.views import VendorViewSet
from apps.pum.views import PuOrderItemViewSet, PuOrderViewSet, VendorViewSet
from django.urls import path, include
from rest_framework.routers import DefaultRouter
router = DefaultRouter()
router.register('vendor', VendorViewSet, basename='vendor')
router.register('pu_order', PuOrderViewSet, basename='pu_order')
router.register('pu_order_item', PuOrderItemViewSet, basename='pu_order_item')
urlpatterns = [
path('', include(router.urls)),
]

View File

@ -1,13 +1,17 @@
from django.shortcuts import render
from numpy import delete
from rest_framework.viewsets import ModelViewSet
from rest_framework.mixins import CreateModelMixin, DestroyModelMixin
from rest_framework.viewsets import GenericViewSet
from apps.pum.models import PuOrder, Vendor
from apps.pum.serializers import PuOrderCreateUpdateSerializer, PuOrderSerializer, VendorSerializer
from apps.pum.models import PuOrder, PuOrderItem, Vendor
from apps.pum.serializers import PuOrderCreateUpdateSerializer, PuOrderItemCreateUpdateSerializer, PuOrderItemSerializer, PuOrderSerializer, VendorSerializer
from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin
from rest_framework.exceptions import APIException, ValidationError
from rest_framework.decorators import action
from rest_framework import serializers
from rest_framework.response import Response
from rest_framework import status
# Create your views here.
class VendorViewSet(CreateUpdateModelAMixin, ModelViewSet):
"""
@ -41,7 +45,53 @@ class PuOrderViewSet(CreateUpdateModelAMixin, ModelViewSet):
return PuOrderCreateUpdateSerializer
return super().get_serializer_class()
def update(self, request, *args, **kwargs):
obj = self.get_object()
if obj.is_audited:
raise ValidationError('该采购订单已审核')
return super().update(request, *args, **kwargs)
def destroy(self, request, *args, **kwargs):
obj = self.get_object()
if obj.is_audited:
raise ValidationError('该采购订单已审核')
return super().destroy(request, *args, **kwargs)
@action(methods=['post'], detail=True, perms_map={'post':'*'},
serializer_class=serializers.Serializer)
def audit(self, request, pk=None):
obj = self.get_object()
if obj.item_pu_order.exists() and not obj.is_audited:
obj.is_audited = True
obj.update_by = request.user
obj.save()
return Response()
return Response('订单状态有误', status=status.HTTP_400_BAD_REQUEST)
class PuOrderItemViewSet(CreateModelMixin, DestroyModelMixin, GenericViewSet):
pass
"""
采购订单条目
"""
perms_map = {'get': '*', 'post': '*',
'put': '*', 'delete': '*'}
queryset = PuOrderItem.objects.select_related('material').all()
serializer_class = PuOrderItemSerializer
filterset_fields = ['pu_order', 'material']
ordering = ['-create_time']
def get_serializer_class(self):
if self.action in ['create', 'update']:
return PuOrderItemCreateUpdateSerializer
return super().get_serializer_class()
def create(self, request, *args, **kwargs):
obj = self.get_object()
if obj.pu_order.is_audited:
raise ValidationError('所属采购已审核')
return super().create(request, *args, **kwargs)
def destroy(self, request, *args, **kwargs):
obj = self.get_object()
if obj.pu_order.is_audited:
raise ValidationError('所属采购已审核')
return super().destroy(request, *args, **kwargs)