fix/de los tickets T2026-05-027, T2025-09-004 y T2025-09-056
This commit is contained in:
@@ -1,12 +1,13 @@
|
||||
from rest_framework import serializers
|
||||
from api.customs.models import (
|
||||
Pedimento,
|
||||
TipoOperacion,
|
||||
ProcesamientoPedimento,
|
||||
Pedimento,
|
||||
TipoOperacion,
|
||||
ProcesamientoPedimento,
|
||||
EDocument,
|
||||
Cove,
|
||||
Importador,
|
||||
Partida
|
||||
Partida,
|
||||
EstadoDescarga
|
||||
)
|
||||
from django.db import models
|
||||
from django.db.models import Q
|
||||
@@ -205,7 +206,23 @@ class EDocumentSerializer(serializers.ModelSerializer):
|
||||
model = EDocument
|
||||
fields = '__all__'
|
||||
read_only_fields = ('created_at', 'updated_at')
|
||||
|
||||
|
||||
def validate(self, attrs):
|
||||
# Compatibilidad: payloads legados que solo mandan los booleanos se traducen
|
||||
# al estado de 3 valores (fuente de verdad en el modelo). Un False legado no
|
||||
# degrada un estado 'error' ya asignado.
|
||||
if 'edocument_descargado' in attrs and 'edocument_estado' not in attrs:
|
||||
if attrs['edocument_descargado']:
|
||||
attrs['edocument_estado'] = EstadoDescarga.DESCARGADO
|
||||
elif not (self.instance and self.instance.edocument_estado == EstadoDescarga.ERROR):
|
||||
attrs['edocument_estado'] = EstadoDescarga.PENDIENTE
|
||||
if 'acuse_descargado' in attrs and 'acuse_estado' not in attrs:
|
||||
if attrs['acuse_descargado']:
|
||||
attrs['acuse_estado'] = EstadoDescarga.DESCARGADO
|
||||
elif not (self.instance and self.instance.acuse_estado == EstadoDescarga.ERROR):
|
||||
attrs['acuse_estado'] = EstadoDescarga.PENDIENTE
|
||||
return attrs
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
# Si no es superusuario, hacer organizacion read_only
|
||||
@@ -221,6 +238,22 @@ class CoveSerializer(serializers.ModelSerializer):
|
||||
fields = '__all__'
|
||||
read_only_fields = ('created_at', 'updated_at')
|
||||
|
||||
def validate(self, attrs):
|
||||
# Compatibilidad: payloads legados que solo mandan los booleanos se traducen
|
||||
# al estado de 3 valores (fuente de verdad en el modelo). Un False legado no
|
||||
# degrada un estado 'error' ya asignado.
|
||||
if 'cove_descargado' in attrs and 'cove_estado' not in attrs:
|
||||
if attrs['cove_descargado']:
|
||||
attrs['cove_estado'] = EstadoDescarga.DESCARGADO
|
||||
elif not (self.instance and self.instance.cove_estado == EstadoDescarga.ERROR):
|
||||
attrs['cove_estado'] = EstadoDescarga.PENDIENTE
|
||||
if 'acuse_cove_descargado' in attrs and 'acuse_cove_estado' not in attrs:
|
||||
if attrs['acuse_cove_descargado']:
|
||||
attrs['acuse_cove_estado'] = EstadoDescarga.DESCARGADO
|
||||
elif not (self.instance and self.instance.acuse_cove_estado == EstadoDescarga.ERROR):
|
||||
attrs['acuse_cove_estado'] = EstadoDescarga.PENDIENTE
|
||||
return attrs
|
||||
|
||||
def get_documentos(self, obj):
|
||||
"""
|
||||
Busca documentos en la tabla `document` que coincidan con el
|
||||
|
||||
Reference in New Issue
Block a user