diff --git a/hb_server/apps/mtm/serializers.py b/hb_server/apps/mtm/serializers.py index b3e3b71..942ae3b 100644 --- a/hb_server/apps/mtm/serializers.py +++ b/hb_server/apps/mtm/serializers.py @@ -44,7 +44,7 @@ class PackItemUpdateSerializer(serializers.ModelSerializer): class MaterialSimpleSerializer(serializers.ModelSerializer): class Meta: model = Material - fields = ['id', 'name', 'number', 'unit','specification', 'type'] + fields = ['id', 'name', 'number', 'unit','specification', 'type', 'count', 'count_safe'] class PackItemDetailSerializer(serializers.ModelSerializer): material_ = MaterialSimpleSerializer(source='material', read_only=True) diff --git a/hb_server/apps/qm/serializers.py b/hb_server/apps/qm/serializers.py index 28a8829..93d5a76 100644 --- a/hb_server/apps/qm/serializers.py +++ b/hb_server/apps/qm/serializers.py @@ -97,6 +97,8 @@ class TestRecordDetailSerializer(serializers.ModelSerializer): # record_data = TestRecordItemSerializer(source='item_test_record', read_only=True, many=True) record_data = serializers.SerializerMethodField() origin_test_ = TestRecordDetailBaseSerializer(source='origin_test', read_only=True) + create_by_ = UserSimpleSerializer(source='create_by', read_only=True) + update_by_ = UserSimpleSerializer(source='update_by', read_only=True) class Meta: model = TestRecord fields = '__all__' diff --git a/hb_server/apps/sam/serializers_sale.py b/hb_server/apps/sam/serializers_sale.py index 1dda868..615deea 100644 --- a/hb_server/apps/sam/serializers_sale.py +++ b/hb_server/apps/sam/serializers_sale.py @@ -76,18 +76,23 @@ class SPackItemSerializer(serializers.ModelSerializer): class SaleProductPackDetailSerializer(serializers.ModelSerializer): detail = serializers.SerializerMethodField() class Meta: - model = ['packnum', 'detail'] + model = SaleProduct + fields = ['packnum', 'detail', 'remark'] def get_detail(self, obj): return SPackItemSerializer(instance=SalePack.objects.filter(sale_product=obj) , many=True).data class SPackItemCreateSerializer(serializers.Serializer): - id = serializers.PrimaryKeyRelatedField(queryset=PackItem.objects.all()) + id = serializers.PrimaryKeyRelatedField(queryset=SalePack.objects.all()) count = serializers.IntegerField() class SaleProductPackSerializer(serializers.ModelSerializer): detail = SPackItemCreateSerializer(many=True) class Meta: model = SaleProduct - fields = ['packnum', 'detail'] + fields = ['packnum', 'detail', 'remark'] + + +class SRemarkItemCreateSerializer(serializers.Serializer): + remark = serializers.CharField() diff --git a/hb_server/apps/sam/views_sale.py b/hb_server/apps/sam/views_sale.py index dad03e2..7c52345 100644 --- a/hb_server/apps/sam/views_sale.py +++ b/hb_server/apps/sam/views_sale.py @@ -6,7 +6,7 @@ from apps.inm.models import FIFO, FIFOItem, FIFOItemProduct, IProduct, WareHouse from apps.inm.services import InmService from apps.mtm.models import Material, PackItem from apps.sam.models import Sale, SalePack, SaleProduct -from apps.sam.serializers_sale import SaleCreateSerializer, SaleListSerializer, SaleProductCreateSerializer, SaleProductListSerializer, SaleProductPackDetailSerializer, SaleProductPackSerializer +from apps.sam.serializers_sale import SRemarkItemCreateSerializer, SaleCreateSerializer, SaleListSerializer, SaleProductCreateSerializer, SaleProductListSerializer, SaleProductPackDetailSerializer, SaleProductPackSerializer from rest_framework import exceptions from django.db import transaction from rest_framework.decorators import action @@ -159,9 +159,15 @@ class SaleProductViewSet(ListModelMixin, DestroyModelMixin, CreateModelMixin, Ge sale.count = SaleProduct.objects.filter(sale=obj.sale).count() sale.save() return Response() - - @action(methods=['get', 'post'], detail=True, perms_map={'post':'sale_pack'}, serializer_class=serializers.Serializer) + def create(self, request, *args, **kwargs): + obj = self.get_object() + sale = obj.sale + if sale.is_audited: + raise exceptions.APIException('该销售记录已审核,不可添加产品') + return super().create(request, *args, **kwargs) + + @action(methods=['get', 'post'], detail=True, perms_map={'post':'sale_pack', 'get':'*'}, serializer_class=SaleProductPackSerializer) @transaction.atomic def pack(self, request, pk=None): """ @@ -169,7 +175,7 @@ class SaleProductViewSet(ListModelMixin, DestroyModelMixin, CreateModelMixin, Ge """ obj = self.get_object() if request.method == 'GET': - for i in PackItem.objects.filter(product=obj.product.material, is_deleted=False): + for i in PackItem.objects.filter(product=obj.iproduct.material, is_deleted=False): SalePack.objects.get_or_create(sale_product=obj, packitem=i, defaults={ "sale_product":obj, @@ -182,8 +188,24 @@ class SaleProductViewSet(ListModelMixin, DestroyModelMixin, CreateModelMixin, Ge serializer.is_valid(raise_exception=True) vdata = serializer.validated_data obj.packnum = vdata['packnum'] + obj.remark = vdata.get('remark', '') for i in vdata['detail']: pi = i['id'] pi.count = i['count'] pi.save() - return Response() \ No newline at end of file + obj.save() + return Response() + + @action(methods=['post'], detail=True, perms_map={'post':'sale_pack'}, serializer_class=SRemarkItemCreateSerializer) + @transaction.atomic + def remark(self, request, pk=None): + """ + 不装箱备注 + """ + obj = self.get_object() + serializer = self.get_serializer(data=request.data) + serializer.is_valid(raise_exception=True) + vdata = serializer.validated_data + obj.remark = vdata['remark'] + obj.save() + return Response() \ No newline at end of file