from celery import shared_task, group from api.customs.models import ProcesamientoPedimento, Pedimento, Cove, EDocument from core.utils import xml_controller import requests from core.utils import xml_remesas_controller def obtener_pedimentos(organizacion_id): return Pedimento.objects.filter(organizacion_id=organizacion_id) def extraer_coves(pedimento): remesas = pedimento.documents.filter(document_type=3).first() with open(f'./media/{remesas.archivo}', 'r') as f: xml_content = f.read() xml_data = xml_remesas_controller.extract_remesas(xml_content) return xml_data @shared_task def auditar_procesamiento_remesas(organizacion_id): pedimentos = obtener_pedimentos(organizacion_id) for pedimento in pedimentos: if pedimento.remesas: # Tipo 3: Remesa if not pedimento.documents.filter(document_type=3).exists(): ProcesamientoPedimento.objects.get_or_create( pedimento=pedimento, servicio_id=5, # ID del servicio de remesas organizacion=organizacion_id ) else: xml_data = extraer_coves(pedimento) if xml_data: for remesa in xml_data: Cove.objects.get_or_create( pedimento=pedimento, numero_cove=remesa.get('remesaSA'), organizacion=organizacion_id ) @shared_task 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) 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 pass