Skip to content

Commit

Permalink
Merge pull request #2783 from prefeiturasp/release/9.1.0_b
Browse files Browse the repository at this point in the history
Release/9.1.0.b
  • Loading branch information
rayanemsantos authored Mar 21, 2024
2 parents 1a670cd + ab7fb98 commit 7ca8a39
Show file tree
Hide file tree
Showing 22 changed files with 317 additions and 264 deletions.
98 changes: 45 additions & 53 deletions sme_ptrf_apps/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,62 +21,54 @@
import datetime

from pytest_factoryboy import register
from sme_ptrf_apps.core.fixtures.factories.unidade_factory import DreFactory, UnidadeFactory
from sme_ptrf_apps.core.fixtures.factories.associacao_factory import AssociacaoFactory
from sme_ptrf_apps.core.fixtures.factories.conta_associacao_factory import ContaAssociacaoFactory
from sme_ptrf_apps.core.fixtures.factories.periodo_factory import PeriodoFactory
from sme_ptrf_apps.core.fixtures.factories.tipo_conta_factory import TipoContaFactory
from sme_ptrf_apps.core.fixtures.factories.observacao_conciliacao_factory import ObservacaoConciliacaoFactory
from sme_ptrf_apps.core.fixtures.factories.prestacao_conta_factory import PrestacaoContaFactory
from sme_ptrf_apps.users.fixtures.factories.usuario_factory import UsuarioFactory
from sme_ptrf_apps.users.fixtures.factories.unidade_em_suporte_factory import UnidadeEmSuporteFactory
from sme_ptrf_apps.users.fixtures.factories.grupo_acesso_factory import GrupoAcessoFactory
from sme_ptrf_apps.users.fixtures.factories.visao_factory import VisaoFactory
from sme_ptrf_apps.core.fixtures.factories.acao_factory import AcaoFactory
from sme_ptrf_apps.core.fixtures.factories.arquivo_factory import ArquivoFactory
from sme_ptrf_apps.core.fixtures.factories.solicitacao_encerramento_conta_associacao_factory import SolicitacaoEncerramentoContaAssociacaoFactory
from sme_ptrf_apps.core.fixtures.factories.acao_associacao_factory import AcaoAssociacaoFactory
from sme_ptrf_apps.core.fixtures.factories.fechamento_periodo_factory import FechamentoPeriodoFactory
from sme_ptrf_apps.despesas.fixtures.factories.despesa_factory import DespesaFactory
from sme_ptrf_apps.despesas.fixtures.factories.rateio_despesa_factory import RateioDespesaFactory
from sme_ptrf_apps.core.fixtures.factories.membro_associacao_factory import MembroAssociacaoFactory
from sme_ptrf_apps.users.fixtures.factories.acesso_concedido_sme_factory import AcessoConcedidoSmeFactory
from sme_ptrf_apps.mandatos.fixtures.factories.mandato_factory import MandatoFactory
from sme_ptrf_apps.mandatos.fixtures.factories.composicao_factory import ComposicaoFactory
from sme_ptrf_apps.core.fixtures.factories.prestacao_conta_reprovada_nao_apresentacao_factory import PrestacaoContaReprovadaNaoApresentacaoFactory
from sme_ptrf_apps.core.fixtures.factories.tipo_acerto_lancamento_factory import TipoAcertoLancamentoFactory
from sme_ptrf_apps.core.fixtures.factories.analise_prestacao_conta_factory import AnalisePrestacaoContaFactory
from sme_ptrf_apps.core.fixtures.factories.analise_lancamento_prestacao_conta_factory import AnaliseLancamentoPrestacaoContaFactory

from sme_ptrf_apps.fixtures import *

register(DreFactory)
register(UnidadeFactory)
register(AssociacaoFactory)
register(ContaAssociacaoFactory)
register(PeriodoFactory)
register(TipoContaFactory)
register(ObservacaoConciliacaoFactory)
register(PrestacaoContaFactory)
register(UsuarioFactory)
register(UnidadeEmSuporteFactory)
register(GrupoAcessoFactory)
register(VisaoFactory)
register(SolicitacaoEncerramentoContaAssociacaoFactory)
register(ArquivoFactory)
register(AcaoFactory)
register(AcaoAssociacaoFactory)
register(FechamentoPeriodoFactory)
register(DespesaFactory)
register(RateioDespesaFactory)
register(MembroAssociacaoFactory)
register(AcessoConcedidoSmeFactory)
register(MandatoFactory)
register(ComposicaoFactory)
register(PrestacaoContaReprovadaNaoApresentacaoFactory)
register(TipoAcertoLancamentoFactory)
register(AnalisePrestacaoContaFactory)
register(AnaliseLancamentoPrestacaoContaFactory)
from sme_ptrf_apps.core.fixtures.factories import (
DreFactory, UnidadeFactory, AssociacaoFactory, ContaAssociacaoFactory,
PeriodoFactory, TipoContaFactory, ObservacaoConciliacaoFactory,
PrestacaoContaFactory, ArquivoFactory, AcaoFactory, AcaoAssociacaoFactory,
FechamentoPeriodoFactory, MembroAssociacaoFactory, RelacaoBensFactory,
RelatorioRelacaoBensFactory, ItemRelatorioRelacaoDeBensFactory,
SolicitacaoEncerramentoContaAssociacaoFactory, TipoAcertoLancamentoFactory,
AnalisePrestacaoContaFactory, AnaliseLancamentoPrestacaoContaFactory,
SolicitacaoAcertoLancamentoFactory, ProcessoAssociacaoFactory,
PrestacaoContaReprovadaNaoApresentacaoFactory, DemonstrativoFinanceiroFactory,
ItemResumoPorAcaoFactory, ItemDespesaFactory, ItemCreditoFactory,
)
from sme_ptrf_apps.users.fixtures.factories import (
UsuarioFactory, UnidadeEmSuporteFactory, GrupoAcessoFactory, VisaoFactory,
AcessoConcedidoSmeFactory
)
from sme_ptrf_apps.mandatos.fixtures.factories import (
MandatoFactory, ComposicaoFactory, OcupanteCargoFactory, CargoComposicaoFactory
)
from sme_ptrf_apps.despesas.fixtures.factories import (
DespesaFactory, RateioDespesaFactory, TipoTransacaoFactory
)
from sme_ptrf_apps.receitas.fixtures.factories import (
TipoReceitaFactory
)

factories_to_register = [
DreFactory, UnidadeFactory, AssociacaoFactory, ContaAssociacaoFactory,
PeriodoFactory, TipoContaFactory, ObservacaoConciliacaoFactory,
PrestacaoContaFactory, UsuarioFactory, UnidadeEmSuporteFactory,
GrupoAcessoFactory, VisaoFactory, ArquivoFactory, AcaoFactory,
AcaoAssociacaoFactory, FechamentoPeriodoFactory, DespesaFactory,
RateioDespesaFactory, MembroAssociacaoFactory, AcessoConcedidoSmeFactory,
MandatoFactory, ComposicaoFactory, PrestacaoContaReprovadaNaoApresentacaoFactory,
TipoAcertoLancamentoFactory, AnalisePrestacaoContaFactory,
AnaliseLancamentoPrestacaoContaFactory, SolicitacaoAcertoLancamentoFactory,
TipoTransacaoFactory, ProcessoAssociacaoFactory, OcupanteCargoFactory,
CargoComposicaoFactory, DemonstrativoFinanceiroFactory, ItemResumoPorAcaoFactory,
ItemDespesaFactory, ItemCreditoFactory, TipoReceitaFactory, RelacaoBensFactory,
RelatorioRelacaoBensFactory, ItemRelatorioRelacaoDeBensFactory,
SolicitacaoEncerramentoContaAssociacaoFactory
]

for factory in factories_to_register:
register(factory)


@pytest.fixture
Expand Down
27 changes: 16 additions & 11 deletions sme_ptrf_apps/core/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,15 +80,15 @@ def get_codigo_eol(self, obj):
return obj.conta_associacao.associacao.unidade.codigo_eol if obj and obj.conta_associacao and obj.conta_associacao.associacao and obj.conta_associacao.associacao.unidade else ''

get_codigo_eol.short_description = 'EOL'

raw_id_fields = ('conta_associacao',)
list_filter = (
('data_de_encerramento_na_agencia', DateRangeFilter),
('conta_associacao__associacao__unidade__dre'),
)
list_display = ('__str__', 'get_codigo_eol')
search_fields = ('uuid', 'conta_associacao__uuid', 'conta_associacao__associacao__unidade__codigo_eol',
'conta_associacao__associacao__unidade__nome', 'conta_associacao__associacao__nome',
'conta_associacao__associacao__unidade__nome', 'conta_associacao__associacao__nome',
'conta_associacao__associacao__unidade__dre__codigo_eol')


Expand Down Expand Up @@ -460,7 +460,7 @@ def get_referencia_periodo(self, obj):
return obj.periodo.referencia if obj and obj.periodo else ''

get_referencia_periodo.short_description = 'Período'

raw_id_fields = ('prestacao_conta', 'associacao', 'composicao', 'presidente_da_reuniao', 'secretario_da_reuniao')

list_display = (
Expand All @@ -481,7 +481,8 @@ def get_referencia_periodo(self, obj):
)
list_display_links = ('get_eol_unidade',)
readonly_fields = ('uuid', 'id', 'criado_em', 'alterado_em')
search_fields = ('associacao__unidade__codigo_eol', 'associacao__unidade__nome', 'associacao__unidade__dre__codigo_eol')
search_fields = ('associacao__unidade__codigo_eol', 'associacao__unidade__nome',
'associacao__unidade__dre__codigo_eol')


@admin.register(Arquivo)
Expand Down Expand Up @@ -608,10 +609,10 @@ def get_associacao(self, obj):
return obj.prestacao_conta.associacao.nome if obj and obj.prestacao_conta and obj.prestacao_conta.associacao else ''

get_associacao.short_description = 'Associação'

def get_unidade_codigo_eol(self, obj):
return obj.prestacao_conta.associacao.unidade.codigo_eol if obj and obj.prestacao_conta and obj.prestacao_conta.associacao and obj.prestacao_conta.associacao.unidade else ''

get_unidade_codigo_eol.short_description = 'EOL'

def get_referencia_periodo(self, obj):
Expand Down Expand Up @@ -661,7 +662,7 @@ class TipoDevolucaoTesouroAdmin(admin.ModelAdmin):

class DreListFilter(admin.SimpleListFilter):
from django.utils.translation import gettext_lazy

title = gettext_lazy('DRE')
parameter_name = 'dre'

Expand All @@ -680,13 +681,14 @@ def lookups(self, request, model_admin):

def queryset(self, request, queryset):
from django.db import models

if self.value():
return queryset.filter(
models.Q(prestacao_conta__associacao__unidade__dre__codigo_eol=self.value()) |
models.Q(associacao__unidade__dre__codigo_eol=self.value())
)


@admin.register(ComentarioAnalisePrestacao)
class ComentarioAnalisePrestacaoAdmin(admin.ModelAdmin):
def get_associacao(self, obj):
Expand Down Expand Up @@ -716,7 +718,7 @@ def get_codigo_eol_unidade(self, obj):
return obj.associacao.unidade.codigo_eol
else:
return ''

get_codigo_eol_unidade.short_description = 'EOL'

list_display = (
Expand All @@ -735,8 +737,9 @@ def get_codigo_eol(self, obj):
return obj.associacao.unidade.codigo_eol if obj and obj.associacao and obj.associacao.unidade else ''

get_codigo_eol.short_description = 'EOL'

list_display = ('get_codigo_eol','associacao', 'conta_associacao', 'periodo', 'valor_capital', 'valor_custeio', 'valor_livre')

list_display = ('get_codigo_eol', 'associacao', 'conta_associacao',
'periodo', 'valor_capital', 'valor_custeio', 'valor_livre')
list_filter = ('associacao', 'periodo', 'conta_associacao__tipo_conta', 'associacao__unidade__dre')
list_display_links = ('associacao',)
readonly_fields = ('uuid', 'id')
Expand Down Expand Up @@ -1022,6 +1025,7 @@ class RelatorioRelacaoBensAdmin(admin.ModelAdmin):
'relacao_bens__periodo_previa'
)


@admin.register(MembroAssociacao)
class MembroAssociacaoAdmin(admin.ModelAdmin):
list_display = ('nome', 'cargo_associacao', 'associacao')
Expand Down Expand Up @@ -1119,6 +1123,7 @@ def get_analise_pc(self, obj):
'analise_prestacao_conta__prestacao_conta__associacao__unidade__codigo_eol',
'analise_prestacao_conta__prestacao_conta__associacao__unidade__nome',
'analise_prestacao_conta__prestacao_conta__associacao__nome',
'analise_prestacao_conta__uuid'
)

readonly_fields = ('uuid', 'id', 'criado_em', 'alterado_em')
Expand Down
11 changes: 11 additions & 0 deletions sme_ptrf_apps/core/fixtures/factories/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
from .unidade_factory import *
from .processo_associacao_factory import *
from .periodo_factory import *
from .conta_associacao_factory import *
Expand All @@ -8,3 +9,13 @@
from .tipo_acerto_lancamento_factory import *
from .analise_prestacao_conta_factory import *
from .analise_lancamento_prestacao_conta_factory import *
from .observacao_conciliacao_factory import *
from .arquivo_factory import *
from .fechamento_periodo_factory import *
from .membro_associacao_factory import *
from .relacao_bens_factory import *
from .solicitacao_encerramento_conta_associacao_factory import *
from .solicitacao_acerto_lancamento_factory import *
from .prestacao_conta_reprovada_nao_apresentacao_factory import *
from .demonstrativo_financeiro_factory import *
from .tipo_conta_factory import *
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from factory import DjangoModelFactory, SubFactory
from faker import Faker
from sme_ptrf_apps.core.fixtures.factories.associacao_factory import AssociacaoFactory
from sme_ptrf_apps.core.models.prestacao_conta import PrestacaoConta
from .periodo_factory import PeriodoFactory
fake = Faker("pt_BR")
Expand All @@ -9,3 +10,4 @@ class Meta:
model = PrestacaoConta

periodo = SubFactory(PeriodoFactory)
associacao = SubFactory(AssociacaoFactory)
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import factory

from sme_ptrf_apps.core.models.solicitacao_acerto_lancamento import SolicitacaoAcertoLancamento
from .analise_lancamento_prestacao_conta_factory import AnaliseLancamentoPrestacaoContaFactory
from .tipo_acerto_lancamento_factory import TipoAcertoLancamentoFactory

class SolicitacaoAcertoLancamentoFactory(factory.django.DjangoModelFactory):

class Meta:
model = SolicitacaoAcertoLancamento

analise_lancamento = factory.SubFactory(AnaliseLancamentoPrestacaoContaFactory)
tipo_acerto = factory.SubFactory(TipoAcertoLancamentoFactory)
2 changes: 1 addition & 1 deletion sme_ptrf_apps/core/models/prestacao_conta.py
Original file line number Diff line number Diff line change
Expand Up @@ -467,7 +467,7 @@ def get_contas_com_movimento_em_periodos_anteriores(self):
conta_associacao=conta,
periodo=self.periodo,
incluir_inativas=True,
conferido=False
nao_conciliadas_ou_conciliadas_no_periodo=True
)

if tem_gastos_periodos_anteriores:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
from rest_framework import status

from sme_ptrf_apps.core.models import AcaoAssociacao
from sme_ptrf_apps.core.fixtures.factories import AcaoFactory, AcaoAssociacaoFactory, AssociacaoFactory

pytestmark = pytest.mark.django_db

Expand Down Expand Up @@ -125,10 +124,10 @@ def test_create_acao_associacao_em_lote_uuid_associacao_invalido(
assert AcaoAssociacao.objects.exists()


def test_validacao_create_acao_associacao(jwt_authenticated_client_a):
associacao = AssociacaoFactory()
acao = AcaoFactory()
acao_associacao_existente = AcaoAssociacaoFactory(associacao=associacao, acao=acao)
def test_validacao_create_acao_associacao(jwt_authenticated_client_a, acao_associacao_factory, acao_factory, associacao_factory):
associacao = associacao_factory.create()
acao = acao_factory.create()
acao_associacao_existente = acao_associacao_factory.create(associacao=associacao, acao=acao)

payload = {
'acao': f"{acao.uuid}",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
from rest_framework import status

from sme_ptrf_apps.core.models import AcaoAssociacao
from sme_ptrf_apps.core.fixtures.factories import AcaoFactory, AcaoAssociacaoFactory, AssociacaoFactory

pytestmark = pytest.mark.django_db

Expand Down Expand Up @@ -42,12 +41,12 @@ def test_update_acao_associacao(
assert acao_associacao.status == AcaoAssociacao.STATUS_INATIVA, "Deve atualizar o status."


def test_validacao_update_acao_associacao(jwt_authenticated_client_a):
associacao = AssociacaoFactory()
acao = AcaoFactory()
outra_acao = AcaoFactory()
def test_validacao_update_acao_associacao(jwt_authenticated_client_a, associacao_factory, acao_factory, acao_associacao_factory):
associacao = associacao_factory.create()
acao = acao_factory.create()
outra_acao = acao_factory.create()

acao_associacao_existente = AcaoAssociacaoFactory(associacao=associacao, acao=acao)
acao_associacao_existente = acao_associacao_factory.create(associacao=associacao, acao=acao)

payload = {
'acao': f"{outra_acao.uuid}",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import pytest
from datetime import date
from uuid import UUID
from waffle.testutils import override_flag

from sme_ptrf_apps.core.services.dados_relatorio_acertos_service import gerar_dados_relatorio_acertos

pytestmark = pytest.mark.django_db

@override_flag('ajustes-despesas-anteriores', active=True)
def test_dados_relatorios_acertos_despesas_periodos_anteriores(solicitacao_acerto_lancamento_factory, tipo_acerto_lancamento_factory, analise_lancamento_prestacao_conta_factory, despesa_factory, periodo_factory, associacao_factory, prestacao_conta_factory, analise_prestacao_conta_factory, rateio_despesa_factory, conta_associacao_factory, acao_associacao_factory, tipo_transacao_factory):

periodo_inicial = periodo_factory.create(referencia="2023.1", data_inicio_realizacao_despesas=date(2023,1,1), data_fim_realizacao_despesas=date(2023,4,20))
periodo = periodo_factory.create(referencia="2023.2", data_inicio_realizacao_despesas=date(2023,4,21), data_fim_realizacao_despesas=date(2023,6,20))
periodo_pc = periodo_factory.create(referencia="2023.3", data_inicio_realizacao_despesas=date(2023,6,21), data_fim_realizacao_despesas=date(2023,12,20))

associacao = associacao_factory.create(periodo_inicial=periodo_inicial)

tipo_transacao = tipo_transacao_factory.create(nome="Cartão")

despesa = despesa_factory.create(tipo_transacao=tipo_transacao, associacao=associacao, data_transacao=date(2023,5,20), data_documento=date(2023,5,20), eh_despesa_reconhecida_pela_associacao=True, status="COMPLETO", valor_total=30, eh_despesa_sem_comprovacao_fiscal=True)

conta = conta_associacao_factory.create(associacao=associacao)

acao_associacao = acao_associacao_factory.create(associacao=associacao)

rateio = rateio_despesa_factory.create(despesa=despesa, associacao=associacao, conta_associacao=conta, acao_associacao=acao_associacao, status="COMPLETO", valor_rateio=30, valor_original=30, eh_despesa_sem_comprovacao_fiscal=True, periodo_conciliacao=periodo_pc, conferido=True, aplicacao_recurso="CUSTEIO")

prestacao_conta = prestacao_conta_factory.create(periodo=periodo_pc, associacao=associacao, status="EM_ANALISE")

analise_prestacao_conta = analise_prestacao_conta_factory(prestacao_conta=prestacao_conta)

analise_lancamento_prestacao_conta = analise_lancamento_prestacao_conta_factory.create(analise_prestacao_conta=analise_prestacao_conta, despesa=despesa)

tipo_acerto_lancamento = tipo_acerto_lancamento_factory.create(categoria="CONCILIACAO_LANCAMENTO")

solicitaco_acerto = solicitacao_acerto_lancamento_factory.create(analise_lancamento=analise_lancamento_prestacao_conta, tipo_acerto=tipo_acerto_lancamento)

dados = gerar_dados_relatorio_acertos(analise_prestacao_conta=analise_prestacao_conta, previa=False)

solicitacoes_de_ajuste = dados['dados_despesas_periodos_anteriores'][0]['lancamentos'][0]['analise_lancamento']['solicitacoes_de_ajuste_da_analise']
solicitacoes_de_ajuste_por_categoria = solicitacoes_de_ajuste['solicitacoes_acerto_por_categoria'][0]
tipo_acerto = solicitacoes_de_ajuste_por_categoria['acertos'][0]['tipo_acerto']

assert UUID(solicitacoes_de_ajuste['analise_lancamento']) == analise_lancamento_prestacao_conta.uuid
assert tipo_acerto['nome'] == tipo_acerto_lancamento.nome
assert tipo_acerto['categoria'] == "CONCILIACAO_LANCAMENTO"
assert UUID(solicitacoes_de_ajuste_por_categoria['despesa']) == despesa.uuid
assert solicitacoes_de_ajuste_por_categoria['categoria'] == "CONCILIACAO_LANCAMENTO"
assert solicitacoes_de_ajuste_por_categoria['acertos'][0]['detalhamento'] == solicitaco_acerto.detalhamento


Loading

0 comments on commit 7ca8a39

Please sign in to comment.