diff --git a/apps/inm/serializers.py b/apps/inm/serializers.py index e28faa70..2a50731b 100644 --- a/apps/inm/serializers.py +++ b/apps/inm/serializers.py @@ -23,6 +23,7 @@ class MaterialBatchSerializer(CustomModelSerializer): source='warehouse.name', read_only=True) material_name = serializers.CharField( source='material.name', read_only=True) + material_ = MaterialSerializer(source='material', read_only=True) class Meta: model = MaterialBatch @@ -97,6 +98,8 @@ class MIODoSerializer(CustomModelSerializer): label="车间", queryset=Dept.objects.all(), required=True) do_user = serializers.PrimaryKeyRelatedField( label="执行人", queryset=User.objects.all(), required=True) + note = serializers.CharField( + required=False, allow_blank=True) class Meta: model = MIO @@ -116,6 +119,8 @@ class MIODoSerializer(CustomModelSerializer): class MIOSaleSerializer(CustomModelSerializer): order = serializers.PrimaryKeyRelatedField( label="订单", queryset=Order.objects.all(), required=True) + note = serializers.CharField( + required=False, allow_blank=True) class Meta: model = MIO @@ -129,10 +134,16 @@ class MIOSaleSerializer(CustomModelSerializer): validated_data['belong_dept'] = order.belong_dept return super().create(validated_data) + def update(self, instance, validated_data): + validated_data.pop('type') + return super().update(instance, validated_data) + class MIOPurSerializer(CustomModelSerializer): pu_order = serializers.PrimaryKeyRelatedField( label="采购订单", queryset=PuOrder.objects.all(), required=True) + note = serializers.CharField( + required=False, allow_blank=True) class Meta: model = MIO @@ -146,8 +157,14 @@ class MIOPurSerializer(CustomModelSerializer): validated_data['belong_dept'] = pu_order.belong_dept return super().create(validated_data) + def update(self, instance, validated_data): + validated_data.pop('type') + return super().update(instance, validated_data) + class MIOOtherSerializer(CustomModelSerializer): + note = serializers.CharField( + required=False, allow_blank=True) class Meta: model = MIO diff --git a/apps/inm/services.py b/apps/inm/services.py index a50beb23..7132b5da 100644 --- a/apps/inm/services.py +++ b/apps/inm/services.py @@ -39,8 +39,8 @@ class InmService: defaults={'material': material, 'warehouse': warehouse, 'count': 0, 'batch': i.batch}) if in_or_out == 1: mb.count = mb.count + i.count - if mb.expiration_date is None: - mb.expiration_date = i.expiration_date + # if mb.expiration_date is None: + # mb.expiration_date = i.expiration_date mb.save() elif in_or_out == -1: mb.count = mb.count - i.count diff --git a/apps/inm/views.py b/apps/inm/views.py index 6cdfdb5f..fea861ab 100644 --- a/apps/inm/views.py +++ b/apps/inm/views.py @@ -45,6 +45,7 @@ class MaterialBatchViewSet(ListModelMixin, CustomGenericViewSet): serializer_class = MaterialBatchSerializer select_related_fields = ['warehouse', 'material'] filterset_fields = ['warehouse', 'material'] + search_fields = ['material__name'] class MioDoViewSet(BulkCreateModelMixin, BulkUpdateModelMixin, CustomGenericViewSet): @@ -107,14 +108,12 @@ class MioOtherViewSet(BulkCreateModelMixin, BulkUpdateModelMixin, CustomGenericV return super().create(request, *args, **kwargs) -class MIOViewSet(ListModelMixin, BulkCreateModelMixin, BulkUpdateModelMixin, DestroyModelMixin, CustomGenericViewSet): +class MIOViewSet(CustomModelViewSet): """ list: 出入库记录 出入库记录 """ - perms_map = {'get': '*', 'post': 'mio.create', - 'put': 'mio.update', 'delete': 'mio.delete'} queryset = MIO.objects.all() select_related_fields = ['create_by', 'belong_dept', 'do_user', 'submit_user', 'supplier', 'order', 'customer', 'pu_order'] @@ -122,18 +121,18 @@ class MIOViewSet(ListModelMixin, BulkCreateModelMixin, BulkUpdateModelMixin, Des filterset_fields = ['state', 'type', 'pu_order', 'order'] data_filter = True - def get_serializer(self, *args, **kwargs): + def get_serializer_class(self): if self.action in ['create', 'update', 'partial_update']: type = self.request.data.get('type') if type in [MIO.MIO_TYPE_DO_IN, MIO.MIO_TYPE_DO_OUT]: - return MIODoSerializer(*args, **kwargs) + return MIODoSerializer elif type in [MIO.MIO_TYPE_OTHER_IN, MIO.MIO_TYPE_OTHER_OUT]: - return MIOOtherSerializer(*args, **kwargs) + return MIOOtherSerializer elif type == MIO.MIO_TYPE_SALE_OUT: - return MIOSaleSerializer(*args, **kwargs) + return MIOSaleSerializer elif type == MIO.MIO_TYPE_PUR_IN: - return MIOPurSerializer(*args, **kwargs) - return super().get_serializer(*args, **kwargs) + return MIOPurSerializer + return self.serializer_class def perform_destroy(self, instance): if instance.state != MIO.MIO_CREATE: