Browse Source

Aprimoramentos importação Gescon

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

131
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,79 +651,74 @@ class Gescon(models.Model):
continue continue
if convenio.num_processo_sf != sigad: if convenio.num_processo_sf != sigad:
sigi_nums = filter( self.add_message(
type(convenio.num_processo_sf).isdigit, _(u"\tO contrato Gescon nº {numero} corresponde"
convenio.num_processo_sf u" ao convênio SIGI {url}, mas o NUP sigad "
).zfill(17) u"diverge (Gescon: {sigad_gescon}, "
gesc_nums = filter(type(sigad).isdigit, sigad).zfill(17) u"SIGI: {sigad_sigi}). CORRIGIDO!").format(
if ( sigi_nums == gesc_nums or numero=numero,
convenio.num_processo_sf == ""): url=reverse('admin:%s_%s_change' % (
# Número SIGAD incorreto no SIGI, podemos corrigir convenio._meta.app_label,
convenio.num_processso_sf = sigad convenio._meta.model_name),
convenio.save() args=[convenio.id]),
else: sigad_gescon=sigad,
self.add_message( sigad_sigi=convenio.num_processo_sf
_(u"\tO contrato Gescon nº {numero} corresponde"
u" ao convênio SIGI {url}, mas o NUP sigad "
u"diverge (Gescon: {sigad_gescon}, "
u"SIGI: {sigad_sigi})").format(
numero=numero,
url=reverse('admin:%s_%s_change' % (
convenio._meta.app_label,
convenio._meta.model_name),
args=[convenio.id]),
sigad_gescon=sigad,
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, self.add_message(
convenio.num_convenio).zfill(8) _(u"\tO contrato Gescon ID {id} corresponde ao "
gesc_nums = filter(type(numero).isdigit, u"convênio SIGI {url}, mas o número do convênio"
numero).zfill(8) u" diverge (Gescon: {numero_gescon}, SIGI: "
if (sigi_nums == gesc_nums or u"{numero_sigi}). CORRIGIDO!").format(
convenio.num_convenio == ""): id=contrato['id'],
# Número gescon errado no SIGI mas podemos corrigir url=reverse('admin:%s_%s_change' % (
convenio.num_convenio = numero convenio._meta.app_label,
else: convenio._meta.model_name),
self.add_message( args=[convenio.id]
_(u"\tO contrato Gescon ID {id} corresponde ao " ),
u"convênio SIGI {url}, mas o número do convênio" numero_gescon=numero,
u" diverge (Gescon: {numero_gescon}, SIGI: " numero_sigi=convenio.num_convenio
u"{numero_sigi})").format( )
id=contrato['id'], )
url=reverse('admin:%s_%s_change' % ( convenio.num_convenio = numero
convenio._meta.app_label, alertas += 1
convenio._meta.model_name),
args=[convenio.id]
),
numero_gescon=numero,
numero_sigi=convenio.num_convenio
)
)
erros += 1
continue
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