from rest_framework import serializers


class MovimientoEntidadLiteSerializer(serializers.Serializer):
    id = serializers.IntegerField(required=False, allow_null=True)
    codigo = serializers.CharField(required=False, allow_blank=True)
    nombre = serializers.CharField(required=False, allow_blank=True)


class MovimientoDocumentoSerializer(serializers.Serializer):
    tipo = serializers.CharField()
    id = serializers.IntegerField()
    folio = serializers.CharField(required=False, allow_blank=True)


class MovimientoSerializer(serializers.Serializer):
    id = serializers.CharField()
    tipo = serializers.CharField()
    fecha = serializers.DateTimeField(allow_null=True)
    oficina_id = serializers.IntegerField(allow_null=True)

    documento = MovimientoDocumentoSerializer(required=False)

    productor = MovimientoEntidadLiteSerializer(required=False)
    bodega_origen = MovimientoEntidadLiteSerializer(required=False)
    bodega_destino = MovimientoEntidadLiteSerializer(required=False)
    variedad = MovimientoEntidadLiteSerializer(required=False)

    kilos_esperados = serializers.DecimalField(max_digits=12, decimal_places=3, required=False, allow_null=True)
    kilos_reales = serializers.DecimalField(max_digits=12, decimal_places=3, required=False, allow_null=True)

    detalle = serializers.JSONField(required=False)
