Se agregaron cambios y estats para reportes
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
from django.core.management.base import BaseCommand
|
||||
from django.db.models import Count
|
||||
from api.customs.models import Pedimento, Cove, EDocument, Partida
|
||||
from api.record.models import Document
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = 'Elimina pedimentos duplicados dejando el que tiene más documentos, coves, edocs y partidas.'
|
||||
|
||||
def handle(self, *args, **options):
|
||||
duplicados = (
|
||||
Pedimento.objects
|
||||
.values('pedimento_app')
|
||||
.annotate(total=Count('id'))
|
||||
.filter(total__gt=1)
|
||||
)
|
||||
for dup in duplicados:
|
||||
pedimentos = (
|
||||
Pedimento.objects
|
||||
.filter(pedimento_app=dup['pedimento_app'])
|
||||
.annotate(
|
||||
num_docs=Count('documents'),
|
||||
num_coves=Count('coves'),
|
||||
num_edocs=Count('documentos'),
|
||||
num_partidas=Count('partidas')
|
||||
)
|
||||
.order_by('-num_docs', '-num_coves', '-num_edocs', '-num_partidas')
|
||||
)
|
||||
# Mantener el primero, eliminar los demás
|
||||
to_delete = pedimentos[1:]
|
||||
for ped in to_delete:
|
||||
self.stdout.write(f'Eliminando pedimento {ped.id} ({ped.pedimento_app})')
|
||||
Cove.objects.filter(pedimento=ped).delete()
|
||||
EDocument.objects.filter(pedimento=ped).delete()
|
||||
Partida.objects.filter(pedimento=ped).delete()
|
||||
Document.objects.filter(pedimento=ped).delete()
|
||||
ped.delete()
|
||||
self.stdout.write(self.style.SUCCESS('Eliminación de duplicados completada.'))
|
||||
@@ -1,8 +1,7 @@
|
||||
from celery import group
|
||||
|
||||
|
||||
from celery import shared_task, group
|
||||
from api.customs.models import *
|
||||
from api.record.models import *
|
||||
from api.customs.serializers import PedimentoSerializer
|
||||
from api.vucem.models import *
|
||||
import requests
|
||||
@@ -292,4 +291,15 @@ def procesar_partidas(organizacion_id):
|
||||
)
|
||||
# Aquí puedes continuar con el resto de tu lógica
|
||||
|
||||
print(f"Servicio enviado para pedimento {pedimento.pedimento}")
|
||||
print(f"Servicio enviado para pedimento {pedimento.pedimento}")
|
||||
|
||||
@shared_task
|
||||
def documentos_con_errores(organizacion_id):
|
||||
documentos = Document.objects.filter(organizacion_id=organizacion_id)
|
||||
|
||||
for doc in documentos:
|
||||
if doc.document_type is None or doc.size is None or doc.archivo is None:
|
||||
print(f"Documento con error: {doc.id} en organización {organizacion_id}")
|
||||
# Aquí puedes agregar lógica adicional para manejar documentos con errores
|
||||
# como enviar notificaciones, registrar en un log, etc.
|
||||
# documentos = Document.objects.all() --- IGNORE ---
|
||||
|
||||
Reference in New Issue
Block a user