Se agrego creacion automatica de tareas:
This commit is contained in:
@@ -210,6 +210,7 @@ def procesar_pedimento_completo_individual(pedimento_id):
|
|||||||
headers={"Content-Type": "application/json"}
|
headers={"Content-Type": "application/json"}
|
||||||
)
|
)
|
||||||
print(f"Servicio enviado para pedimento {pedimento.pedimento}")
|
print(f"Servicio enviado para pedimento {pedimento.pedimento}")
|
||||||
|
return response
|
||||||
|
|
||||||
@shared_task
|
@shared_task
|
||||||
def procesar_pedimentos_completos(organizacion_id):
|
def procesar_pedimentos_completos(organizacion_id):
|
||||||
|
|||||||
@@ -38,6 +38,8 @@ from api.logger.mixins import LoggingMixin
|
|||||||
from mixins.filtrado_organizacion import OrganizacionFiltradaMixin, ProcesosPorOrganizacionMixin
|
from mixins.filtrado_organizacion import OrganizacionFiltradaMixin, ProcesosPorOrganizacionMixin
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
|
from .tasks.microservice_v2 import *
|
||||||
|
from .tasks.auditoria import crear_partidas_por_pedimento
|
||||||
|
|
||||||
|
|
||||||
class CustomPagination(PageNumberPagination):
|
class CustomPagination(PageNumberPagination):
|
||||||
@@ -166,20 +168,10 @@ class ViewSetPedimento(LoggingMixin, viewsets.ModelViewSet, OrganizacionFiltrada
|
|||||||
if fecha_pago and aduana and patente and pedimento:
|
if fecha_pago and aduana and patente and pedimento:
|
||||||
pedimento_app = f"{str(fecha_pago.year)[-2:]}-{str(aduana).zfill(2)[-2:]}-{str(patente).zfill(4)[-4:]}-{str(pedimento).zfill(7)[-7:]}"
|
pedimento_app = f"{str(fecha_pago.year)[-2:]}-{str(aduana).zfill(2)[-2:]}-{str(patente).zfill(4)[-4:]}-{str(pedimento).zfill(7)[-7:]}"
|
||||||
serializer.save(organizacion=self.request.user.organizacion, pedimento_app=pedimento_app)
|
serializer.save(organizacion=self.request.user.organizacion, pedimento_app=pedimento_app)
|
||||||
return
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Usar el nombre del servicio de Docker Compose en lugar de localhost
|
# Usar el nombre del servicio de Docker Compose en lugar de localhost
|
||||||
response = requests.request('POST', f'{SERVICE_API_URL}/services/pedimento', params={},
|
response = procesar_pedimento_completo_individual(serializer.instance.id)
|
||||||
json={
|
|
||||||
'estado': 1,
|
|
||||||
'servicio': 3,
|
|
||||||
'tipo_procesamiento': 2,
|
|
||||||
'pedimento': str(serializer.instance.id),
|
|
||||||
'organizacion': str(self.request.user.organizacion.id),
|
|
||||||
},
|
|
||||||
timeout=10
|
|
||||||
)
|
|
||||||
|
|
||||||
# Verificar si la respuesta fue exitosa
|
# Verificar si la respuesta fue exitosa
|
||||||
if response.status_code == 200:
|
if response.status_code == 200:
|
||||||
@@ -201,6 +193,42 @@ class ViewSetPedimento(LoggingMixin, viewsets.ModelViewSet, OrganizacionFiltrada
|
|||||||
print(f"🚨 Error de request al servicio FastAPI: {e}")
|
print(f"🚨 Error de request al servicio FastAPI: {e}")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"💥 Error inesperado al llamar al servicio FastAPI: {e}")
|
print(f"💥 Error inesperado al llamar al servicio FastAPI: {e}")
|
||||||
|
|
||||||
|
def perform_update(self, serializer):
|
||||||
|
"""
|
||||||
|
Ejecuta acciones después de actualizar un pedimento basado en los campos modificados.
|
||||||
|
"""
|
||||||
|
# Obtener los campos que se están actualizando
|
||||||
|
updated_fields = set(serializer.validated_data.keys())
|
||||||
|
|
||||||
|
# Guardar los cambios
|
||||||
|
pedimento = serializer.save()
|
||||||
|
|
||||||
|
# Si se actualizó el campo existe_expediente, procesar el pedimento completo
|
||||||
|
if 'existe_expediente' in updated_fields:
|
||||||
|
# Iniciar todas las tareas
|
||||||
|
procesar_remesas_pedimento(pedimento.id)
|
||||||
|
crear_partidas_por_pedimento(pedimento.id)
|
||||||
|
procesar_acuse_coves_pedimento(pedimento.id)
|
||||||
|
procesar_edocs_pedimento(pedimento.id)
|
||||||
|
procesar_acuses_pedimento(pedimento.id)
|
||||||
|
procesar_partidas_pedimento(pedimento.id)
|
||||||
|
procesar_coves_pedimento(pedimento.id)
|
||||||
|
|
||||||
|
# Agregar mensaje de tareas iniciadas al serializer
|
||||||
|
serializer._data = {
|
||||||
|
**serializer.data,
|
||||||
|
"message": "Tareas de procesamiento iniciadas",
|
||||||
|
"tasks": [
|
||||||
|
"Procesamiento de remesas",
|
||||||
|
"Creación de partidas",
|
||||||
|
"Procesamiento de acuses de COVEs",
|
||||||
|
"Procesamiento de E-documents",
|
||||||
|
"Procesamiento de acuses",
|
||||||
|
"Procesamiento de partidas",
|
||||||
|
"Procesamiento de COVEs"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
my_tags = ['Pedimentos']
|
my_tags = ['Pedimentos']
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ from .views import ExportModelView, dashboard_summary
|
|||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('exportmodel/', ExportModelView.as_view(), name='export-model'),
|
path('exportmodel/', ExportModelView.as_view(), name='export-model'),
|
||||||
#path('dashboard/summary/', dashboard_summary, name='dashboard-summary'),
|
path('dashboard/summary/', dashboard_summary, name='dashboard-summary'),
|
||||||
#path('documentos-por-fecha/', documentos_por_fecha, name='documentos-por-fecha'),
|
#path('documentos-por-fecha/', documentos_por_fecha, name='documentos-por-fecha'),
|
||||||
#path('table-summary/', table_summary, name='table-summary'),
|
#path('table-summary/', table_summary, name='table-summary'),
|
||||||
|
|
||||||
|
|||||||
@@ -266,7 +266,19 @@ def dashboard_summary(request):
|
|||||||
cumplimiento_partidas = (partidas_descargadas /
|
cumplimiento_partidas = (partidas_descargadas /
|
||||||
partidas_total * 100) if partidas_total else 0
|
partidas_total * 100) if partidas_total else 0
|
||||||
|
|
||||||
|
# Calcular cumplimiento total (promedio de todos los indicadores)
|
||||||
|
indicadores = [
|
||||||
|
cumplimiento_pedimentos,
|
||||||
|
cumplimiento_coves,
|
||||||
|
cumplimiento_acuse_coves,
|
||||||
|
cumplimiento_edocs,
|
||||||
|
cumplimiento_acuses,
|
||||||
|
cumplimiento_partidas
|
||||||
|
]
|
||||||
|
cumplimiento_total = sum(indicadores) / len(indicadores) if indicadores else 0
|
||||||
|
|
||||||
return Response({
|
return Response({
|
||||||
|
"cumplimiento_total": round(cumplimiento_total, 2),
|
||||||
"pedimentos": {
|
"pedimentos": {
|
||||||
"total": pedimentos_total,
|
"total": pedimentos_total,
|
||||||
"completos": pedimentos_completos,
|
"completos": pedimentos_completos,
|
||||||
@@ -276,19 +288,26 @@ def dashboard_summary(request):
|
|||||||
"coves": {
|
"coves": {
|
||||||
"total": coves_total,
|
"total": coves_total,
|
||||||
"coves_procesados": coves_procesados,
|
"coves_procesados": coves_procesados,
|
||||||
"acuse_coves_procesados": acuse_coves_procesados,
|
|
||||||
"coves_pendientes": coves_pendientes,
|
"coves_pendientes": coves_pendientes,
|
||||||
"acuse_coves_pendientes": acuse_coves_pendientes,
|
|
||||||
"coves_cumplimiento": round(cumplimiento_coves, 2),
|
"coves_cumplimiento": round(cumplimiento_coves, 2),
|
||||||
|
|
||||||
|
},
|
||||||
|
"acuse_coves": {
|
||||||
|
"total": coves_total,
|
||||||
|
"acuse_coves_procesados": acuse_coves_procesados,
|
||||||
|
"acuse_coves_pendientes": acuse_coves_pendientes,
|
||||||
"acuse_coves_cumplimiento": round(cumplimiento_acuse_coves, 2)
|
"acuse_coves_cumplimiento": round(cumplimiento_acuse_coves, 2)
|
||||||
},
|
},
|
||||||
"edocuments": {
|
"edocuments": {
|
||||||
"total": edocs_total,
|
"total": edocs_total,
|
||||||
"edocs_descargados": edocs_descargados,
|
"edocs_descargados": edocs_descargados,
|
||||||
"edocs_pendientes": edocs_pendientes,
|
"edocs_pendientes": edocs_pendientes,
|
||||||
|
"edocs_cumplimiento": round(cumplimiento_edocs, 2),
|
||||||
|
},
|
||||||
|
"acuses":{
|
||||||
|
"total": edocs_total,
|
||||||
"acuse_descargados": acuse_descargados,
|
"acuse_descargados": acuse_descargados,
|
||||||
"acuses_pendientes": acuses_pendientes,
|
"acuses_pendientes": acuses_pendientes,
|
||||||
"edocs_cumplimiento": round(cumplimiento_edocs, 2),
|
|
||||||
"acuses_cumplimiento": round(cumplimiento_acuses, 2)
|
"acuses_cumplimiento": round(cumplimiento_acuses, 2)
|
||||||
},
|
},
|
||||||
"remesas": {
|
"remesas": {
|
||||||
|
|||||||
Reference in New Issue
Block a user