fix: puorderitem create bug

This commit is contained in:
caoqianming 2023-10-11 15:19:26 +08:00
parent 9461d57159
commit ae43296ab5
1 changed files with 15 additions and 9 deletions

View File

@ -6,6 +6,7 @@ from rest_framework.exceptions import ValidationError
from apps.pum.models import Supplier, PuPlan, PuPlanItem, PuOrder, PuOrderItem from apps.pum.models import Supplier, PuPlan, PuPlanItem, PuOrder, PuOrderItem
from apps.mtm.serializers import MaterialSerializer from apps.mtm.serializers import MaterialSerializer
class SupplierSerializer(CustomModelSerializer): class SupplierSerializer(CustomModelSerializer):
class Meta: class Meta:
model = Supplier model = Supplier
@ -23,11 +24,13 @@ class PuPlanSerializer(CustomModelSerializer):
if instance.state != PuPlan.PUPLAN_CREATE: if instance.state != PuPlan.PUPLAN_CREATE:
raise ValidationError('该状态下不可编辑') raise ValidationError('该状态下不可编辑')
return super().update(instance, validated_data) return super().update(instance, validated_data)
class PuPlanItemSerializer(CustomModelSerializer): class PuPlanItemSerializer(CustomModelSerializer):
material_ = MaterialSerializer(source='material', read_only=True) material_ = MaterialSerializer(source='material', read_only=True)
belong_dept_name = serializers.CharField(source='belong_dept.name', read_only=True) belong_dept_name = serializers.CharField(
source='belong_dept.name', read_only=True)
class Meta: class Meta:
model = PuPlanItem model = PuPlanItem
fields = '__all__' fields = '__all__'
@ -42,7 +45,7 @@ class PuPlanItemSerializer(CustomModelSerializer):
if PuPlanItem.objects.filter(material=material, belong_dept=user.belong_dept).exists(): if PuPlanItem.objects.filter(material=material, belong_dept=user.belong_dept).exists():
raise ValidationError('同部门已提交该物料需求,请确认!') raise ValidationError('同部门已提交该物料需求,请确认!')
return super().create(validated_data) return super().create(validated_data)
def update(self, instance, validated_data): def update(self, instance, validated_data):
validated_data.pop('pu_plan') validated_data.pop('pu_plan')
pu_plan = instance.pu_plan pu_plan = instance.pu_plan
@ -68,10 +71,11 @@ class PuOrderSerializer(CustomModelSerializer):
if instance.steate != PuOrder.PUORDER_CREATE: if instance.steate != PuOrder.PUORDER_CREATE:
raise ValidationError('该状态下不可编辑') raise ValidationError('该状态下不可编辑')
return super().update(instance, validated_data) return super().update(instance, validated_data)
class PuOrderItemSerializer(CustomModelSerializer): class PuOrderItemSerializer(CustomModelSerializer):
material_ = MaterialSerializer(source='material', read_only=True) material_ = MaterialSerializer(source='material', read_only=True)
class Meta: class Meta:
model = PuOrderItem model = PuOrderItem
fields = '__all__' fields = '__all__'
@ -82,10 +86,10 @@ class PuOrderItemSerializer(CustomModelSerializer):
material = validated_data['material'] material = validated_data['material']
if pu_order.state != PuOrder.PUORDER_CREATE: if pu_order.state != PuOrder.PUORDER_CREATE:
raise ValidationError('采购订单该状态下不可添加明细') raise ValidationError('采购订单该状态下不可添加明细')
if PuOrder.objects.filter(pu_order=pu_order, material=material).exists(): if PuOrderItem.objects.filter(pu_order=pu_order, material=material).exists():
raise ValidationError('该物料已添加') raise ValidationError('该物料已添加')
return super().create(validated_data) return super().create(validated_data)
def update(self, instance, validated_data): def update(self, instance, validated_data):
validated_data.pop('material') validated_data.pop('material')
validated_data.pop('pu_order') validated_data.pop('pu_order')
@ -93,8 +97,10 @@ class PuOrderItemSerializer(CustomModelSerializer):
if pu_order.state != PuOrder.PUORDER_CREATE: if pu_order.state != PuOrder.PUORDER_CREATE:
raise ValidationError('采购订单该状态下不可编辑') raise ValidationError('采购订单该状态下不可编辑')
return super().update(instance, validated_data) return super().update(instance, validated_data)
class AddSerializer(serializers.Serializer): class AddSerializer(serializers.Serializer):
pu_order = serializers.PrimaryKeyRelatedField(label='采购订单ID', queryset=PuOrder.objects.all()) pu_order = serializers.PrimaryKeyRelatedField(
pu_planitems = serializers.PrimaryKeyRelatedField(label='计划明细ID', queryset=PuPlanItem.objects.all(), many=True) label='采购订单ID', queryset=PuOrder.objects.all())
pu_planitems = serializers.PrimaryKeyRelatedField(
label='计划明细ID', queryset=PuPlanItem.objects.all(), many=True)