Skip to content

Commit

Permalink
Merge pull request #2113 from prefeiturasp/release/8.3.0
Browse files Browse the repository at this point in the history
Release/8.3.0
  • Loading branch information
alcfernandes authored Jun 19, 2023
2 parents 1046a95 + f686b9a commit 3202f4c
Show file tree
Hide file tree
Showing 26 changed files with 966 additions and 59 deletions.
6 changes: 3 additions & 3 deletions requirements/base.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

# Django
# ------------------------------------------------------------------------------
django==3.0.14
django-auditlog==1.0.0
django==3.1.14
django-auditlog==2.0.0

# Dependências do Django Rest Framework
# ------------------------------------------------------------------------------
Expand Down Expand Up @@ -44,7 +44,7 @@ djangorestframework==3.11.0 # https://github.com/encode/django-rest-framework

# Para filtros no DRF
# https://django-filter.readthedocs.io/en/master/#
django-filter==2.2.0
django-filter==2.4.0

djangorestframework-jwt==1.11.0 # https://getblimp.github.io/django-rest-framework-jwt/

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__ = "8.2.1"
__version__ = "8.3.0"

__version_info__ = tuple(
[
Expand Down
93 changes: 90 additions & 3 deletions sme_ptrf_apps/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -459,6 +459,21 @@ def associacao_com_presidente_ausente(unidade, periodo_anterior):
cargo_substituto_presidente_ausente=MembroEnum.VICE_PRESIDENTE_DIRETORIA_EXECUTIVA.name
)

@pytest.fixture
def associacao_cadastro_incompleto(unidade, periodo_anterior):
return baker.make(
'Associacao',
nome='',
cnpj='52.302.275/0001-84',
unidade=unidade,
periodo_inicial=periodo_anterior,
ccm='0.000.00-0',
email="[email protected]",
processo_regularidade='000000',
status_presidente='AUSENTE',
cargo_substituto_presidente_ausente=MembroEnum.VICE_PRESIDENTE_DIRETORIA_EXECUTIVA.name
)


@pytest.fixture
def outra_associacao(unidade, periodo_anterior):
Expand Down Expand Up @@ -504,6 +519,33 @@ def conta_associacao(associacao, tipo_conta):
numero_cartao='534653264523'
)

@pytest.fixture
def conta_associacao_tipo_cheque(associacao, tipo_conta_cheque):
return baker.make(
'ContaAssociacao',
associacao=associacao,
tipo_conta=tipo_conta_cheque,
banco_nome='Banco do Brasil',
agencia='12345',
numero_conta='123456-x',
numero_cartao='534653264523'
)

@pytest.fixture
def conta_associacao_incompleta(associacao_cadastro_incompleto, tipo_conta_cartao):
return baker.make(
'ContaAssociacao',
associacao=associacao_cadastro_incompleto,
tipo_conta=tipo_conta_cartao,
)

@pytest.fixture
def conta_associacao_incompleta_002(associacao, tipo_conta_cartao):
return baker.make(
'ContaAssociacao',
associacao=associacao,
tipo_conta=tipo_conta_cartao,
)

@pytest.fixture
def conta_associacao_cheque(associacao, tipo_conta_cheque):
Expand Down Expand Up @@ -1773,7 +1815,7 @@ def ata_2020_1_cheque_aprovada(prestacao_conta_2020_1_conciliada):
@pytest.fixture
def presente_ata_membro(ata_2020_1_cheque_aprovada):
return baker.make(
'PresenteAta',
'Participante',
ata=ata_2020_1_cheque_aprovada,
identificacao="123",
nome="membro",
Expand All @@ -1798,7 +1840,7 @@ def membro_associacao_presidente_conselho_01(associacao):
@pytest.fixture
def presente_ata_membro_e_conselho_fiscal(ata_2020_1_cheque_aprovada):
return baker.make(
'PresenteAta',
'Participante',
ata=ata_2020_1_cheque_aprovada,
identificacao="123",
nome="membro",
Expand All @@ -1810,7 +1852,7 @@ def presente_ata_membro_e_conselho_fiscal(ata_2020_1_cheque_aprovada):
@pytest.fixture
def presente_ata_nao_membro(ata_2020_1_cheque_aprovada):
return baker.make(
'PresenteAta',
'Participante',
ata=ata_2020_1_cheque_aprovada,
identificacao="123",
nome="membro",
Expand Down Expand Up @@ -2024,6 +2066,51 @@ def observacao_conciliacao(periodo, conta_associacao):
saldo_extrato = 1000
)

@pytest.fixture
def observacao_conciliacao_campos_nao_preenchidos(periodo_2020_1, conta_associacao):
return baker.make(
'ObservacaoConciliacao',
periodo=periodo_2020_1,
associacao=conta_associacao.associacao,
conta_associacao=conta_associacao,
texto="Observação com campos não preenchidos.",
)

@pytest.fixture
def observacao_conciliacao_com_saldo_zero(periodo_2020_1, conta_associacao):
return baker.make(
'ObservacaoConciliacao',
periodo=periodo_2020_1,
associacao=conta_associacao.associacao,
conta_associacao=conta_associacao,
data_extrato = date(2020, 7, 1),
saldo_extrato = 0,
texto="Observação com saldo zero."
)

@pytest.fixture
def observacao_conciliacao_campos_nao_preenchidos_002(periodo_2020_1, conta_associacao_tipo_cheque):
return baker.make(
'ObservacaoConciliacao',
periodo=periodo_2020_1,
associacao=conta_associacao_tipo_cheque.associacao,
conta_associacao=conta_associacao_tipo_cheque,
texto="Observação com campos não preenchidos 002.",
)

@pytest.fixture
def observacao_conciliacao_campos_preenchidos(periodo_2020_1, conta_associacao):
return baker.make(
'ObservacaoConciliacao',
periodo=periodo_2020_1,
associacao=conta_associacao.associacao,
conta_associacao=conta_associacao,
texto="Observação com campos não preenchidos.",
data_extrato = date(2020, 7, 1),
saldo_extrato = 1000,
comprovante_extrato=None
)

@pytest.fixture
def devolucao_prestacao_conta_2020_1(prestacao_conta_2020_1_conciliada):
return baker.make(
Expand Down
17 changes: 17 additions & 0 deletions sme_ptrf_apps/contrib/sites/migrations/0004_auto_20230612_1636.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Generated by Django 3.1.14 on 2023-06-12 16:36

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
('sites', '0003_set_site_domain_and_name'),
]

operations = [
migrations.AlterModelOptions(
name='site',
options={'ordering': ['domain'], 'verbose_name': 'site', 'verbose_name_plural': 'sites'},
),
]
10 changes: 6 additions & 4 deletions sme_ptrf_apps/core/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
TipoAcertoDocumento,
AnaliseDocumentoPrestacaoConta,
SolicitacaoAcertoDocumento,
PresenteAta,
Participante,
ValoresReprogramados,
SolicitacaoDevolucaoAoTesouro,
TransferenciaEol,
Expand Down Expand Up @@ -1237,7 +1237,7 @@ def get_analise_pc(self, obj):
autocomplete_fields = ['analise_documento', 'despesa_incluida', 'receita_incluida']


@admin.register(PresenteAta)
@admin.register(Participante)
class PresenteAtaAdmin(admin.ModelAdmin):
def get_unidade(self, obj):
return f'{obj.ata.associacao.unidade.codigo_eol} - {obj.ata.associacao.unidade.nome}' if obj and obj.ata and obj.ata.associacao and obj.ata.associacao.unidade else ''
Expand All @@ -1259,12 +1259,14 @@ def get_periodo(self, obj):
]
list_filter = [
'ata__periodo__referencia',
'ata__associacao__unidade',
'ata__associacao__unidade__tipo_unidade',
'ata__associacao__unidade__dre',
'cargo',
'membro'
'membro',
('criado_em', DateRangeFilter),
('alterado_em', DateRangeFilter),
]
readonly_fields = ('uuid', 'id', 'criado_em', 'alterado_em')


@admin.register(ValoresReprogramados)
Expand Down
10 changes: 5 additions & 5 deletions sme_ptrf_apps/core/api/serializers/presentes_ata_serializer.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from rest_framework import serializers
from ...models import Ata, PresenteAta
from ...models import Ata, Participante


class PresentesAtaSerializer(serializers.ModelSerializer):
Expand All @@ -13,8 +13,8 @@ def editavel(self, obj):
return obj.editavel

class Meta:
model = PresenteAta
fields = ('ata', 'identificacao', 'nome', 'cargo', 'membro', 'editavel')
model = Participante
fields = ('ata', 'identificacao', 'nome', 'cargo', 'membro', 'editavel', 'presente')


class PresentesAtaCreateSerializer(serializers.ModelSerializer):
Expand All @@ -25,5 +25,5 @@ class PresentesAtaCreateSerializer(serializers.ModelSerializer):
)

class Meta:
model = PresenteAta
fields = ('ata', 'identificacao', 'nome', 'cargo', 'membro')
model = Participante
fields = ('ata', 'identificacao', 'nome', 'cargo', 'membro', 'presente')
19 changes: 18 additions & 1 deletion sme_ptrf_apps/core/api/views/associacoes_viewset.py
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,16 @@ def status_periodo(self, request, uuid=None):
if prestacao_conta:
gerar_previas = pc_requer_geracao_documentos(prestacao_conta)

pendencias_dados = associacao.pendencias_dados_da_associacao_para_geracao_de_documentos()
pendencias_conciliacao = associacao.pendencias_conciliacao_bancaria_por_periodo_para_geracao_de_documentos(periodo)
if pendencias_dados or pendencias_conciliacao:
pendencias_cadastrais = {
'dados_associacao': pendencias_dados,
'conciliacao_bancaria': pendencias_conciliacao,
}
else:
pendencias_cadastrais = None

result = {
'associacao': f'{uuid}',
'periodo_referencia': periodo_referencia,
Expand All @@ -243,6 +253,7 @@ def status_periodo(self, request, uuid=None):
'gerar_ou_editar_ata_apresentacao': gerar_ou_editar_ata_apresentacao,
'gerar_ou_editar_ata_retificacao': gerar_ou_editar_ata_retificacao,
'gerar_previas': gerar_previas,
'pendencias_cadastrais': pendencias_cadastrais
}

return Response(result)
Expand Down Expand Up @@ -707,7 +718,7 @@ def valida_data_de_encerramento(self, request, uuid=None):
status_response = response.pop("status")

return Response(response, status=status_response)

@action(detail=False, url_path='tags-informacoes',
permission_classes=[IsAuthenticated & PermissaoAPITodosComLeituraOuGravacao])
def tags_informacoes_list(self, request):
Expand All @@ -716,3 +727,9 @@ def tags_informacoes_list(self, request):

return Response(result)

@action(detail=True, url_path='status-cadastro',
permission_classes=[IsAuthenticated & PermissaoAPITodosComLeituraOuGravacao])
def status_cadastro(self, request, uuid=None):
associacao = self.get_object()
response = associacao.pendencias_dados_da_associacao_para_geracao_de_documentos()
return Response(response)
37 changes: 29 additions & 8 deletions sme_ptrf_apps/core/api/views/presentes_ata_viewset.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
PermissaoApiUe
)
from rest_framework.permissions import IsAuthenticated
from ...models import PresenteAta, Ata, MembroAssociacao
from ...models import Participante, Ata, MembroAssociacao
from ..serializers.presentes_ata_serializer import PresentesAtaSerializer
from rest_framework.decorators import action
from rest_framework.response import Response
Expand All @@ -23,7 +23,7 @@ class PresentesAtaViewSet(mixins.CreateModelMixin,
mixins.ListModelMixin,
GenericViewSet):
permission_classes = [IsAuthenticated & PermissaoApiUe]
queryset = PresenteAta.objects.all()
queryset = Participante.objects.all()
serializer_class = PresentesAtaSerializer
filter_fields = ('ata__uuid',)
filter_backends = (filters.DjangoFilterBackend,)
Expand Down Expand Up @@ -52,12 +52,32 @@ def membros_e_nao_membros(self, request):
return Response(erro, status=status.HTTP_400_BAD_REQUEST)

ata = Ata.objects.filter(uuid=ata_uuid).first()
presentes_ata_membros = PresenteAta.objects.filter(ata=ata).filter(membro=True).values()
presentes_ata_nao_membros = PresenteAta.objects.filter(ata=ata).filter(membro=False).order_by('nome').values()
presentes_ata_membros = Participante.objects.filter(ata=ata).filter(membro=True).values()
presentes_ata_nao_membros = Participante.objects.filter(ata=ata).filter(membro=False).order_by('nome').values()

associacao = ata.associacao
# presentes_ata_conselho_fiscal = PresenteAta.objects.filter(ata=ata).filter(membro=True).filter(conselho_fiscal=True).values()
presentes_ata_conselho_fiscal = retorna_membros_do_conselho_fiscal_por_associacao(associacao)

if not presentes_ata_membros:
membros_associacao = ata.associacao.membros_por_cargo()
presentes_ata_membros = []
for membro in membros_associacao:

dado = {
"ata": ata_uuid,
"cargo": remove_digitos(MembroEnum[membro.cargo_associacao].value),
"identificacao": membro.codigo_identificacao if membro.codigo_identificacao != "" else membro.cpf,
"nome": membro.nome,
"editavel": False,
"membro": True,
"presente": True
}

presentes_ata_membros.append(dado)

presentes_ata_conselho_fiscal = retorna_membros_do_conselho_fiscal_por_associacao(associacao)
else:
presentes_ata_conselho_fiscal = Participante.objects.filter(ata=ata).filter(membro=True, conselho_fiscal=True).values()


result = {
'presentes_membros': presentes_ata_membros,
Expand Down Expand Up @@ -100,7 +120,8 @@ def padrao_presentes(self, request):
"identificacao": membro.codigo_identificacao if membro.codigo_identificacao != "" else membro.cpf,
"nome": membro.nome,
"editavel": False,
"membro": True
"membro": True,
"presente": True
}

membros.append(dado)
Expand Down Expand Up @@ -191,6 +212,6 @@ def get_nome_cargo_membro_associacao(self, request):
"cargo": MembroEnum[membro.cargo_associacao].value
}
else:
result = PresenteAta.get_informacao_servidor(identificador)
result = Participante.get_informacao_servidor(identificador)

return Response(result)
18 changes: 18 additions & 0 deletions sme_ptrf_apps/core/migrations/0333_presenteata_presente.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 3.0.14 on 2023-06-05 11:58

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('core', '0332_merge_20230517_1106'),
]

operations = [
migrations.AddField(
model_name='presenteata',
name='presente',
field=models.BooleanField(default=True, verbose_name='Presente ?'),
),
]
17 changes: 17 additions & 0 deletions sme_ptrf_apps/core/migrations/0334_auto_20230611_2044.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Generated by Django 3.0.14 on 2023-06-11 20:44

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
('core', '0333_presenteata_presente'),
]

operations = [
migrations.RenameModel(
old_name='PresenteAta',
new_name='Participante',
),
]
Loading

0 comments on commit 3202f4c

Please sign in to comment.