采购订单的审核
This commit is contained in:
parent
c8c6945a38
commit
7271c78cd6
|
@ -19,6 +19,11 @@ class PuOrderItemSerializer(ModelSerializer):
|
||||||
model = PuOrderItem
|
model = PuOrderItem
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
|
|
||||||
|
class PuOrderItemCreateUpdateSerializer(ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = PuOrderItem
|
||||||
|
fields = ['count', 'delivery_date']
|
||||||
|
|
||||||
class PuOrderSerializer(ModelSerializer):
|
class PuOrderSerializer(ModelSerializer):
|
||||||
vendor_ = VendorSimpleSerializer(source='vendor', read_only=True)
|
vendor_ = VendorSimpleSerializer(source='vendor', read_only=True)
|
||||||
items = PuOrderItemSerializer(source='item_pu_order', many=True, 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 PuOrderCreateUpdateSerializer(ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
|
model = PuOrder
|
||||||
fields = ['number', 'vendor']
|
fields = ['number', 'vendor']
|
|
@ -1,11 +1,13 @@
|
||||||
from django.db.models import base
|
from django.db.models import base
|
||||||
from rest_framework import urlpatterns
|
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 django.urls import path, include
|
||||||
from rest_framework.routers import DefaultRouter
|
from rest_framework.routers import DefaultRouter
|
||||||
|
|
||||||
router = DefaultRouter()
|
router = DefaultRouter()
|
||||||
router.register('vendor', VendorViewSet, basename='vendor')
|
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 = [
|
urlpatterns = [
|
||||||
path('', include(router.urls)),
|
path('', include(router.urls)),
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,13 +1,17 @@
|
||||||
|
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
|
from numpy import delete
|
||||||
from rest_framework.viewsets import ModelViewSet
|
from rest_framework.viewsets import ModelViewSet
|
||||||
from rest_framework.mixins import CreateModelMixin, DestroyModelMixin
|
from rest_framework.mixins import CreateModelMixin, DestroyModelMixin
|
||||||
from rest_framework.viewsets import GenericViewSet
|
from rest_framework.viewsets import GenericViewSet
|
||||||
from apps.pum.models import PuOrder, Vendor
|
from apps.pum.models import PuOrder, PuOrderItem, Vendor
|
||||||
from apps.pum.serializers import PuOrderCreateUpdateSerializer, PuOrderSerializer, VendorSerializer
|
from apps.pum.serializers import PuOrderCreateUpdateSerializer, PuOrderItemCreateUpdateSerializer, PuOrderItemSerializer, PuOrderSerializer, VendorSerializer
|
||||||
from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin
|
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.
|
# Create your views here.
|
||||||
class VendorViewSet(CreateUpdateModelAMixin, ModelViewSet):
|
class VendorViewSet(CreateUpdateModelAMixin, ModelViewSet):
|
||||||
"""
|
"""
|
||||||
|
@ -41,7 +45,53 @@ class PuOrderViewSet(CreateUpdateModelAMixin, ModelViewSet):
|
||||||
return PuOrderCreateUpdateSerializer
|
return PuOrderCreateUpdateSerializer
|
||||||
return super().get_serializer_class()
|
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):
|
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)
|
Loading…
Reference in New Issue