diff --git a/hb_server/apps/inm/serializers.py b/hb_server/apps/inm/serializers.py index c336713..87407a8 100644 --- a/hb_server/apps/inm/serializers.py +++ b/hb_server/apps/inm/serializers.py @@ -77,23 +77,31 @@ class FIFOListSerializer(serializers.ModelSerializer): fields = '__all__' class FIFOItemCreateSerializer(serializers.ModelSerializer): + material_batch = serializers.PrimaryKeyRelatedField(queryset=MaterialBatch.objects.all(), label="物料批次ID", required=False) class Meta: model = FIFOItem fields = ['warehouse', - 'material', 'batch', 'fifo', 'files', 'pu_order_item', 'count', 'expiration_date'] + 'material', 'batch', 'fifo', 'files', 'pu_order_item', 'count', 'expiration_date', 'material_batch'] def create(self, validated_data): fifo = validated_data['fifo'] if fifo.is_audited: raise ValidationError('该出入库记录已审核') pu_order_item = validated_data.get('pu_order_item', None) - if pu_order_item: + material_batch = validated_data.get('material_batch', None) + if fifo.type == FIFO.FIFO_TYPE_PUR_IN and pu_order_item is None: + raise ValidationError('采购入库需关联采购项') + else: if fifo.pu_order != pu_order_item.pu_order: raise ValidationError('项目与采购订单不一致') validated_data['material']=pu_order_item.material + if fifo.type == FIFO.FIFO_TYPE_OTHER_OUT and material_batch is None: + raise ValidationError('其他出库需关联批次号') else: - if fifo.pu_order is not None: - raise ValidationError('非采购订单') + validated_data['material'] = material_batch.material + validated_data['batch'] = material_batch.batch + validated_data['warehouse'] = material_batch.warehouse + return super().create(validated_data) def validate_batch(self, value): @@ -106,7 +114,7 @@ class FIFOItemCreateSerializer(serializers.ModelSerializer): class FIFOItemUpdateSerializer(serializers.ModelSerializer): class Meta: model = FIFOItem - fields = ['warehouse', 'batch', 'files', 'count', 'expiration_date'] + fields = ['files', 'count', 'expiration_date'] class FIFOItemSerializer(serializers.ModelSerializer): warehouse_ = WareHouseSimpleSerializer(source='warehouse', read_only=True) @@ -150,7 +158,7 @@ class FIFOOutOtherSerializer(serializers.ModelSerializer): """ 其他出库序列化 """ - details = FIFODetailOutOtherSerializer(many=True, required=False) + details = FIFODetailOutOtherSerializer(many=True, required=True) class Meta: model = FIFO @@ -176,7 +184,7 @@ class FIFOInOtherSerializer(serializers.ModelSerializer): """ 其他入库序列化 """ - details = FIFODetailInPurSerializer(many=True, required=False) + details = FIFODetailInPurSerializer(many=True, required=True) vendor = serializers.PrimaryKeyRelatedField(label='供应商ID', queryset=Vendor.objects.all()) class Meta: