37 lines
1.7 KiB
Python
37 lines
1.7 KiB
Python
from rest_framework import serializers
|
|
from rest_framework.serializers import ModelSerializer
|
|
from apps.inm.models import FIFO, FIFODetail, MaterialBatch, WareHouse
|
|
from apps.mtm.models import Material
|
|
|
|
from apps.pm.models import SubProductionPlan
|
|
from django.utils import timezone
|
|
|
|
class PickDetailSerializer(serializers.Serializer):
|
|
material = serializers.PrimaryKeyRelatedField(queryset=Material.objects.all(), label="物料ID")
|
|
batch = serializers.CharField(label='物料批次')
|
|
pick_count = serializers.IntegerField(label="领料数量")
|
|
|
|
class PickSerializer(serializers.Serializer):
|
|
subproduction_plan=serializers.PrimaryKeyRelatedField(queryset=SubProductionPlan.objects.all(), label="子计划ID")
|
|
warehouse = serializers.PrimaryKeyRelatedField(queryset=WareHouse.objects.all(), label="仓库ID")
|
|
picks = PickDetailSerializer(many=True)
|
|
|
|
def create(self, validated_data):
|
|
picks = validated_data.pop('picks')
|
|
for i in picks:
|
|
try:
|
|
instance = MaterialBatch.objects.get(material=i['material'], batch=i['batch'])
|
|
if instance.count < i['pick_count']:
|
|
raise serializers.ValidationError('物料不足')
|
|
except:
|
|
raise serializers.ValidationError('物料不存在')
|
|
operator = self.context['request'].user
|
|
validated_data['create_by'] = operator
|
|
validated_data['operator'] = operator
|
|
validated_data['type'] = 1
|
|
validated_data['inout_date'] = timezone.now()
|
|
fifo = FIFO.objects.create(validated_data)
|
|
for i in picks:
|
|
i['fifo'] = fifo
|
|
FIFODetail.objects.create(**i)
|
|
return fifo |