Se agrego filtro de organizacion a datastage y pedimentos

This commit is contained in:
2025-10-05 17:30:03 -06:00
parent 5c3df2f34c
commit 617756da56
4 changed files with 155 additions and 43 deletions

View File

@@ -54,6 +54,143 @@ def partida_to_dict(partida):
"numero": partida.numero_partida,
}
@shared_task
def procesar_coves_pedimento(pedimento_id):
pedimento = Pedimento.objects.get(id=pedimento_id)
if pedimento.coves.filter(cove_descargado=False).exists():
pedimento_dict = pedimento_to_dict(pedimento)
credenciales = Vucem.objects.filter(
id=CredencialesImportador.objects.filter(rfc=pedimento.contribuyente).first().vucem.id
).first()
credenciales_dict = credenciales_to_dict(credenciales)
payload = {
"coves": [cove_to_dict(cove) for cove in pedimento.coves.filter(cove_descargado=False)],
"pedimento": pedimento_dict,
"credencial": credenciales_dict
}
response = requests.post(
f"{SERVICE_API_URL_V2}/services/all/coves",
data=json.dumps(payload),
headers={"Content-Type": "application/json"}
)
print(f"Servicio de COVEs enviado para pedimento {pedimento.pedimento}")
@shared_task
def procesar_acuse_coves_pedimento(pedimento_id):
pedimento = Pedimento.objects.get(id=pedimento_id)
if pedimento.coves.filter(acuse_cove_descargado=False).exists():
pedimento_dict = pedimento_to_dict(pedimento)
credenciales = Vucem.objects.filter(
id=CredencialesImportador.objects.filter(rfc=pedimento.contribuyente).first().vucem.id
).first()
credenciales_dict = credenciales_to_dict(credenciales)
payload = {
"coves": [cove_to_dict(cove) for cove in pedimento.coves.filter(acuse_cove_descargado=False)],
"pedimento": pedimento_dict,
"credencial": credenciales_dict
}
response = requests.post(
f"{SERVICE_API_URL_V2}/services/all/acuse/cove/",
data=json.dumps(payload),
headers={"Content-Type": "application/json"}
)
print(f"Servicio de acuses de COVEs enviado para pedimento {pedimento.pedimento}")
@shared_task
def procesar_edocs_pedimento(pedimento_id):
pedimento = Pedimento.objects.get(id=pedimento_id)
if pedimento.documentos.filter(edocument_descargado=False).exists():
pedimento_dict = pedimento_to_dict(pedimento)
credenciales = Vucem.objects.filter(
id=CredencialesImportador.objects.filter(rfc=pedimento.contribuyente).first().vucem.id
).first()
credenciales_dict = credenciales_to_dict(credenciales)
payload = {
"edocs": [edoc_to_dict(edoc) for edoc in pedimento.documentos.filter(edocument_descargado=False)],
"pedimento": pedimento_dict,
"credencial": credenciales_dict
}
response = requests.post(
f"{SERVICE_API_URL_V2}/services/all/acuse/pedimento/",
data=json.dumps(payload),
headers={"Content-Type": "application/json"}
)
print(f"Servicio de E-documents enviado para pedimento {pedimento.pedimento}")
@shared_task
def procesar_acuses_pedimento(pedimento_id):
pedimento = Pedimento.objects.get(id=pedimento_id)
if pedimento.documentos.filter(acuse_descargado=False).exists():
pedimento_dict = pedimento_to_dict(pedimento)
credenciales = Vucem.objects.filter(
id=CredencialesImportador.objects.filter(rfc=pedimento.contribuyente).first().vucem.id
).first()
credenciales_dict = credenciales_to_dict(credenciales)
payload = {
"edocs": [edoc_to_dict(edoc) for edoc in pedimento.documentos.filter(acuse_descargado=False)],
"pedimento": pedimento_dict,
"credencial": credenciales_dict
}
response = requests.post(
f"{SERVICE_API_URL_V2}/services/all/acuse/pedimento/",
data=json.dumps(payload),
headers={"Content-Type": "application/json"}
)
print(f"Servicio de acuses enviado para pedimento {pedimento.pedimento}")
@shared_task
def procesar_partidas_pedimento(pedimento_id):
pedimento = Pedimento.objects.get(id=pedimento_id)
if pedimento.partidas.filter(descargado=False).exists():
pedimento_dict = pedimento_to_dict(pedimento)
credenciales = Vucem.objects.filter(
id=CredencialesImportador.objects.filter(rfc=pedimento.contribuyente).first().vucem.id
).first()
credenciales_dict = credenciales_to_dict(credenciales)
payload = {
"partidas": [partida_to_dict(partida) for partida in pedimento.partidas.filter(descargado=False)],
"pedimento": pedimento_dict,
"credencial": credenciales_dict
}
response = requests.post(
f"{SERVICE_API_URL_V2}/services/all/partidas/",
data=json.dumps(payload),
headers={"Content-Type": "application/json"}
)
print(f"Servicio de partidas enviado para pedimento {pedimento.pedimento}")
@shared_task
def procesar_remesas_pedimento(pedimento_id):
pedimento = Pedimento.objects.get(id=pedimento_id)
if not pedimento.documents.filter(document_type=3).exists(): # Tipo 3: Remesa
pedimento_dict = pedimento_to_dict(pedimento)
credenciales = Vucem.objects.filter(
id=CredencialesImportador.objects.filter(rfc=pedimento.contribuyente).first().vucem.id
).first()
credenciales_dict = credenciales_to_dict(credenciales)
payload = {
"pedimento": pedimento_dict,
"credencial": credenciales_dict
}
response = requests.post(
f"{SERVICE_API_URL_V2}/services/remesas",
data=json.dumps(payload),
headers={"Content-Type": "application/json"}
)
print(f"Servicio de remesas enviado para pedimento {pedimento.pedimento}")
@shared_task
def procesar_pedimento_completo_individual(pedimento_id):
pedimento = Pedimento.objects.get(id=pedimento_id)
@@ -74,17 +211,6 @@ def procesar_pedimento_completo_individual(pedimento_id):
)
print(f"Servicio enviado para pedimento {pedimento.pedimento}")
def procesar_pedimentos_completos_en_lotes(organizacion_id, batch_size=20):
pedimentos = Pedimento.objects.filter(organizacion_id=organizacion_id)
ids = list(pedimentos.values_list('id', flat=True))
for i in range(0, len(ids), batch_size):
batch = ids[i:i+batch_size]
job = group(
procesar_pedimento_completo_individual.s(ped_id)
for ped_id in batch
)
job.apply_async()
@shared_task
def procesar_pedimentos_completos(organizacion_id):
pedimentos = Pedimento.objects.filter(organizacion_id=organizacion_id)
@@ -111,7 +237,6 @@ def procesar_pedimentos_completos(organizacion_id):
# Aquí puedes continuar con el resto de tu lógica
print(f"Servicio enviado para pedimento {pedimento.pedimento}")
@shared_task
def procesar_remesas(organizacion_id):
pedimentos = Pedimento.objects.filter(organizacion_id=organizacion_id)