se agrego comando del auditor

This commit is contained in:
2025-10-07 20:57:50 -06:00
parent 7137f2e355
commit 6480b0a5a0
5 changed files with 301 additions and 50 deletions

View File

@@ -16,6 +16,36 @@ def extraer_coves(pedimento):
return xml_data
def modificar_estado_procesamiento(pedimento, servicio_id, nuevo_estado):
procesamiento = ProcesamientoPedimento.objects.filter(
pedimento=pedimento,
servicio_id=servicio_id,
organizacion=pedimento.organizacion
).first()
if procesamiento:
procesamiento.estado_id = nuevo_estado
procesamiento.save()
return True
return False
def auditor_descargas(pedimento, servicio, related_name, variable, mensaje):
pedimento_id = pedimento.id
docs = getattr(pedimento, related_name).all()
all_docs = all(getattr(doc, variable) for doc in docs)
if all_docs:
proceso = modificar_estado_procesamiento(pedimento, servicio_id=servicio, nuevo_estado=3) # Estado "completado"
print(f"✓ Pedimento {pedimento_id} tiene todos sus {mensaje} de edocument descargados.")
else:
proceso = modificar_estado_procesamiento(pedimento, servicio_id=servicio, nuevo_estado=4) # Estado "en progreso"
print(f"✗ Pedimento {pedimento_id} NO tiene todos sus {mensaje} de edocument descargados.")
if proceso:
print(f"✓ Proceso de auditoría para pedimento {pedimento_id} completado.")
else:
print(f"✗ No se encontró proceso de auditoría para pedimento {pedimento_id}.")
## Auditar pedimentos
@shared_task
def auditar_procesamiento_remesas(organizacion_id):
pedimentos = obtener_pedimentos(organizacion_id)
@@ -103,53 +133,6 @@ def auditar_procesamiento_remesa_por_pedimento(pedimento_id):
'pedimento_id': str(pedimento_id)
}
@shared_task
def auditar_partidas(organizacion_id):
pedimentos = Pedimento.objects.filter(organizacion_id=organizacion_id)
for pedimento in pedimentos:
# Validar que numero_partidas no sea None y sea mayor que 0
if pedimento.numero_partidas is not None and pedimento.numero_partidas > 0:
partidas_descargadas = pedimento.documents.filter(document_type=1)
partidas = {str(documento.archivo).split('_')[-1].split('.')[0]: documento.archivo for documento in partidas_descargadas}
partidas_faltantes = []
for i in range(1, pedimento.numero_partidas + 1):
if str(i) not in partidas.keys():
partidas_faltantes.append(i)
# crear servicio individual para cada partida faltante en microservicios
@shared_task
def auditar_coves(organizacion_id):
# crear servicio individual para cada cove faltante en microservicios
pass
@shared_task
def auditar_edocuments(organizacion_id):
# crear servicio individual para cada Edocument faltante en microservicios
pass
@shared_task
def auditar_acuse_coves(organizacion_id):
# crear servicio individual para cada cove faltante en microservicios
pass
@shared_task
def auditar_acuse_edocuments(organizacion_id):
# crear servicio individual para cada acuse de edocument faltante en microservicios
pedimentos = obtener_pedimentos(organizacion_id)
for pedimento in pedimentos:
acuses_descargados = pedimento.documents.filter(document_type=4)
edocs = pedimento.documentos.all()
@shared_task
def crear_partidas(organizacion_id):
pedimentos = obtener_pedimentos(organizacion_id)
@@ -222,4 +205,53 @@ def crear_partidas_por_pedimento(pedimento_id):
else:
print(f"Pedimento {pedimento_id} ya tiene todas sus partidas ({partidas_existentes}/{pedimento.numero_partidas})")
else:
print(f"Error: Pedimento {pedimento_id} tiene numero_partidas inválido: {pedimento.numero_partidas}")
print(f"Error: Pedimento {pedimento_id} tiene numero_partidas inválido: {pedimento.numero_partidas}")
# Auditar coves
@shared_task
def auditar_coves(organizacion_id):
for pedimento in obtener_pedimentos(organizacion_id):
auditor_descargas(
pedimento,
servicio=8,
related_name='coves',
variable='acuse_descargado',
mensaje='COVE'
)
@shared_task
def auditar_acuse_cove(organizacion_id):
for pedimento in obtener_pedimentos(organizacion_id):
auditor_descargas(
pedimento,
servicio=9,
related_name='coves',
variable='acuse_cove_descargado',
mensaje='acuse de COVE'
)
# Revisa si el pedimento completo todos sus acuse coves
# Auditar edocuments
@shared_task
def auditar_edocuments(organizacion_id):
for pedimento in obtener_pedimentos(organizacion_id):
auditor_descargas(
pedimento,
servicio=7,
related_name='documentos',
variable='edocument_descargado',
mensaje='EDocument'
)
@shared_task
def auditar_acuse(organizacion_id):
for pedimento in obtener_pedimentos(organizacion_id):
auditor_descargas(
pedimento,
servicio=6,
related_name='documentos',
variable='acuse_descargado',
mensaje='acuse'
)