from rest_framework import serializers from .models import ( Cliente, PedidoCliente, ReferenciaPedidoCliente, Proveedor, PedidoProveedor, ReferenciaPedidoProveedor, Albaran, ReferenciaAlbaran, Devolucion, StockReferencia ) class ClienteSerializer(serializers.ModelSerializer): class Meta: model = Cliente fields = '__all__' class ReferenciaPedidoClienteSerializer(serializers.ModelSerializer): class Meta: model = ReferenciaPedidoCliente fields = '__all__' class PedidoClienteSerializer(serializers.ModelSerializer): cliente = ClienteSerializer(read_only=True) cliente_id = serializers.PrimaryKeyRelatedField( queryset=Cliente.objects.all(), source='cliente', write_only=True, required=False ) referencias = ReferenciaPedidoClienteSerializer(many=True, read_only=True) es_urgente = serializers.ReadOnlyField() class Meta: model = PedidoCliente fields = '__all__' class ProveedorSerializer(serializers.ModelSerializer): class Meta: model = Proveedor fields = '__all__' class ReferenciaPedidoProveedorSerializer(serializers.ModelSerializer): class Meta: model = ReferenciaPedidoProveedor fields = '__all__' class PedidoProveedorSerializer(serializers.ModelSerializer): proveedor = ProveedorSerializer(read_only=True) proveedor_id = serializers.PrimaryKeyRelatedField( queryset=Proveedor.objects.all(), source='proveedor', write_only=True ) referencias = ReferenciaPedidoProveedorSerializer(many=True, read_only=True) class Meta: model = PedidoProveedor fields = '__all__' class ReferenciaAlbaranSerializer(serializers.ModelSerializer): class Meta: model = ReferenciaAlbaran fields = '__all__' class AlbaranSerializer(serializers.ModelSerializer): proveedor = ProveedorSerializer(read_only=True) proveedor_id = serializers.PrimaryKeyRelatedField( queryset=Proveedor.objects.all(), source='proveedor', write_only=True, required=False, allow_null=True ) referencias = ReferenciaAlbaranSerializer(many=True, read_only=True) class Meta: model = Albaran fields = '__all__' class DevolucionSerializer(serializers.ModelSerializer): proveedor = ProveedorSerializer(read_only=True) proveedor_id = serializers.PrimaryKeyRelatedField( queryset=Proveedor.objects.all(), source='proveedor', write_only=True ) class Meta: model = Devolucion fields = '__all__' class StockReferenciaSerializer(serializers.ModelSerializer): class Meta: model = StockReferencia fields = '__all__' # Serializers para actualización de stock class UpdateStockSerializer(serializers.Serializer): referencia_id = serializers.IntegerField() unidades_en_stock = serializers.IntegerField(min_value=0) class BulkUpdateStockSerializer(serializers.Serializer): updates = UpdateStockSerializer(many=True) # Serializer para crear pedido a proveedor manualmente class CrearPedidoProveedorSerializer(serializers.Serializer): proveedor_id = serializers.IntegerField() numero_pedido = serializers.CharField(required=False, allow_blank=True) tipo = serializers.ChoiceField(choices=['web', 'manual'], default='manual') referencias = serializers.ListField( child=serializers.DictField( child=serializers.CharField() ) )