82 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
| from rest_framework import serializers
 | |
| 
 | |
| from apps.inm.models import FIFO, FIFODetail, IProduct, WareHouse,Inventory
 | |
| 
 | |
| from apps.system.serializers import UserSimpleSerializer
 | |
| from apps.mtm.serializers import MaterialSimpleSerializer
 | |
| 
 | |
| class WareHouseSerializer(serializers. ModelSerializer):
 | |
|     create_by_=UserSimpleSerializer('create_by', read_only=True)
 | |
|     class Meta:
 | |
|         model = WareHouse
 | |
|         fields = '__all__'
 | |
| 
 | |
| class WareHouseCreateUpdateSerializer(serializers.ModelSerializer):
 | |
|     class Meta:
 | |
|         model = WareHouse
 | |
|         fields = ['name', 'number', 'place']
 | |
| 
 | |
| class WareHouseSimpleSerializer(serializers.ModelSerializer):
 | |
|     class Meta:
 | |
|         model = WareHouse
 | |
|         fields = ['name', 'number', 'place']
 | |
| 
 | |
| class InventorySerializer(serializers. ModelSerializer):
 | |
|     material_= MaterialSimpleSerializer(source='material', read_only=True)
 | |
|     warehouse_ = WareHouseSimpleSerializer(source='material', read_only=True)
 | |
|     class Meta:
 | |
|         model = Inventory
 | |
|         fields = '__all__'
 | |
| 
 | |
| 
 | |
| class IProductInPurSerializer(serializers.ModelSerializer):
 | |
|     class Meta:
 | |
|         model = IProduct
 | |
|         fields = ['number']
 | |
|     
 | |
| class FIFODetailInPurSerializer(serializers.ModelSerializer):
 | |
|     details = IProductInPurSerializer(many=True, required=False)
 | |
|     class Meta:
 | |
|         model = FIFODetail
 | |
|         fields = ['material', 'count', 'batch', 'details']
 | |
| 
 | |
| class FIFOInPurSerializer(serializers.ModelSerializer):
 | |
|     """
 | |
|     采购入库序列化
 | |
|     """
 | |
|     details = FIFODetailInPurSerializer(many=True)
 | |
|     class Meta:
 | |
|         model = FIFO
 | |
|         fields = ['warehouse', 'operator', 'details', 'inout_date']
 | |
| 
 | |
|     def create(self, validated_data):
 | |
|         details = validated_data.pop('details')
 | |
|         if len(details)>0:
 | |
|             pass
 | |
|         else:
 | |
|             raise serializers.ValidationError('没有入库内容')
 | |
|         validated_data['type'] = 3
 | |
|         obj = FIFO(**validated_data)
 | |
|         obj.save()
 | |
|         for i in details:
 | |
|             if 'details' in i:
 | |
|                 p_details = i.pop('details')
 | |
|                 if len(p_details) != i['count']:
 | |
|                     raise serializers.ValidationError('数目对不上')
 | |
|                 else:
 | |
|                     i['fifo'] = obj
 | |
|                     FIFODetail.objects.create(**i)
 | |
|                     p_list = []
 | |
|                     for x in p_details:
 | |
|                         x['state'] = 1
 | |
|                         x['material'] = i['material']
 | |
|                         x['warehouse'] = validated_data['warehouse']
 | |
|                         x['batch'] = i['batch']
 | |
|                         x['fifos'] = [fifod.id]
 | |
|                         p_list.append(IProduct(**x))
 | |
|                     IProduct.objects.bulk_create(p_list)
 | |
|             else:
 | |
|                 i['fifo'] = obj
 | |
|                 FIFODetail.objects.create(**i)
 | |
| 
 |