Files
pedidosClientes/gestion_pedidos/serializers.py
2025-12-05 11:27:16 -03:00

125 lines
3.5 KiB
Python

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()
)
)