125 lines
3.5 KiB
Python
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()
|
|
)
|
|
)
|
|
|