From ecf192801bc51aeab1d0a2a25350ad3f76f9c332 Mon Sep 17 00:00:00 2001 From: Alessandro Fernandes Date: Wed, 14 Sep 2022 09:53:07 -0300 Subject: [PATCH 1/3] =?UTF-8?q?fix(71660):=20Inclui=20tratamento=20de=20er?= =?UTF-8?q?ros=20de=20notifica=C3=A7=C3=A3o=20na=20conclus=C3=A3o=20de=20P?= =?UTF-8?q?C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sme_ptrf_apps/core/models/prestacao_conta.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/sme_ptrf_apps/core/models/prestacao_conta.py b/sme_ptrf_apps/core/models/prestacao_conta.py index bd7922eeb..815ab25d5 100644 --- a/sme_ptrf_apps/core/models/prestacao_conta.py +++ b/sme_ptrf_apps/core/models/prestacao_conta.py @@ -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 From 29b60da0c154600ee92b478c13ceaa4a31230fd2 Mon Sep 17 00:00:00 2001 From: ollyvergithub Date: Wed, 14 Sep 2022 15:37:42 -0300 Subject: [PATCH 2/3] =?UTF-8?q?feat(72907):=20Implementa=20melhorias=20no?= =?UTF-8?q?=20demonstrativo=20do=20relat=C3=B3rio=20consolidado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sme_ptrf_apps/dre/admin.py | 4 +- ...va_relatorio_consolidado_dre_serializer.py | 11 ++- ...vas_relatorios_consolidados_dre_viewset.py | 2 +- .../dre/migrations/0051_auto_20220912_1349.py | 23 ++++++ .../dre/migrations/0052_auto_20220913_0910.py | 19 +++++ ...justificativa_relatorio_consolidado_dre.py | 5 +- ...demo_execucao_fisico_financeira_service.py | 77 +++++++++++++++---- .../services/relatorio_consolidado_service.py | 24 ++++-- sme_ptrf_apps/dre/tasks.py | 15 +++- .../dre/templatetags/retorna_type.py | 13 ++++ ...ativas_relatorios_consolidados_dre_list.py | 1 + ...ao_financeira_relatorio_consolidado_dre.py | 6 ++ .../tabela-sintese-execucao-financeira.html | 38 +++++++-- 13 files changed, 202 insertions(+), 36 deletions(-) create mode 100644 sme_ptrf_apps/dre/migrations/0051_auto_20220912_1349.py create mode 100644 sme_ptrf_apps/dre/migrations/0052_auto_20220913_0910.py create mode 100644 sme_ptrf_apps/dre/templatetags/retorna_type.py diff --git a/sme_ptrf_apps/dre/admin.py b/sme_ptrf_apps/dre/admin.py index 1af832667..cbd8e1e7b 100644 --- a/sme_ptrf_apps/dre/admin.py +++ b/sme_ptrf_apps/dre/admin.py @@ -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') diff --git a/sme_ptrf_apps/dre/api/serializers/justificativa_relatorio_consolidado_dre_serializer.py b/sme_ptrf_apps/dre/api/serializers/justificativa_relatorio_consolidado_dre_serializer.py index 66ee3994a..0433cd59f 100644 --- a/sme_ptrf_apps/dre/api/serializers/justificativa_relatorio_consolidado_dre_serializer.py +++ b/sme_ptrf_apps/dre/api/serializers/justificativa_relatorio_consolidado_dre_serializer.py @@ -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): @@ -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') diff --git a/sme_ptrf_apps/dre/api/views/justificativas_relatorios_consolidados_dre_viewset.py b/sme_ptrf_apps/dre/api/views/justificativas_relatorios_consolidados_dre_viewset.py index 009664886..77d529aed 100644 --- a/sme_ptrf_apps/dre/api/views/justificativas_relatorios_consolidados_dre_viewset.py +++ b/sme_ptrf_apps/dre/api/views/justificativas_relatorios_consolidados_dre_viewset.py @@ -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') diff --git a/sme_ptrf_apps/dre/migrations/0051_auto_20220912_1349.py b/sme_ptrf_apps/dre/migrations/0051_auto_20220912_1349.py new file mode 100644 index 000000000..2515d627b --- /dev/null +++ b/sme_ptrf_apps/dre/migrations/0051_auto_20220912_1349.py @@ -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(), + ), + ] diff --git a/sme_ptrf_apps/dre/migrations/0052_auto_20220913_0910.py b/sme_ptrf_apps/dre/migrations/0052_auto_20220913_0910.py new file mode 100644 index 000000000..b0b20ebdd --- /dev/null +++ b/sme_ptrf_apps/dre/migrations/0052_auto_20220913_0910.py @@ -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'), + ), + ] diff --git a/sme_ptrf_apps/dre/models/justificativa_relatorio_consolidado_dre.py b/sme_ptrf_apps/dre/models/justificativa_relatorio_consolidado_dre.py index 0db7520d5..66d12613a 100644 --- a/sme_ptrf_apps/dre/models/justificativa_relatorio_consolidado_dre.py +++ b/sme_ptrf_apps/dre/models/justificativa_relatorio_consolidado_dre.py @@ -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 diff --git a/sme_ptrf_apps/dre/services/dados_demo_execucao_fisico_financeira_service.py b/sme_ptrf_apps/dre/services/dados_demo_execucao_fisico_financeira_service.py index 6e900176b..8f1910c91 100644 --- a/sme_ptrf_apps/dre/services/dados_demo_execucao_fisico_financeira_service.py +++ b/sme_ptrf_apps/dre/services/dados_demo_execucao_fisico_financeira_service.py @@ -14,7 +14,7 @@ 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...") @@ -22,7 +22,7 @@ def gerar_dados_demo_execucao_fisico_financeira(dre, periodo, usuario, parcial, 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) @@ -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 @@ -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) @@ -779,4 +824,4 @@ def converte_string_value_formatada_para_float(string): result += int(num.replace('.', '')) result += (int(dec) / 100) - return result \ No newline at end of file + return result diff --git a/sme_ptrf_apps/dre/services/relatorio_consolidado_service.py b/sme_ptrf_apps/dre/services/relatorio_consolidado_service.py index d0e8ad30f..d726e2c6f 100644 --- a/sme_ptrf_apps/dre/services/relatorio_consolidado_service.py +++ b/sme_ptrf_apps/dre/services/relatorio_consolidado_service.py @@ -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, }) @@ -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 diff --git a/sme_ptrf_apps/dre/tasks.py b/sme_ptrf_apps/dre/tasks.py index 7eddd6ba9..35636cc76 100644 --- a/sme_ptrf_apps/dre/tasks.py +++ b/sme_ptrf_apps/dre/tasks.py @@ -15,7 +15,7 @@ AnoAnaliseRegularidade, AnaliseRegularidadeAssociacao, ItemVerificacaoRegularidade, - VerificacaoRegularidadeAssociacao, ConsolidadoDRE, Lauda + VerificacaoRegularidadeAssociacao, ConsolidadoDRE, Lauda, JustificativaRelatorioConsolidadoDRE ) from django.core.exceptions import ValidationError @@ -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, diff --git a/sme_ptrf_apps/dre/templatetags/retorna_type.py b/sme_ptrf_apps/dre/templatetags/retorna_type.py new file mode 100644 index 000000000..59158696d --- /dev/null +++ b/sme_ptrf_apps/dre/templatetags/retorna_type.py @@ -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__ diff --git a/sme_ptrf_apps/dre/tests/tests_api_justificativas_relatorios_consolidados_dre/test_justificativas_relatorios_consolidados_dre_list.py b/sme_ptrf_apps/dre/tests/tests_api_justificativas_relatorios_consolidados_dre/test_justificativas_relatorios_consolidados_dre_list.py index f1bce9966..bcc822823 100644 --- a/sme_ptrf_apps/dre/tests/tests_api_justificativas_relatorios_consolidados_dre/test_justificativas_relatorios_consolidados_dre_list.py +++ b/sme_ptrf_apps/dre/tests/tests_api_justificativas_relatorios_consolidados_dre/test_justificativas_relatorios_consolidados_dre_list.py @@ -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}', diff --git a/sme_ptrf_apps/dre/tests/tests_api_relatorios_consolidados_dre/test_get_info_execucao_financeira_relatorio_consolidado_dre.py b/sme_ptrf_apps/dre/tests/tests_api_relatorios_consolidados_dre/test_get_info_execucao_financeira_relatorio_consolidado_dre.py index 9c823a65d..2f426a7cf 100644 --- a/sme_ptrf_apps/dre/tests/tests_api_relatorios_consolidados_dre/test_get_info_execucao_financeira_relatorio_consolidado_dre.py +++ b/sme_ptrf_apps/dre/tests/tests_api_relatorios_consolidados_dre/test_get_info_execucao_financeira_relatorio_consolidado_dre.py @@ -313,6 +313,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', @@ -357,6 +358,7 @@ def test_api_get_info_execucao_financeira_relatorio_consolidado_dre_parcial( } }, { + 'consolidado_dre': None, 'justificativa_texto': '', 'justificativa_uuid': None, 'tipo_conta': 'Cheque', @@ -440,6 +442,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', @@ -485,6 +488,7 @@ def test_api_get_info_execucao_financeira_relatorio_consolidado_dre_final( } }, { + 'consolidado_dre': None, 'justificativa_texto': '', 'justificativa_uuid': None, 'tipo_conta': 'Cheque', @@ -566,6 +570,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', @@ -608,6 +613,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', diff --git a/sme_ptrf_apps/templates/pdf/demonstrativo_execucao_fisico_financeiro/partials/tabela-sintese-execucao-financeira.html b/sme_ptrf_apps/templates/pdf/demonstrativo_execucao_fisico_financeiro/partials/tabela-sintese-execucao-financeira.html index 10174a102..f7b00ffff 100644 --- a/sme_ptrf_apps/templates/pdf/demonstrativo_execucao_fisico_financeiro/partials/tabela-sintese-execucao-financeira.html +++ b/sme_ptrf_apps/templates/pdf/demonstrativo_execucao_fisico_financeiro/partials/tabela-sintese-execucao-financeira.html @@ -1,4 +1,5 @@ {% load staticfiles %} +{% load retorna_type %} {% for valor in dados.execucao_financeira.por_tipo_de_conta %} {% comment %} @@ -149,14 +150,37 @@ {{ valor.totais.saldo_reprogramado_proximo_periodo_total }} - {% if valor.justificativa %} - - Justificativa da diferença entre o valor previsto pela SME e o transferido pela DRE no período - - - {{ valor.justificativa }} - + + {# retorna_type - Template filter que retorna o type de valor.justificativa, retornará lista quando for o Relatorio do demonstrativo de publicações parciais#} + {% if valor.justificativa|retorna_type == 'list' %} + + {% if valor.justificativa|length > 0 %} + + Justificativa da diferença entre o valor previsto pela SME e o transferido pela DRE no período + + {% endif %} + + {% for justificativa in valor.justificativa %} + {% if justificativa %} + + {{ justificativa.justificativa }} + + {% endif %} + {% endfor %} + + {% else %} + + {% if valor.justificativa %} + + Justificativa da diferença entre o valor previsto pela SME e o transferido pela DRE no período + + + {{ valor.justificativa }} + + {% endif %} + {% endif %} + From 06b9c68f1dbfb7bbe6ca4fa7885025f1b7cc090e Mon Sep 17 00:00:00 2001 From: Alessandro Fernandes Date: Thu, 15 Sep 2022 07:04:25 -0300 Subject: [PATCH 3/3] docs(1.33.3): Hotfix --- hotfixes.md | 4 ++++ sme_ptrf_apps/__init__.py | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/hotfixes.md b/hotfixes.md index 15ae7bfba..27d53863b 100644 --- a/hotfixes.md +++ b/hotfixes.md @@ -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 diff --git a/sme_ptrf_apps/__init__.py b/sme_ptrf_apps/__init__.py index d95576632..ab3a9f90a 100644 --- a/sme_ptrf_apps/__init__.py +++ b/sme_ptrf_apps/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.33.2" +__version__ = "1.33.3" __version_info__ = tuple(