47 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
| from rest_framework.serializers import ModelSerializer, ValidationError
 | |
| from apps.mtm.serializers import MaterialSimpleSerializer
 | |
| from .models import PuOrder, PuOrderItem, Vendor
 | |
| 
 | |
| class VendorSerializer(ModelSerializer):
 | |
|     class Meta:
 | |
|         model = Vendor
 | |
|         fields = '__all__'
 | |
| 
 | |
| class VendorSimpleSerializer(ModelSerializer):
 | |
|     class Meta:
 | |
|         model = Vendor
 | |
|         fields = ['id', 'name']
 | |
| 
 | |
| class PuOrderItemSerializer(ModelSerializer):
 | |
|     material_ =  MaterialSimpleSerializer(source='material', read_only=True)
 | |
|     class Meta:
 | |
|         model = PuOrderItem
 | |
|         fields = '__all__'
 | |
| 
 | |
| class PuOrderItemCreateSerializer(ModelSerializer):
 | |
|     class Meta:
 | |
|         model = PuOrderItem
 | |
|         fields = ['count', 'delivery_date', 'pu_order', 'material']
 | |
|     
 | |
|     def validate(self, attrs):
 | |
|         pu_order = attrs['pu_order']
 | |
|         if pu_order.is_audited:
 | |
|             raise ValidationError('采购订单已审核')
 | |
|         return super().validate(attrs)
 | |
| 
 | |
| class PuOrderItemUpdateSerializer(ModelSerializer):
 | |
|     class Meta:
 | |
|         model = PuOrderItem
 | |
|         fields = ['count', 'delivery_date']
 | |
| 
 | |
| class PuOrderSerializer(ModelSerializer):
 | |
|     vendor_ = VendorSimpleSerializer(source='vendor', read_only=True)
 | |
|     items = PuOrderItemSerializer(source='item_pu_order', many=True, read_only=True)
 | |
|     class Meta:
 | |
|         model = PuOrder
 | |
|         fields = '__all__'
 | |
| 
 | |
| class PuOrderCreateUpdateSerializer(ModelSerializer):
 | |
|     class Meta:
 | |
|         model = PuOrder
 | |
|         fields = ['number', 'vendor'] |