Skip to content

Commit

Permalink
Merge pull request #1454 from prefeiturasp/hotfix/1.33.5
Browse files Browse the repository at this point in the history
Hotfix/1.33.5
  • Loading branch information
alcfernandes authored Sep 29, 2022
2 parents cc0d707 + be37ae2 commit 59e5ac3
Show file tree
Hide file tree
Showing 8 changed files with 430 additions and 20 deletions.
5 changes: 4 additions & 1 deletion hotfixes.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
### 1.33.5 - 29/09/2022 - Hotfix - Soluções de bugs urgentes durante a sprint 50
* (74103) Carga de devoluções ao tesouro e ajustes no admin

### 1.33.4 - 20/09/2022 - Hotfix - Soluções de bugs urgentes durante a sprint 49
* (74340) Corrige seletor de períodos na conclusão de PC
*

### 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
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.4"
__version__ = "1.33.5"


__version_info__ = tuple(
Expand Down
78 changes: 78 additions & 0 deletions sme_ptrf_apps/contrib/scripts_diversos/dev_tesouro.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
-- noinspection SqlNoDataSourceInspectionForFile

-- Lista solicitações de devolução ao tesouro sem uma devolução ao tesouro vinculada
select
a.unidade_id as "codigo_eol",
u.nome,
pc.id as "pc_id",
p.referencia,
d.id as "despesa_id", d.numero_documento, d.valor_total
from
core_prestacaoconta as pc,
core_periodo as p,
core_associacao as a,
core_unidade as u,
core_analiseprestacaoconta as apc,
core_analiselancamentoprestacaoconta as al,
despesas_despesa as d,
core_solicitacaoacertolancamento as sal,
core_tipoacertolancamento as tal
where
pc.periodo_id = p.id
and a.unidade_id = u.codigo_eol
and pc.associacao_id = a.id
and apc.prestacao_conta_id = pc.id
and al.analise_prestacao_conta_id = apc.id
and al.despesa_id = d.id
and sal.analise_lancamento_id = al.id
and tal.id = sal.tipo_acerto_id
and tal.categoria = 'DEVOLUCAO'
and (select count(dt.id) from core_devolucaoaotesouro as dt where dt.prestacao_conta_id = pc.id and dt.despesa_id = d.id) = 0
group by
pc.id,
p.referencia,
a.unidade_id,
u.nome,
d.id, d.numero_documento, d.valor_total
order by
a.unidade_id,
u.nome,
p.referencia,
d.id, d.numero_documento

-- Lista de Prestações de Conta com devoluções ao tesouro faltando
select
a.unidade_id as "codigo_eol",
u.nome,
pc.id as "pc_id",
p.referencia
from
core_prestacaoconta as pc,
core_periodo as p,
core_associacao as a,
core_unidade as u,
core_analiseprestacaoconta as apc,
core_analiselancamentoprestacaoconta as al,
despesas_despesa as d,
core_solicitacaoacertolancamento as sal,
core_tipoacertolancamento as tal
where
pc.periodo_id = p.id
and a.unidade_id = u.codigo_eol
and pc.associacao_id = a.id
and apc.prestacao_conta_id = pc.id
and al.analise_prestacao_conta_id = apc.id
and al.despesa_id = d.id
and sal.analise_lancamento_id = al.id
and tal.id = sal.tipo_acerto_id
and tal.categoria = 'DEVOLUCAO'
and (select count(dt.id) from core_devolucaoaotesouro as dt where dt.prestacao_conta_id = pc.id and dt.despesa_id = d.id) = 0
group by
pc.id,
p.referencia,
a.unidade_id,
u.nome
order by
a.unidade_id,
u.nome,
p.referencia
83 changes: 66 additions & 17 deletions sme_ptrf_apps/core/admin.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import logging

from django.contrib import admin
from rangefilter.filter import DateRangeFilter
from sme_ptrf_apps.core.services.processa_cargas import processa_cargas
Expand Down Expand Up @@ -285,24 +287,33 @@ def remover_duplicacao_fechamentos(self, request, queryset):
class AtaAdmin(admin.ModelAdmin):

def get_eol_unidade(self, obj):
return obj.associacao.unidade.codigo_eol if obj and obj.associacao and obj.associacao.unidade else ''
return f'{obj.associacao.unidade.codigo_eol} - {obj.associacao.unidade.nome}' if obj and obj.associacao and obj.associacao.unidade else ''

get_eol_unidade.short_description = 'EOL'
get_eol_unidade.short_description = 'Unidade'

def get_referencia_periodo(self, obj):
return obj.periodo.referencia if obj and obj.periodo else ''

get_referencia_periodo.short_description = 'Período'

list_display = (
'get_eol_unidade', 'get_referencia_periodo', 'data_reuniao', 'tipo_ata', 'tipo_reuniao',
'convocacao',
'parecer_conselho', 'previa')
'get_eol_unidade',
'get_referencia_periodo',
'tipo_ata',
'parecer_conselho',
'previa',
'arquivo_pdf',
)

list_filter = (
'parecer_conselho', 'tipo_ata', 'tipo_reuniao', 'convocacao', 'associacao', 'previa')
'periodo',
'tipo_ata',
'previa',
'parecer_conselho',
)
list_display_links = ('get_eol_unidade',)
readonly_fields = ('uuid', 'id', 'criado_em', 'alterado_em')
search_fields = ('associacao__unidade__codigo_eol',)
search_fields = ('associacao__unidade__codigo_eol', 'associacao__unidade__nome')


@admin.register(Arquivo)
Expand Down Expand Up @@ -459,24 +470,24 @@ class TipoDevolucaoTesouroAdmin(admin.ModelAdmin):
@admin.register(DevolucaoAoTesouro)
class DevolucaoAoTesouroAdmin(admin.ModelAdmin):

def get_associacao(self, obj):
return obj.prestacao_conta.associacao.nome if obj and obj.prestacao_conta and obj.prestacao_conta.associacao else ''
def get_unidade(self, obj):
return f'{obj.prestacao_conta.associacao.unidade.codigo_eol} - {obj.prestacao_conta.associacao.unidade.nome}' if obj and obj.prestacao_conta and obj.prestacao_conta.associacao and obj.prestacao_conta.associacao.unidade else ''

get_associacao.short_description = 'Associação'
get_unidade.short_description = 'Unidade'

def get_referencia_periodo(self, obj):
return obj.prestacao_conta.periodo.referencia if obj and obj.prestacao_conta and obj.prestacao_conta.periodo else ''

get_referencia_periodo.short_description = 'Período'

list_display = (
'get_associacao', 'get_referencia_periodo', 'data', 'tipo', 'devolucao_total', 'valor', 'visao_criacao')
'get_unidade', 'get_referencia_periodo', 'despesa', 'data', 'tipo', 'devolucao_total', 'valor', 'visao_criacao')

list_filter = (
'prestacao_conta__periodo', 'prestacao_conta__associacao', 'prestacao_conta', 'tipo', 'devolucao_total',
'visao_criacao')
'prestacao_conta__periodo', 'prestacao_conta', 'tipo', 'devolucao_total',
'visao_criacao', 'data')

list_display_links = ('get_associacao',)
list_display_links = ('get_unidade',)
readonly_fields = ('uuid', 'id')
search_fields = ('prestacao_conta__associacao__unidade__codigo_eol', 'prestacao_conta__associacao__unidade__nome',
'prestacao_conta__associacao__nome', 'motivo')
Expand Down Expand Up @@ -733,11 +744,49 @@ class TipoAcertoLancamentoAdmin(admin.ModelAdmin):

@admin.register(SolicitacaoAcertoLancamento)
class SolicitacaoAcertoLancamentoAdmin(admin.ModelAdmin):
list_display = ['uuid', 'analise_lancamento', 'tipo_acerto']
search_fields = ['detalhamento']
list_filter = ['tipo_acerto', ]
def get_unidade(self, obj):
return f'{obj.analise_lancamento.analise_prestacao_conta.prestacao_conta.associacao.unidade.codigo_eol} - {obj.analise_lancamento.analise_prestacao_conta.prestacao_conta.associacao.unidade.nome}' if obj and obj.analise_lancamento and obj.analise_lancamento.analise_prestacao_conta and obj.analise_lancamento.analise_prestacao_conta.prestacao_conta.associacao and obj.analise_lancamento.analise_prestacao_conta.prestacao_conta.associacao.unidade else ''

get_unidade.short_description = 'Unidade'

def get_despesa(self, obj):
return obj.analise_lancamento.despesa if obj and obj.analise_lancamento else ''

get_despesa.short_description = 'Despesa'

list_display = ['get_unidade', 'analise_lancamento', 'tipo_acerto', 'devolucao_ao_tesouro', 'get_despesa']
search_fields = [
'analise_lancamento__analise_prestacao_conta__prestacao_conta__associacao__unidade__codigo_eol',
'analise_lancamento__analise_prestacao_conta__prestacao_conta__associacao__unidade__nome',
'detalhamento',
]
list_filter = [
'analise_lancamento__analise_prestacao_conta__prestacao_conta__periodo__referencia',
'tipo_acerto',
'devolucao_ao_tesouro',
]
readonly_fields = ('uuid', 'id',)

actions = ['buscar_e_vincular_devolucao_ao_tesouro']

def buscar_e_vincular_devolucao_ao_tesouro(self, request, queryset):
for solicitacao in queryset.all():
if solicitacao.tipo_acerto.categoria != 'DEVOLUCAO' or solicitacao.devolucao_ao_tesouro:
continue

prestacao_conta = solicitacao.analise_lancamento.analise_prestacao_conta.prestacao_conta
despesa = solicitacao.analise_lancamento.despesa
devolucao = DevolucaoAoTesouro.objects.filter(prestacao_conta=prestacao_conta, despesa=despesa).first()

if devolucao:
solicitacao.devolucao_ao_tesouro = devolucao
solicitacao.detalhamento = solicitacao.detalhamento + "(**vinculada a dvt)"
solicitacao.save()
logging.info(
f'Vinculado solicitação {solicitacao.id}-{solicitacao} à devolução {devolucao.id}-{devolucao}')

self.message_user(request, f"Processo realizado com sucesso!")


@admin.register(TipoDocumentoPrestacaoConta)
class TipoDocumentoPrestacaoContaAdmin(admin.ModelAdmin):
Expand Down
3 changes: 3 additions & 0 deletions sme_ptrf_apps/core/choices/tipos_carga.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
CARGA_USUARIOS = 'CARGA_USUARIOS'
CARGA_CENSO = 'CARGA_CENSO'
CARGA_REPASSE_PREVISTO_SME = 'CARGA_REPASSE_PREVISTO_SME'
CARGA_DEVOLUCAO_TESOURO = 'CARGA_DEVOLUCAO_TESOURO'

CARGA_NOMES = {
CARGA_REPASSE_REALIZADO: 'Repasses realizados',
Expand All @@ -15,6 +16,7 @@
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_CHOICES = (
Expand All @@ -25,4 +27,5 @@
(CARGA_USUARIOS, CARGA_NOMES[CARGA_USUARIOS]),
(CARGA_CENSO, CARGA_NOMES[CARGA_CENSO]),
(CARGA_REPASSE_PREVISTO_SME, CARGA_NOMES[CARGA_REPASSE_PREVISTO_SME]),
(CARGA_DEVOLUCAO_TESOURO, CARGA_NOMES[CARGA_DEVOLUCAO_TESOURO]),
)
23 changes: 23 additions & 0 deletions sme_ptrf_apps/core/migrations/0271_auto_20220923_1525.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Generated by Django 2.2.10 on 2022-09-23 15:25

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('core', '0270_remove_prestacaoconta_devolucao_tesouro'),
]

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')], 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')], default='CARGA_ASSOCIACOES', max_length=35, unique=True, verbose_name='tipo de carga'),
),
]
Loading

0 comments on commit 59e5ac3

Please sign in to comment.