84 lines
3.0 KiB
Python
84 lines
3.0 KiB
Python
from django.shortcuts import render
|
|
from rest_framework import serializers
|
|
from rest_framework.mixins import ListModelMixin, RetrieveModelMixin
|
|
from rest_framework.viewsets import GenericViewSet, ModelViewSet
|
|
|
|
from apps.inm.models import FIFO, FIFODetail, MaterialBatch, WareHouse,Inventory
|
|
from apps.inm.serializers import FIFODetailSerializer, FIFOInPurSerializer, FIFOListSerializer, MaterialBatchSerializer, WareHouseSerializer, WareHouseCreateUpdateSerializer,InventorySerializer
|
|
from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin
|
|
from rest_framework.decorators import action
|
|
from rest_framework.response import Response
|
|
|
|
# Create your views here.
|
|
class WarehouseViewSet(CreateUpdateModelAMixin, ModelViewSet):
|
|
"""
|
|
仓库-增删改查
|
|
"""
|
|
perms_map = {'*': '*'}
|
|
queryset = WareHouse.objects.select_related('create_by').all()
|
|
serializer_class = WareHouseSerializer
|
|
search_fields = ['name', 'number', 'place']
|
|
filterset_fields = []
|
|
ordering_fields = ['create_time']
|
|
ordering = ['-create_time']
|
|
|
|
def get_serializer_class(self):
|
|
if self.action in ['create', 'update']:
|
|
return WareHouseCreateUpdateSerializer
|
|
return WareHouseSerializer
|
|
|
|
class InventoryViewSet(ListModelMixin, GenericViewSet):
|
|
"""
|
|
仓库物料表
|
|
"""
|
|
perms_map = {'*': '*'}
|
|
queryset = Inventory.objects.select_related('material', 'warehouse').all()
|
|
serializer_class = InventorySerializer
|
|
filterset_fields = ['material', 'warehouse']
|
|
search_fields = []
|
|
ordering_fields = ['create_time']
|
|
ordering = ['-create_time']
|
|
|
|
class MaterialBatchViewSet(ListModelMixin, GenericViewSet):
|
|
perms_map = {'*': '*'}
|
|
queryset = MaterialBatch.objects.select_related('material', 'warehouse').all()
|
|
serializer_class = MaterialBatchSerializer
|
|
filterset_fields = ['material', 'warehouse']
|
|
search_fields = []
|
|
ordering_fields = ['create_time']
|
|
ordering = ['-create_time']
|
|
|
|
class FIFODetailViewSet(ListModelMixin, GenericViewSet):
|
|
"""
|
|
出入库记录详情表
|
|
"""
|
|
perms_map = {'*': '*'}
|
|
queryset = FIFODetail.objects.select_related('material', 'fifo').all()
|
|
serializer_class = FIFODetailSerializer
|
|
filterset_fields = ['material', 'fifo']
|
|
search_fields = []
|
|
ordering_fields = ['create_time']
|
|
ordering = ['-create_time']
|
|
|
|
class FIFOViewSet(ListModelMixin, GenericViewSet):
|
|
"""
|
|
出入库记录
|
|
"""
|
|
perms_map = {'*': '*'}
|
|
queryset = FIFO.objects.select_related('warehouse', 'operator')
|
|
filterset_fields = ['warehouse']
|
|
|
|
def get_serializer_class(self):
|
|
if self.action == 'list':
|
|
return FIFOListSerializer
|
|
|
|
@action(methods=['post'], detail=False, perms_map={'post':'*'}, serializer_class=FIFOInPurSerializer)
|
|
def in_pur(self, request, pk=None):
|
|
"""
|
|
采购入库
|
|
"""
|
|
serializer = self.get_serializer(data=request.data)
|
|
serializer.is_valid(raise_exception=True)
|
|
serializer.save(create_by=request.user)
|
|
return Response()
|
|
|