se modifico auditor creador de partidas

This commit is contained in:
2025-10-02 22:16:49 -06:00
parent 061e381f73
commit 0ac9f06e51
2 changed files with 87 additions and 42 deletions

View File

@@ -44,15 +44,17 @@ def auditar_procesamiento_remesas(organizacion_id):
def auditar_partidas(organizacion_id):
pedimentos = Pedimento.objects.filter(organizacion_id=organizacion_id)
for pedimento in pedimentos:
partidas_descargadas = pedimento.documents.filter(document_type=1)
# 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 = []
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
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
@@ -87,30 +89,73 @@ def auditar_acuse_edocuments(organizacion_id):
@shared_task
def crear_partidas(organizacion_id):
pedimentos = obtener_pedimentos(organizacion_id)
total_pedimentos = pedimentos.count()
pedimentos_procesados = 0
total_partidas_agregadas = 0
print(f"Iniciando procesamiento de {total_pedimentos} pedimentos para organización {organizacion_id}")
for pedimento in pedimentos:
pedimentos_procesados += 1
partidas_agregadas_pedimento = 0
# 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_existentes = pedimento.partidas.count()
if pedimento.numero_partidas > partidas_existentes:
print(f"Procesando pedimento {pedimento.id} ({pedimentos_procesados}/{total_pedimentos}) - Partidas existentes: {partidas_existentes}, Requeridas: {pedimento.numero_partidas}")
for i in range(1, pedimento.numero_partidas + 1):
from api.customs.models import Partida
partida, created = Partida.objects.get_or_create(
pedimento=pedimento,
numero_partida=i,
organizacion_id=organizacion_id
)
if created:
partidas_agregadas_pedimento += 1
total_partidas_agregadas += 1
print(f" → Partidas agregadas para pedimento {pedimento.id}: {partidas_agregadas_pedimento}")
else:
print(f"Pedimento {pedimento.id} ya tiene todas sus partidas ({partidas_existentes}/{pedimento.numero_partidas})")
else:
print(f"Pedimento {pedimento.id} omitido - numero_partidas: {pedimento.numero_partidas} (inválido)")
if pedimento.numero_partidas > pedimento.partidas.count():
for i in range(1, pedimento.numero_partidas + 1):
from api.customs.models import Partida
Partida.objects.get_or_create(
pedimento=pedimento,
numero_partida=i,
organizacion_id=organizacion_id
)
print(f"\n=== RESUMEN ===")
print(f"Pedimentos procesados: {pedimentos_procesados}")
print(f"Total de partidas agregadas: {total_partidas_agregadas}")
print(f"Procesamiento completado para organización {organizacion_id}")
@shared_task
def crear_partidas_por_pedimento(pedimento_id):
try:
pedimento = Pedimento.objects.get(id=pedimento_id)
except Pedimento.DoesNotExist:
print(f"Error: Pedimento con ID {pedimento_id} no encontrado")
return
if pedimento.numero_partidas > pedimento.partidas.count():
for i in range(1, pedimento.numero_partidas + 1):
from api.customs.models import Partida
Partida.objects.get_or_create(
pedimento=pedimento,
numero_partida=i,
organizacion_id=pedimento.organizacion_id
)
print(f"Procesando pedimento individual {pedimento_id}...")
partidas_agregadas = 0
# 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_existentes = pedimento.partidas.count()
if pedimento.numero_partidas > partidas_existentes:
print(f"Pedimento {pedimento_id} - Partidas existentes: {partidas_existentes}, Requeridas: {pedimento.numero_partidas}")
for i in range(1, pedimento.numero_partidas + 1):
from api.customs.models import Partida
partida, created = Partida.objects.get_or_create(
pedimento=pedimento,
numero_partida=i,
organizacion_id=pedimento.organizacion_id
)
if created:
partidas_agregadas += 1
print(f"✓ Partidas agregadas para pedimento {pedimento_id}: {partidas_agregadas}")
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}")