diff --git a/apps/product/web/api/v1/serializers/quota_serializers.py b/apps/product/web/api/v1/serializers/quota_serializers.py index ed0283d..aa80887 100644 --- a/apps/product/web/api/v1/serializers/quota_serializers.py +++ b/apps/product/web/api/v1/serializers/quota_serializers.py @@ -20,17 +20,28 @@ class QuotaSerializer(serializers.ModelSerializer): ).data representation['product'] = {"product": instance.product.name, "product_id": instance.product.id} - plans = [{ - "id": item.id, - "quota": item.quota.id, - "incentive_plan": item.incentive_plan.id, - "livestock_type": item.livestock_type.id, - "quantity_kg": item.quantity_kg - } for item in instance.incentive_assignments.all()] + # quota incentive plan data + incentive_plan_map = {} + for assign in instance.incentive_assignments.all(): + plan_id = assign.incentive_plan.id + if plan_id not in incentive_plan_map: + incentive_plan_map[plan_id] = { + "id": assign.id, + "name": assign.incentive_plan.name, + "incentive_plan": plan_id, + "live_stocks": [] + } - representation['incentive_plan'] = plans + if assign.livestock_type: + incentive_plan_map[plan_id]['live_stocks'].append({ + "id": assign.livestock_type.id, + "name": assign.livestock_type.name, + "quantity": assign.quantity_kg + }) - representation['attribute_values'] = product_serializers.AttributeValueSerializer( # noqa + representation['incentive_plan'] = list(incentive_plan_map.values()) + + representation['attribute_values'] = product_serializers.AttributeValueSerializer( instance.attribute_values.all(), many=True ).data