From 35052699da522c7336bdf411bb548cb905d9e5f3 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Fri, 27 Oct 2023 16:19:11 +0800 Subject: [PATCH] feat: miodetail --- apps/inm/migrations/0007_alter_mioitem_mio.py | 19 +++++++++++++ apps/inm/models.py | 2 +- apps/inm/serializers.py | 27 +++---------------- apps/inm/views.py | 5 ++-- 4 files changed, 27 insertions(+), 26 deletions(-) create mode 100644 apps/inm/migrations/0007_alter_mioitem_mio.py diff --git a/apps/inm/migrations/0007_alter_mioitem_mio.py b/apps/inm/migrations/0007_alter_mioitem_mio.py new file mode 100644 index 00000000..12669b65 --- /dev/null +++ b/apps/inm/migrations/0007_alter_mioitem_mio.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2.12 on 2023-10-26 08:24 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('inm', '0006_alter_mio_number'), + ] + + operations = [ + migrations.AlterField( + model_name='mioitem', + name='mio', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='item_mio', to='inm.mio', verbose_name='关联出入库'), + ), + ] diff --git a/apps/inm/models.py b/apps/inm/models.py index a2167dbd..a87f893f 100644 --- a/apps/inm/models.py +++ b/apps/inm/models.py @@ -94,7 +94,7 @@ class MIOItem(BaseModel): 出入库明细 """ mio = models.ForeignKey(MIO, verbose_name='关联出入库', - on_delete=models.CASCADE) + on_delete=models.CASCADE, related_name='item_mio') warehouse = models.ForeignKey( WareHouse, on_delete=models.CASCADE, verbose_name='仓库') material = models.ForeignKey( diff --git a/apps/inm/serializers.py b/apps/inm/serializers.py index 4816b4c7..516df161 100644 --- a/apps/inm/serializers.py +++ b/apps/inm/serializers.py @@ -77,29 +77,6 @@ class MIOListSerializer(CustomModelSerializer): read_only_fields = EXCLUDE_FIELDS + \ ['state', 'submit_time', 'submit_user'] - # def validate(self, attrs): - # if 'pu_order' in attrs and attrs['pu_order']: - # attrs['supplier'] = attrs['pu_order'].supplier - # if attrs['pu_order'].belong_dept: - # attrs['belong_dept'] = attrs['pu_order'].belong_dept - # elif 'order' in attrs and attrs['order']: - # attrs['customer'] = attrs['order'].customer - # return super().validate(attrs) - - # def create(self, validated_data): - # type = validated_data['type'] - # if type == MIO.MIO_TYPE_PUR_IN: - # pu_order = validated_data.get('pu_order', None) - # if pu_order and pu_order.state in [PuOrder.PUORDER_SUBMITED, PuOrder.PUORDER_SHIP]: - # pass - # else: - # raise ValidationError('该采购订单不可选') - # return super().create(validated_data) - - # def update(self, instance, validated_data): - # validated_data.pop('type') - # return super().update(instance, validated_data) - class MIOItemACreateSerializer(CustomModelSerializer): class Meta: @@ -244,3 +221,7 @@ class MIOOtherSerializer(CustomModelSerializer): def update(self, instance, validated_data): validated_data.pop('type') return super().update(instance, validated_data) + + +class MIODetailSerializer(MIOListSerializer): + items = MIOItemSerializer(source='item_mio', many=True, read_only=True) diff --git a/apps/inm/views.py b/apps/inm/views.py index afaa3fb5..2db3343e 100644 --- a/apps/inm/views.py +++ b/apps/inm/views.py @@ -10,7 +10,7 @@ from rest_framework.response import Response from apps.inm.models import WareHouse, MaterialBatch, MIO, MIOItem from apps.inm.serializers import ( MaterialBatchSerializer, WareHourseSerializer, MIOListSerializer, MIOItemSerializer, - MIODoSerializer, MIOSaleSerializer, MIOPurSerializer, MIOOtherSerializer, MIOItemCreateSerializer, MaterialBatchDetailSerializer) + MIODoSerializer, MIOSaleSerializer, MIOPurSerializer, MIOOtherSerializer, MIOItemCreateSerializer, MaterialBatchDetailSerializer, MIODetailSerializer) from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet from apps.inm.services import InmService from apps.utils.mixins import BulkCreateModelMixin, BulkDestroyModelMixin, BulkUpdateModelMixin @@ -121,6 +121,7 @@ class MIOViewSet(CustomModelViewSet): select_related_fields = ['create_by', 'belong_dept', 'do_user', 'submit_user', 'supplier', 'order', 'customer', 'pu_order'] serializer_class = MIOListSerializer + retrieve_serializer_class = MIODetailSerializer filterset_fields = ['state', 'type', 'pu_order', 'order'] search_fields = ['number'] data_filter = True @@ -145,7 +146,7 @@ class MIOViewSet(CustomModelViewSet): if not has_perm(user, ['mio.pur']): raise PermissionDenied return MIOPurSerializer - return self.serializer_class + return super().get_serializer_class() def perform_destroy(self, instance): if instance.state != MIO.MIO_CREATE: