Skip to content

Commit

Permalink
Merge pull request #2936 from prefeiturasp/release/9.5.0
Browse files Browse the repository at this point in the history
Release/9.5.0
  • Loading branch information
Lucas-Santos-Rocha-dev authored May 20, 2024
2 parents 9c21c15 + 61eebaf commit 909e7d0
Show file tree
Hide file tree
Showing 35 changed files with 682 additions and 38 deletions.
6 changes: 3 additions & 3 deletions requirements/base.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ django-ckeditor==6.7.0
django-compressor==4.4
django-cors-headers==4.3.1
django-crispy-forms==2.1
django-environ==0.4.5
django-filter==2.4.0
django-environ==0.11.2
django-filter==21.1
django-mathfilters==1.0.0
django-model-utils==4.0.0
django-model-utils==4.5.1
django-waffle==4.0.0 # Solução para features flags

# Django DES - EmailBackend that allows email configuration to be changed while the server is running.
Expand Down
4 changes: 2 additions & 2 deletions requirements/local.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@ Werkzeug==3.0.1
django-coverage-plugin==1.8.0
django-debug-toolbar==4.2.0
django-extensions==3.2.3
ipdb==0.13.1
ipdb==0.13.13

# Testes Unitários
# ------------------------------------------------------------------------------
factory-boy==2.12.0
pytest-factoryboy==2.5.1
freezegun==0.3.12
freezegun==1.5.0
model-bakery==1.1.0
pytest-django==4.5.2
pytest-sugar==0.9.7
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__ = "9.4.0"
__version__ = "9.5.0"

__version_info__ = tuple(
[
Expand Down
1 change: 1 addition & 0 deletions sme_ptrf_apps/core/api/serializers/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,3 +61,4 @@
from .solicitacao_encerramento_conta_associacao_serializer import SolicitacaoEncerramentoContaAssociacaoSerializer
from .motivo_rejeicao_encerramento_conta_associacao_serializer import MotivoRejeicaoEncerramentoContaAssociacaoSerializer
from .prestacao_conta_reprovada_nao_apresentacao_serializer import PrestacaoContaReprovadaNaoApresentacaoSerializer
from .acao_serializer import AcaoSerializer
9 changes: 7 additions & 2 deletions sme_ptrf_apps/core/api/serializers/arquivo_serializer.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
from rest_framework import serializers

from sme_ptrf_apps.core.models import Arquivo
from sme_ptrf_apps.core.models.periodo import Periodo


class ArquivoSerializer(serializers.ModelSerializer):

periodo = serializers.SlugRelatedField(
slug_field='uuid',
required=False,
queryset=Periodo.objects.all()
)
class Meta:
model = Arquivo
fields = '__all__'
fields = '__all__'
4 changes: 2 additions & 2 deletions sme_ptrf_apps/core/api/serializers/unidade_serializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class UnidadeLookUpSerializer(serializers.ModelSerializer):

class Meta:
model = Unidade
fields = ('uuid', 'codigo_eol', 'tipo_unidade', 'nome', 'sigla', 'dre')
fields = ('uuid', 'codigo_eol', 'tipo_unidade', 'nome', 'nome_com_tipo', 'sigla', 'dre')


class UnidadeSerializer(serializers.ModelSerializer):
Expand Down Expand Up @@ -79,7 +79,7 @@ def get_visao(self, obj):

def get_data_de_encerramento_associacao(self, obj):
return obj.associacoes.first().data_de_encerramento if obj.associacoes.exists() else None

def get_tags_da_associacao(self, obj):
return obj.associacoes.first().tags_de_informacao if obj.associacoes.exists() else []

Expand Down
6 changes: 5 additions & 1 deletion sme_ptrf_apps/core/api/views/relacao_bens_viewset.py
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,11 @@ def relacao_bens_info(self, request):
msg = ""
if not relacao_bens:
rateios = RateioDespesa.rateios_da_conta_associacao_no_periodo(
conta_associacao=conta_associacao, periodo=periodo, aplicacao_recurso=APLICACAO_CAPITAL)
conta_associacao=conta_associacao,
periodo=periodo,
aplicacao_recurso=APLICACAO_CAPITAL,
nao_exibir_em_rel_bens=False,
)
if rateios:
msg = 'Documento pendente de geração'
else:
Expand Down
12 changes: 12 additions & 0 deletions sme_ptrf_apps/core/choices/tipos_carga.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,15 @@
(CARGA_DEVOLUCAO_TESOURO, CARGA_NOMES[CARGA_DEVOLUCAO_TESOURO]),
(CARGA_MATERIAIS_SERVICOS, CARGA_NOMES[CARGA_MATERIAIS_SERVICOS])
)

CARGA_REQUER_PERIODO = {
CARGA_REPASSE_REALIZADO: False,
CARGA_PERIODO_INICIAL: False,
CARGA_REPASSE_PREVISTO: True,
CARGA_ASSOCIACOES: False,
CARGA_USUARIOS: False,
CARGA_CENSO: False,
CARGA_REPASSE_PREVISTO_SME: False,
CARGA_DEVOLUCAO_TESOURO: False,
CARGA_MATERIAIS_SERVICOS: False
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Generated by Django 4.2.7 on 2024-05-15 08:09

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


class Migration(migrations.Migration):
dependencies = [
("core", "0389_migrar_campo_pdf_gerado_previamente"),
]

operations = [
migrations.AddField(
model_name="arquivo",
name="periodo",
field=models.ForeignKey(
blank=True,
help_text="Período associado ao arquivo (opcional)",
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to="core.periodo",
verbose_name="Período",
),
),
migrations.AddField(
model_name="arquivo",
name="requer_periodo",
field=models.BooleanField(
choices=[(True, "Sim"), (False, "Não")],
default=False,
help_text="Indica se o tipo de carga requer um período",
verbose_name="Requer período",
),
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Generated by Django 4.2.7 on 2024-05-15 10:32

from django.db import migrations


class Migration(migrations.Migration):
dependencies = [
("core", "0390_arquivo_periodo_arquivo_requer_periodo"),
]

operations = [
migrations.RemoveField(
model_name="arquivo",
name="requer_periodo",
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Generated by Django 4.2.7 on 2024-05-15 11:18

from django.db import migrations, models


class Migration(migrations.Migration):
dependencies = [
("core", "0391_remove_arquivo_requer_periodo"),
]

operations = [
migrations.AlterField(
model_name="arquivo",
name="tipo_carga",
field=models.CharField(
choices=[
("CARGA_REPASSE_REALIZADO", "Repasses realizados"),
("CARGA_PERIODO_INICIAL", "Carga período inicial"),
("CARGA_REPASSE_PREVISTO", "Repasses previstos"),
("CARGA_ASSOCIACOES", "Carga de Associações"),
("CARGA_USUARIOS", "Carga de usuários"),
("CARGA_CENSO", "Carga de censo"),
("CARGA_REPASSE_PREVISTO_SME", "Repasses previstos sme"),
("CARGA_DEVOLUCAO_TESOURO", "Devoluções ao Tesouro"),
(
"CARGA_MATERIAIS_SERVICOS",
"Especificações de Materiais e Serviços",
),
],
default="CARGA_REPASSE_REALIZADO",
max_length=35,
verbose_name="tipo de carga",
),
),
migrations.AlterField(
model_name="modelocarga",
name="tipo_carga",
field=models.CharField(
choices=[
("CARGA_REPASSE_REALIZADO", "Repasses realizados"),
("CARGA_PERIODO_INICIAL", "Carga período inicial"),
("CARGA_REPASSE_PREVISTO", "Repasses previstos"),
("CARGA_ASSOCIACOES", "Carga de Associações"),
("CARGA_USUARIOS", "Carga de usuários"),
("CARGA_CENSO", "Carga de censo"),
("CARGA_REPASSE_PREVISTO_SME", "Repasses previstos sme"),
("CARGA_DEVOLUCAO_TESOURO", "Devoluções ao Tesouro"),
(
"CARGA_MATERIAIS_SERVICOS",
"Especificações de Materiais e Serviços",
),
],
default="CARGA_ASSOCIACOES",
max_length=35,
unique=True,
verbose_name="tipo de carga",
),
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Generated by Django 4.2.7 on 2024-05-15 11:28

from django.db import migrations, models


class Migration(migrations.Migration):
dependencies = [
("core", "0392_alter_arquivo_tipo_carga_and_more"),
]

operations = [
migrations.AlterField(
model_name="arquivo",
name="tipo_carga",
field=models.CharField(
choices=[
("REPASSE_REALIZADO", "Repasses realizados"),
("CARGA_PERIODO_INICIAL", "Carga período inicial"),
("REPASSE_PREVISTO", "Repasses previstos"),
("CARGA_ASSOCIACOES", "Carga de Associações"),
("CARGA_USUARIOS", "Carga de usuários"),
("CARGA_CENSO", "Carga de censo"),
("CARGA_REPASSE_PREVISTO_SME", "Repasses previstos sme"),
("CARGA_DEVOLUCAO_TESOURO", "Devoluções ao Tesouro"),
(
"CARGA_MATERIAIS_SERVICOS",
"Especificações de Materiais e Serviços",
),
],
default="REPASSE_REALIZADO",
max_length=35,
verbose_name="tipo de carga",
),
),
migrations.AlterField(
model_name="modelocarga",
name="tipo_carga",
field=models.CharField(
choices=[
("REPASSE_REALIZADO", "Repasses realizados"),
("CARGA_PERIODO_INICIAL", "Carga período inicial"),
("REPASSE_PREVISTO", "Repasses previstos"),
("CARGA_ASSOCIACOES", "Carga de Associações"),
("CARGA_USUARIOS", "Carga de usuários"),
("CARGA_CENSO", "Carga de censo"),
("CARGA_REPASSE_PREVISTO_SME", "Repasses previstos sme"),
("CARGA_DEVOLUCAO_TESOURO", "Devoluções ao Tesouro"),
(
"CARGA_MATERIAIS_SERVICOS",
"Especificações de Materiais e Serviços",
),
],
default="CARGA_ASSOCIACOES",
max_length=35,
unique=True,
verbose_name="tipo de carga",
),
),
]
25 changes: 25 additions & 0 deletions sme_ptrf_apps/core/migrations/0394_alter_arquivo_periodo.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Generated by Django 4.2.7 on 2024-05-15 16:28

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


class Migration(migrations.Migration):
dependencies = [
("core", "0393_alter_arquivo_tipo_carga_and_more"),
]

operations = [
migrations.AlterField(
model_name="arquivo",
name="periodo",
field=models.ForeignKey(
blank=True,
help_text="Período associado ao arquivo (opcional dependendo do tipo de carga)",
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to="core.periodo",
verbose_name="Período",
),
),
]
16 changes: 14 additions & 2 deletions sme_ptrf_apps/core/models/arquivo.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from django.db import models

from sme_ptrf_apps.core.models_abstracts import ModeloBase
from sme_ptrf_apps.core.choices.tipos_carga import CARGA_CHOICES, CARGA_REPASSE_REALIZADO
from sme_ptrf_apps.core.choices.tipos_carga import CARGA_CHOICES, CARGA_REPASSE_REALIZADO, CARGA_REQUER_PERIODO

from auditlog.models import AuditlogHistoryField
from auditlog.registry import auditlog
Expand Down Expand Up @@ -70,6 +70,14 @@ class Arquivo(ModeloBase):
)
log = models.TextField(blank=True, null=True)
ultima_execucao = models.DateTimeField("Ultima execução", blank=True, null=True)
periodo = models.ForeignKey(
'Periodo',
on_delete=models.SET_NULL,
blank=True,
null=True,
verbose_name='Período',
help_text='Período associado ao arquivo (opcional dependendo do tipo de carga)'
)

class Meta:
verbose_name = "arquivo de carga"
Expand All @@ -81,6 +89,9 @@ def __str__(self):
def inicia_processamento(self):
self.status = PROCESSANDO
self.save()

def requer_periodo(self):
return CARGA_REQUER_PERIODO.get(self.tipo_carga, False)

@classmethod
def status_to_json(cls):
Expand All @@ -94,7 +105,8 @@ def status_to_json(cls):
def tipos_cargas_to_json(cls):
return [{
'id': choice[0],
'nome': choice[1]
'nome': choice[1],
'requer_periodo': CARGA_REQUER_PERIODO.get(choice[0], False),
}
for choice in CARGA_CHOICES]

Expand Down
11 changes: 7 additions & 4 deletions sme_ptrf_apps/core/services/dados_demo_financeiro_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -764,11 +764,14 @@ def cria_despesas(rateios):
"uuid_rateio": f"{rateio.uuid}"
}

if rateio.despesa.despesas_impostos.exists():
# Filtrando por impostos com o Status de Completo
impostos_completos = rateio.despesa.despesas_impostos.filter(status="COMPLETO")

if impostos_completos.exists():
# Despesas que possuem despesa imposto são despesas geradoras
logging.info(f'Obtendo lista de impostos da despesa {rateio.despesa.uuid}')
linha["despesas_impostos"] = []
for despesa_imposto in rateio.despesa.despesas_impostos.all():
for despesa_imposto in impostos_completos.all():

rateio_imposto = despesa_imposto.rateios.first()

Expand All @@ -780,8 +783,8 @@ def cria_despesas(rateios):
data_transacao = ""
info_pagamento = "pagamento ainda não realizado"

tipo_transacao_imposto = despesa_imposto.tipo_transacao.nome
if "CHEQUE" in tipo_transacao_imposto.upper():
tipo_transacao_imposto = despesa_imposto.tipo_transacao.nome if despesa_imposto.tipo_transacao and despesa_imposto.tipo_transacao.nome else ''
if tipo_transacao_imposto and "CHEQUE" in tipo_transacao_imposto.upper():
tipo_transacao_imposto = f"Ch-{despesa_imposto.documento_transacao}"

data_documento_imposto = despesa_imposto.data_documento.strftime("%d/%m/%Y") if despesa_imposto.data_documento else ''
Expand Down
6 changes: 5 additions & 1 deletion sme_ptrf_apps/core/services/relacao_bens.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,11 @@ def _retornar_dados_relatorio_relacao_de_bens(relacao_bens):

def _persistir_arquivo_relacao_de_bens(periodo, conta_associacao, usuario, prestacao=None, previa=False):
rateios = RateioDespesa.rateios_da_conta_associacao_no_periodo(
conta_associacao=conta_associacao, periodo=periodo, aplicacao_recurso=APLICACAO_CAPITAL)
conta_associacao=conta_associacao,
periodo=periodo,
aplicacao_recurso=APLICACAO_CAPITAL,
nao_exibir_em_rel_bens=False,
)

if rateios:
relacao_bens, _ = RelacaoBens.objects.update_or_create(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ def test_retrieve_arquivo(
"tipo_delimitador": "DELIMITADOR_VIRGULA",
"status": "PENDENTE",
"log": None,
"periodo": None,
"ultima_execucao": None
}

Expand Down
Loading

0 comments on commit 909e7d0

Please sign in to comment.