Browse Source

Aprimoramentos importação Gescon

pull/108/head
Sesostris Vieira 3 years ago
parent
commit
46f2d6e3c3
  1. 81
      sigi/apps/convenios/models.py

81
sigi/apps/convenios/models.py

@ -523,7 +523,7 @@ class Gescon(models.Model):
novos = 0 novos = 0
erros = 0 erros = 0
verificados = 0 alertas = 0
atualizados = 0 atualizados = 0
for contrato in nossos: for contrato in nossos:
@ -607,6 +607,15 @@ class Gescon(models.Model):
Q(num_processo_sf=numero) Q(num_processo_sf=numero)
) )
chk = convenios.count() chk = convenios.count()
if chk > 1:
# Pode ser que existam vários contratos de subespécies
# diferentes com o mesmo número Gescon. Neste caso, o
# ideal é filtrar pelo tipo de projeto. Existindo, é
# ele mesmo. Se não existir, então segue com os
# múltiplos para registrar o problema mais adiante
if convenios.filter(projeto=projeto).count() == 1:
convenios = convenios.filter(projeto=projeto)
chk = 1
if chk == 0: if chk == 0:
convenio = Convenio( convenio = Convenio(
@ -623,6 +632,7 @@ class Gescon(models.Model):
) )
convenio.save() convenio.save()
novos += 1 novos += 1
continue
elif chk == 1: elif chk == 1:
convenio = convenios.get() convenio = convenios.get()
if convenio.casa_legislativa != orgao: if convenio.casa_legislativa != orgao:
@ -641,22 +651,11 @@ class Gescon(models.Model):
continue continue
if convenio.num_processo_sf != sigad: if convenio.num_processo_sf != sigad:
sigi_nums = filter(
type(convenio.num_processo_sf).isdigit,
convenio.num_processo_sf
).zfill(17)
gesc_nums = filter(type(sigad).isdigit, sigad).zfill(17)
if ( sigi_nums == gesc_nums or
convenio.num_processo_sf == ""):
# Número SIGAD incorreto no SIGI, podemos corrigir
convenio.num_processso_sf = sigad
convenio.save()
else:
self.add_message( self.add_message(
_(u"\tO contrato Gescon nº {numero} corresponde" _(u"\tO contrato Gescon nº {numero} corresponde"
u" ao convênio SIGI {url}, mas o NUP sigad " u" ao convênio SIGI {url}, mas o NUP sigad "
u"diverge (Gescon: {sigad_gescon}, " u"diverge (Gescon: {sigad_gescon}, "
u"SIGI: {sigad_sigi})").format( u"SIGI: {sigad_sigi}). CORRIGIDO!").format(
numero=numero, numero=numero,
url=reverse('admin:%s_%s_change' % ( url=reverse('admin:%s_%s_change' % (
convenio._meta.app_label, convenio._meta.app_label,
@ -666,24 +665,15 @@ class Gescon(models.Model):
sigad_sigi=convenio.num_processo_sf sigad_sigi=convenio.num_processo_sf
) )
) )
erros += 1 convenio.num_processo_sf = sigad
continue alertas += 1
if convenio.num_convenio != numero: if convenio.num_convenio != numero:
sigi_nums = filter(type(convenio.num_convenio).isdigit,
convenio.num_convenio).zfill(8)
gesc_nums = filter(type(numero).isdigit,
numero).zfill(8)
if (sigi_nums == gesc_nums or
convenio.num_convenio == ""):
# Número gescon errado no SIGI mas podemos corrigir
convenio.num_convenio = numero
else:
self.add_message( self.add_message(
_(u"\tO contrato Gescon ID {id} corresponde ao " _(u"\tO contrato Gescon ID {id} corresponde ao "
u"convênio SIGI {url}, mas o número do convênio" u"convênio SIGI {url}, mas o número do convênio"
u" diverge (Gescon: {numero_gescon}, SIGI: " u" diverge (Gescon: {numero_gescon}, SIGI: "
u"{numero_sigi})").format( u"{numero_sigi}). CORRIGIDO!").format(
id=contrato['id'], id=contrato['id'],
url=reverse('admin:%s_%s_change' % ( url=reverse('admin:%s_%s_change' % (
convenio._meta.app_label, convenio._meta.app_label,
@ -694,26 +684,41 @@ class Gescon(models.Model):
numero_sigi=convenio.num_convenio numero_sigi=convenio.num_convenio
) )
) )
erros += 1 convenio.num_convenio = numero
continue alertas += 1
if contrato['objeto'] not in convenio.observacao: if contrato['objeto'] not in convenio.observacao:
convenio.observacao += "\n" + contrato['objeto'] convenio.observacao += "\n" + contrato['objeto']
convenio.data_sigad=contrato['assinatura'] convenio.data_sigad = contrato['assinatura']
convenio.data_retorno_assinatura=contrato['inicioVigencia'] convenio.data_retorno_assinatura = contrato[
convenio.data_termino_vigencia=contrato['terminoVigencia'] 'inicioVigencia'
convenio.data_pub_diario=contrato['publicacao'] ]
convenio.data_termino_vigencia = contrato[
'terminoVigencia'
]
convenio.data_pub_diario = contrato['publicacao']
try: try:
convenio.save() convenio.save()
except Exception: except Exception as e:
import ipdb; ipdb.set_trace() self.add_message(
print contrato _(u"Ocorreu um erro ao salvar o convênio {url} no "
raise u"SIGI. Alguma informação do Gescon pode ter "
u"quebrado o sistema. Informe ao suporte. Erro:"
u"{errmsg}").format(
url=reverse('admin:%s_%s_change' % (
convenio._meta.app_label,
convenio._meta.model_name),
args=[convenio.id]
),
errmsg=str(e)
)
)
erros += 1
continue
atualizados += 1 atualizados += 1
verificados += 1
else: else:
self.add_message(_(u"\tExistem {count} convênios no SIGI " self.add_message(_(u"\tExistem {count} convênios no SIGI "
u"que correspondem ao mesmo contrato no " u"que correspondem ao mesmo contrato no "
@ -729,11 +734,11 @@ class Gescon(models.Model):
self.add_message( self.add_message(
_(u"\t{novos} novos convenios adicionados ao SIGI, " _(u"\t{novos} novos convenios adicionados ao SIGI, "
u"{atualizados} atualizados, {verificados} confirmados e " u"{atualizados} atualizados, sendo {alertas} com alertas, e "
u"{erros} reportados com erro.").format( u"{erros} reportados com erro.").format(
novos=novos, novos=novos,
atualizados=atualizados, atualizados=atualizados,
verificados=verificados, alertas=alertas,
erros=erros erros=erros
) )
) )

Loading…
Cancel
Save