Skip to content

Commit

Permalink
Merge pull request #1416 from prefeiturasp/hotfix/1.33.3
Browse files Browse the repository at this point in the history
Hotfix/1.33.3
  • Loading branch information
alcfernandes authored Sep 15, 2022
2 parents 1a404b7 + 6456b4a commit 4cdd3f2
Show file tree
Hide file tree
Showing 16 changed files with 219 additions and 40 deletions.
4 changes: 4 additions & 0 deletions hotfixes.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
### 1.33.3 - 15/09/2022 - Hotfix - Soluções de bugs urgentes durante a sprint 49
* (71660) Altera conclusão de PC para tratar erros de e-mail de notificação sem abortar conclusão da PC
* (72907) Melhorias diversas no relatório consolidado DRE

### 1.33.2 - 14/09/2022 - Hotfix - Soluções de bugs urgentes durante a sprint 49
* (72908) Melhorias na ata de parecer técnico
* (72442) Remoção do campos devolução ao tesouro da PC
Expand Down
2 changes: 1 addition & 1 deletion sme_ptrf_apps/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
__version__ = "1.33.2"
__version__ = "1.33.3"


__version_info__ = tuple(
Expand Down
15 changes: 12 additions & 3 deletions sme_ptrf_apps/core/models/prestacao_conta.py
Original file line number Diff line number Diff line change
Expand Up @@ -316,13 +316,22 @@ def concluir_analise(self, resultado_analise, analises_de_conta_da_prestacao, mo
prestacao_atualizada = prestacao_atualizada.devolver(data_limite_ue=data_limite_ue)

if resultado_analise == PrestacaoConta.STATUS_APROVADA:
notificar_prestacao_de_contas_aprovada(self)
try:
notificar_prestacao_de_contas_aprovada(self)
except Exception as erro:
logger.error(f'Houve um erro ao notificar aprovação da PC. {erro}')

if resultado_analise == PrestacaoConta.STATUS_APROVADA_RESSALVA:
notificar_prestacao_de_contas_aprovada_com_ressalvas(self, motivos_aprovacao_ressalva, outros_motivos_aprovacao_ressalva)
try:
notificar_prestacao_de_contas_aprovada_com_ressalvas(self, motivos_aprovacao_ressalva, outros_motivos_aprovacao_ressalva)
except Exception as erro:
logger.error(f'Houve um erro ao notificar aprovação com ressalva da PC. {erro}')

if resultado_analise == PrestacaoConta.STATUS_REPROVADA:
notificar_prestacao_de_contas_reprovada(self, motivos_reprovacao, outros_motivos_reprovacao)
try:
notificar_prestacao_de_contas_reprovada(self, motivos_reprovacao, outros_motivos_reprovacao)
except Exception as erro:
logger.error(f'Houve um erro ao notificar reprovação da PC. {erro}')

return prestacao_atualizada

Expand Down
4 changes: 2 additions & 2 deletions sme_ptrf_apps/dre/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -185,8 +185,8 @@ def get_nome_tipo_conta(self, obj):

get_nome_tipo_conta.short_description = 'Tipo de conta'

list_display = ('get_nome_dre', 'periodo', 'get_nome_tipo_conta', 'texto')
list_filter = ('dre', 'periodo', 'tipo_conta')
list_display = ('get_nome_dre', 'periodo', 'get_nome_tipo_conta', 'texto', 'consolidado_dre')
list_filter = ('dre', 'periodo', 'tipo_conta', 'consolidado_dre')
list_display_links = ('get_nome_dre',)
readonly_fields = ('uuid', 'id')
search_fields = ('dre__nome', 'texto')
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from rest_framework import serializers

from ...models import JustificativaRelatorioConsolidadoDRE
from ...models import JustificativaRelatorioConsolidadoDRE, ConsolidadoDRE
from sme_ptrf_apps.core.models import Periodo, TipoConta, Unidade

class JustificativaRelatorioConsolidadoDreRetrieveSerializer(serializers.ModelSerializer):
Expand All @@ -22,6 +22,13 @@ class JustificativaRelatorioConsolidadoDreRetrieveSerializer(serializers.ModelSe
queryset=Periodo.objects.all()
)

consolidado_dre = serializers.SlugRelatedField(
slug_field='uuid',
required=False,
queryset=ConsolidadoDRE.objects.all(),
allow_null=True
)

class Meta:
model = JustificativaRelatorioConsolidadoDRE
fields = ('uuid', 'dre', 'tipo_conta', 'periodo', 'texto')
fields = ('uuid', 'dre', 'tipo_conta', 'periodo', 'texto', 'consolidado_dre')
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@ class JustificativasRelatoriosConsolidadosDreViewSet(viewsets.ModelViewSet):
serializer_class = JustificativaRelatorioConsolidadoDreRetrieveSerializer
queryset = JustificativaRelatorioConsolidadoDRE.objects.all()
filter_backends = (filters.DjangoFilterBackend,)
filter_fields = ('dre__uuid', 'tipo_conta__uuid', 'periodo__uuid')
filter_fields = ('dre__uuid', 'tipo_conta__uuid', 'periodo__uuid', 'consolidado_dre__uuid')
23 changes: 23 additions & 0 deletions sme_ptrf_apps/dre/migrations/0051_auto_20220912_1349.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Generated by Django 2.2.10 on 2022-09-12 13:49

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
('dre', '0050_auto_20220809_1459'),
]

operations = [
migrations.AddField(
model_name='justificativarelatorioconsolidadodre',
name='consolidado_dre',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='justificativas_relatorios_consolidados_dre_do_consolidado_dre', to='dre.ConsolidadoDRE'),
),
migrations.AlterUniqueTogether(
name='justificativarelatorioconsolidadodre',
unique_together=set(),
),
]
19 changes: 19 additions & 0 deletions sme_ptrf_apps/dre/migrations/0052_auto_20220913_0910.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Generated by Django 2.2.10 on 2022-09-13 09:10

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
('dre', '0051_auto_20220912_1349'),
]

operations = [
migrations.AlterField(
model_name='justificativarelatorioconsolidadodre',
name='consolidado_dre',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='justificativas_relatorios_consolidados_dre_do_consolidado_dre', to='dre.ConsolidadoDRE'),
),
]
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,13 @@ class JustificativaRelatorioConsolidadoDRE(ModeloBase):

texto = models.TextField('Justificativa', max_length=600, blank=True, null=True)

consolidado_dre = models.ForeignKey('ConsolidadoDRE', on_delete=models.CASCADE,
related_name='justificativas_relatorios_consolidados_dre_do_consolidado_dre',
blank=True, null=True)

class Meta:
verbose_name = 'Justificativa de relatório consolidado DRE'
verbose_name_plural = 'Justificativas de relatórios consolidados DREs'
unique_together = ['dre', 'tipo_conta', 'periodo']

def __str__(self):
return self.texto
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,15 @@
LOGGER = logging.getLogger(__name__)


def gerar_dados_demo_execucao_fisico_financeira(dre, periodo, usuario, parcial, previa=False, apenas_nao_publicadas=False, eh_consolidado_de_publicacoes_parciais=False, consolidado_dre=False):
def gerar_dados_demo_execucao_fisico_financeira(dre, periodo, usuario, parcial, previa=False, apenas_nao_publicadas=False, eh_consolidado_de_publicacoes_parciais=False, consolidado_dre=None):
try:
LOGGER.info("Gerando relatório consolidado...")

cabecalho = cria_cabecalho(periodo, parcial, previa)
bloco_consolidado_das_publicacoes_parciais = cria_bloco_consolidado_das_publicacoes_parciais(dre, periodo, eh_consolidado_de_publicacoes_parciais)
data_geracao_documento = cria_data_geracao_documento(usuario, dre, parcial, previa)
identificacao_dre = cria_identificacao_dre(dre)
execucao_financeira = cria_execucao_financeira(dre, periodo, apenas_nao_publicadas, consolidado_dre)
execucao_financeira = cria_execucao_financeira(dre, periodo, apenas_nao_publicadas, consolidado_dre, eh_consolidado_de_publicacoes_parciais)
execucao_fisica = cria_execucao_fisica(dre, periodo, apenas_nao_publicadas, eh_consolidado_de_publicacoes_parciais)
dados_fisicos_financeiros = cria_dados_fisicos_financeiros(dre, periodo, apenas_nao_publicadas, eh_consolidado_de_publicacoes_parciais)

Expand Down Expand Up @@ -128,7 +128,7 @@ def cria_identificacao_dre(dre):
return identificacao


def cria_execucao_financeira(dre, periodo, apenas_nao_publicadas, consolidado_dre):
def cria_execucao_financeira(dre, periodo, apenas_nao_publicadas, consolidado_dre, eh_consolidado_de_publicacoes_parciais):
"""BLOCO 2 - EXECUÇÃO FINANCEIRA"""
from .relatorio_consolidado_service import informacoes_execucao_financeira

Expand Down Expand Up @@ -225,18 +225,63 @@ def cria_execucao_financeira(dre, periodo, apenas_nao_publicadas, consolidado_dr
"outros_creditos": formata_valor(outros_creditos_total)
}

# Justificativa
justificativa = JustificativaRelatorioConsolidadoDRE.objects.filter(dre=dre).filter(
tipo_conta=tipo_conta).filter(periodo=periodo).first()

execucao_financeira = {
"tipo_conta": tipo_conta.nome if tipo_conta.nome else "",
"custeio": custeio,
"capital": capital,
"livre": rla,
"totais": totais,
"justificativa": justificativa.texto if justificativa else '',
}
# Justificativa #
justificativa = None
obj_justificativas_list = []

if eh_consolidado_de_publicacoes_parciais:

justificativas = JustificativaRelatorioConsolidadoDRE.objects.filter(
dre=dre,
tipo_conta=tipo_conta,
periodo=periodo,
)

for just in justificativas:
texto_justificativa = ''
if just:
texto_justificativa = f"{just.texto}"
if just and just.consolidado_dre:
texto_justificativa = f"{texto_justificativa} - {just.consolidado_dre.referencia}"

obj_justificativa = {
"justificativa": texto_justificativa,
}
obj_justificativas_list.append(obj_justificativa)

elif consolidado_dre and consolidado_dre.versao == 'FINAL':
justificativa = JustificativaRelatorioConsolidadoDRE.objects.filter(
dre=dre,
tipo_conta=tipo_conta,
periodo=periodo,
consolidado_dre=consolidado_dre
).last()
else:
justificativa = JustificativaRelatorioConsolidadoDRE.objects.filter(
dre=dre,
tipo_conta=tipo_conta,
periodo=periodo,
consolidado_dre__isnull=True,
).last()

if not eh_consolidado_de_publicacoes_parciais:
execucao_financeira = {
"tipo_conta": tipo_conta.nome if tipo_conta.nome else "",
"custeio": custeio,
"capital": capital,
"livre": rla,
"totais": totais,
"justificativa": justificativa.texto if justificativa else '',
}
else:
execucao_financeira = {
"tipo_conta": tipo_conta.nome if tipo_conta.nome else "",
"custeio": custeio,
"capital": capital,
"livre": rla,
"totais": totais,
"justificativa": obj_justificativas_list,
}

execucao_financeira_list['por_tipo_de_conta'].append(execucao_financeira)

Expand Down Expand Up @@ -779,4 +824,4 @@ def converte_string_value_formatada_para_float(string):
result += int(num.replace('.', ''))
result += (int(dec) / 100)

return result
return result
24 changes: 18 additions & 6 deletions sme_ptrf_apps/dre/services/relatorio_consolidado_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,17 +111,29 @@ def retorna_informacoes_execucao_financeira_todas_as_contas(dre, periodo, consol

for tipo_conta in tipos_de_conta:
totais = informacoes_execucao_financeira(dre, periodo, tipo_conta, apenas_nao_publicadas=True, consolidado_dre=consolidado_dre)
justificativa = JustificativaRelatorioConsolidadoDRE.objects.filter(
dre=dre,
tipo_conta=tipo_conta,
periodo=periodo
).first()

if consolidado_dre and consolidado_dre.versao == 'FINAL':
# Justificativa
justificativa = JustificativaRelatorioConsolidadoDRE.objects.filter(
dre=dre,
tipo_conta=tipo_conta,
periodo=periodo,
consolidado_dre=consolidado_dre
).last()
else:
justificativa = JustificativaRelatorioConsolidadoDRE.objects.filter(
dre=dre,
tipo_conta=tipo_conta,
periodo=periodo,
consolidado_dre__isnull=True,
).last()

objeto_tipo_de_conta.append({
'tipo_conta': tipo_conta.nome if tipo_conta.nome else '',
'valores': totais,
'justificativa_texto': justificativa.texto if justificativa else '',
'justificativa_uuid': justificativa.uuid if justificativa else None,
'consolidado_dre': consolidado_dre.uuid if justificativa and justificativa.consolidado_dre and justificativa.consolidado_dre.uuid else None,
'tipo_conta_uuid': tipo_conta.uuid,
})

Expand Down Expand Up @@ -1038,7 +1050,7 @@ def _totaliza_devolucoes_ao_tesouro(prestacao_conta, periodo, totais):

if _status_prestacao_contas:
resultado.append(dado)
resultado = sorted(resultado, key=lambda row: row['status_prestacao_contas'])
# resultado = sorted(resultado, key=lambda row: row['status_prestacao_contas'])

return resultado

Expand Down
15 changes: 14 additions & 1 deletion sme_ptrf_apps/dre/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
AnoAnaliseRegularidade,
AnaliseRegularidadeAssociacao,
ItemVerificacaoRegularidade,
VerificacaoRegularidadeAssociacao, ConsolidadoDRE, Lauda
VerificacaoRegularidadeAssociacao, ConsolidadoDRE, Lauda, JustificativaRelatorioConsolidadoDRE
)

from django.core.exceptions import ValidationError
Expand Down Expand Up @@ -157,6 +157,19 @@ def concluir_consolidado_dre_async(
consolidado_dre=consolidado_dre,
)

# Atrelando consolidado as justificativas
for tipo_conta in tipo_contas:
justificativa = JustificativaRelatorioConsolidadoDRE.objects.filter(
dre=dre,
tipo_conta=tipo_conta,
periodo=periodo,
consolidado_dre__isnull=True,
).last()

if justificativa:
justificativa.consolidado_dre = consolidado_dre
justificativa.save()

gerar_relatorio_consolidado_dre_async(
dre_uuid=dre_uuid,
periodo_uuid=periodo_uuid,
Expand Down
13 changes: 13 additions & 0 deletions sme_ptrf_apps/dre/templatetags/retorna_type.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from django import template

import logging

register = template.Library()

LOGGER = logging.getLogger(__name__)


@register.filter
def retorna_type(value):
""" It returns variable type as a pure string name """
return type(value).__name__
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ def test_list_comentarios_analise_prestacao(jwt_authenticated_client_relatorio_c

esperado = [
{
'consolidado_dre': None,
'uuid': f'{justificativa_relatorio_dre_consolidado.uuid}',
'dre': f'{dre_uuid}',
'tipo_conta': f'{tipo_conta_uuid}',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -310,6 +310,7 @@ def test_api_get_info_execucao_financeira_relatorio_consolidado_dre_parcial(
'periodo_referencia': '2019.2',
'por_tipo_de_conta': [
{
'consolidado_dre': None,
'justificativa_texto': '',
'justificativa_uuid': None,
'tipo_conta': 'Cartão',
Expand Down Expand Up @@ -354,6 +355,7 @@ def test_api_get_info_execucao_financeira_relatorio_consolidado_dre_parcial(
}
},
{
'consolidado_dre': None,
'justificativa_texto': '',
'justificativa_uuid': None,
'tipo_conta': 'Cheque',
Expand Down Expand Up @@ -437,6 +439,7 @@ def test_api_get_info_execucao_financeira_relatorio_consolidado_dre_final(
'periodo_referencia': '2019.2',
'por_tipo_de_conta': [
{
'consolidado_dre': None,
'justificativa_texto': '',
'justificativa_uuid': None,
'tipo_conta': 'Cartão',
Expand Down Expand Up @@ -482,6 +485,7 @@ def test_api_get_info_execucao_financeira_relatorio_consolidado_dre_final(
}
},
{
'consolidado_dre': None,
'justificativa_texto': '',
'justificativa_uuid': None,
'tipo_conta': 'Cheque',
Expand Down Expand Up @@ -563,6 +567,7 @@ def test_api_get_info_execucao_financeira_relatorio(
'periodo_referencia': '2019.2',
'por_tipo_de_conta': [
{
'consolidado_dre': None,
'justificativa_texto': '',
'justificativa_uuid': None,
'tipo_conta': 'Cheque',
Expand Down Expand Up @@ -605,6 +610,7 @@ def test_api_get_info_execucao_financeira_relatorio(
'saldo_reprogramado_proximo_periodo_livre': 2000.0,
'saldo_reprogramado_proximo_periodo_total': 4250.0}},
{
'consolidado_dre': None,
'justificativa_texto': '',
'justificativa_uuid': None,
'tipo_conta': 'Cartão',
Expand Down
Loading

0 comments on commit 4cdd3f2

Please sign in to comment.