Merge branch 'develop' of https://e.coding.net/ctcdevteam/hberp/hberp into develop

This commit is contained in:
shijing 2022-02-23 10:52:34 +08:00
commit ae75669c9e
4 changed files with 38 additions and 9 deletions

View File

@ -44,7 +44,7 @@ class PackItemUpdateSerializer(serializers.ModelSerializer):
class MaterialSimpleSerializer(serializers.ModelSerializer): class MaterialSimpleSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = Material model = Material
fields = ['id', 'name', 'number', 'unit','specification', 'type'] fields = ['id', 'name', 'number', 'unit','specification', 'type', 'count', 'count_safe']
class PackItemDetailSerializer(serializers.ModelSerializer): class PackItemDetailSerializer(serializers.ModelSerializer):
material_ = MaterialSimpleSerializer(source='material', read_only=True) material_ = MaterialSimpleSerializer(source='material', read_only=True)

View File

@ -97,6 +97,8 @@ class TestRecordDetailSerializer(serializers.ModelSerializer):
# record_data = TestRecordItemSerializer(source='item_test_record', read_only=True, many=True) # record_data = TestRecordItemSerializer(source='item_test_record', read_only=True, many=True)
record_data = serializers.SerializerMethodField() record_data = serializers.SerializerMethodField()
origin_test_ = TestRecordDetailBaseSerializer(source='origin_test', read_only=True) 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: class Meta:
model = TestRecord model = TestRecord
fields = '__all__' fields = '__all__'

View File

@ -76,18 +76,23 @@ class SPackItemSerializer(serializers.ModelSerializer):
class SaleProductPackDetailSerializer(serializers.ModelSerializer): class SaleProductPackDetailSerializer(serializers.ModelSerializer):
detail = serializers.SerializerMethodField() detail = serializers.SerializerMethodField()
class Meta: class Meta:
model = ['packnum', 'detail'] model = SaleProduct
fields = ['packnum', 'detail', 'remark']
def get_detail(self, obj): def get_detail(self, obj):
return SPackItemSerializer(instance=SalePack.objects.filter(sale_product=obj) return SPackItemSerializer(instance=SalePack.objects.filter(sale_product=obj)
, many=True).data , many=True).data
class SPackItemCreateSerializer(serializers.Serializer): class SPackItemCreateSerializer(serializers.Serializer):
id = serializers.PrimaryKeyRelatedField(queryset=PackItem.objects.all()) id = serializers.PrimaryKeyRelatedField(queryset=SalePack.objects.all())
count = serializers.IntegerField() count = serializers.IntegerField()
class SaleProductPackSerializer(serializers.ModelSerializer): class SaleProductPackSerializer(serializers.ModelSerializer):
detail = SPackItemCreateSerializer(many=True) detail = SPackItemCreateSerializer(many=True)
class Meta: class Meta:
model = SaleProduct model = SaleProduct
fields = ['packnum', 'detail'] fields = ['packnum', 'detail', 'remark']
class SRemarkItemCreateSerializer(serializers.Serializer):
remark = serializers.CharField()

View File

@ -6,7 +6,7 @@ from apps.inm.models import FIFO, FIFOItem, FIFOItemProduct, IProduct, WareHouse
from apps.inm.services import InmService from apps.inm.services import InmService
from apps.mtm.models import Material, PackItem from apps.mtm.models import Material, PackItem
from apps.sam.models import Sale, SalePack, SaleProduct 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 rest_framework import exceptions
from django.db import transaction from django.db import transaction
from rest_framework.decorators import action 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.count = SaleProduct.objects.filter(sale=obj.sale).count()
sale.save() sale.save()
return Response() 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 @transaction.atomic
def pack(self, request, pk=None): def pack(self, request, pk=None):
""" """
@ -169,7 +175,7 @@ class SaleProductViewSet(ListModelMixin, DestroyModelMixin, CreateModelMixin, Ge
""" """
obj = self.get_object() obj = self.get_object()
if request.method == 'GET': 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, SalePack.objects.get_or_create(sale_product=obj, packitem=i,
defaults={ defaults={
"sale_product":obj, "sale_product":obj,
@ -182,8 +188,24 @@ class SaleProductViewSet(ListModelMixin, DestroyModelMixin, CreateModelMixin, Ge
serializer.is_valid(raise_exception=True) serializer.is_valid(raise_exception=True)
vdata = serializer.validated_data vdata = serializer.validated_data
obj.packnum = vdata['packnum'] obj.packnum = vdata['packnum']
obj.remark = vdata.get('remark', '')
for i in vdata['detail']: for i in vdata['detail']:
pi = i['id'] pi = i['id']
pi.count = i['count'] pi.count = i['count']
pi.save() pi.save()
return Response() 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()