Browse Source

Fix #2987

pull/3019/head
João Rodrigues 6 years ago
parent
commit
a8dcc36d50
  1. 1
      sapl/base/forms.py
  2. 20
      sapl/base/migrations/0039_appconfig_inicio_numeracao_protocolo.py
  3. 5
      sapl/base/models.py
  4. 40
      sapl/base/views.py
  5. 4
      sapl/protocoloadm/forms.py
  6. 4
      sapl/protocoloadm/tests/test_protocoloadm.py
  7. 41
      sapl/protocoloadm/views.py
  8. 2
      sapl/templates/base/layouts.yaml

1
sapl/base/forms.py

@ -1504,6 +1504,7 @@ class ConfiguracoesAppForm(ModelForm):
model = AppConfig
fields = ['documentos_administrativos',
'sequencia_numeracao_protocolo',
'inicio_numeracao_protocolo',
'sequencia_numeracao_proposicao',
'esfera_federacao',
# 'painel_aberto', # TODO: a ser implementado na versão 3.2

20
sapl/base/migrations/0039_appconfig_inicio_numeracao_protocolo.py

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.23 on 2019-10-15 19:13
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('base', '0038_auditlog'),
]
operations = [
migrations.AddField(
model_name='appconfig',
name='inicio_numeracao_protocolo',
field=models.PositiveIntegerField(default=1, verbose_name='Início da numeração de protocolo'),
),
]

5
sapl/base/models.py

@ -107,6 +107,11 @@ class AppConfig(models.Model):
max_length=1,
verbose_name=_('Sequência de numeração de protocolos'),
choices=SEQUENCIA_NUMERACAO_PROTOCOLO, default='A')
inicio_numeracao_protocolo = models.PositiveIntegerField(
verbose_name=_('Início da numeração de protocolo'),
default=1
)
esfera_federacao = models.CharField(
max_length=1,

40
sapl/base/views.py

@ -2041,6 +2041,46 @@ class AppConfigCrud(CrudAux):
kwargs={'pk': app_config.pk}))
class UpdateView(CrudAux.UpdateView):
form_class = ConfiguracoesAppForm
def form_valid(self, form):
numeracao = AppConfig.objects.last().sequencia_numeracao_protocolo
numeracao_antiga = AppConfig.objects.last().inicio_numeracao_protocolo
self.object = form.save()
numeracao_nova = self.object.inicio_numeracao_protocolo
if numeracao_nova != numeracao_antiga:
if numeracao == 'A':
numeros = Protocolo.objects.filter(
ano=timezone.now().year
)
elif numeracao == 'L':
legislatura = Legislatura.objects.filter(
data_inicio__year__lte=timezone.now().year,
data_fim__year__gte=timezone.now().year
).first()
data_inicio = legislatura.data_inicio
data_fim = legislatura.data_fim
numeros = Protocolo.objects.filter(
data__gte=data_inicio,
data_lte=data_fim
)
elif numeracao == 'U':
numeros = Protocolo.objects.all()
if numeros:
msg = "O novo início da numeração de protocolo entrará em vigor na " \
"próxima sequência, pois já existem protocolos cadastrados na " \
"atual."
messages.warning(self.request, msg)
return super().form_valid(form)
class ListView(CrudAux.ListView):
def get(self, request, *args, **kwargs):

4
sapl/protocoloadm/forms.py

@ -343,7 +343,7 @@ class AnularProtocoloAdmForm(ModelForm):
*args, **kwargs)
class ProtocoloDocumentForm(ModelForm):
class ProtocoloDocumentoForm(ModelForm):
tipo_protocolo = forms.ChoiceField(required=True,
label=_('Tipo de Protocolo'),
@ -445,7 +445,7 @@ class ProtocoloDocumentForm(ModelForm):
form_actions(label=_('Protocolar Documento'))
)
)
super(ProtocoloDocumentForm, self).__init__(
super(ProtocoloDocumentoForm, self).__init__(
*args, **kwargs)
if not config.protocolo_manual:

4
sapl/protocoloadm/tests/test_protocoloadm.py

@ -13,7 +13,7 @@ from sapl.comissoes.models import Comissao, TipoComissao
from sapl.materia.models import UnidadeTramitacao
from sapl.protocoloadm.forms import (AnularProtocoloAdmForm,
DocumentoAdministrativoForm,
MateriaLegislativa, ProtocoloDocumentForm,
MateriaLegislativa, ProtocoloDocumentoForm,
ProtocoloMateriaForm, TramitacaoAdmForm,
TramitacaoAdmEditForm,
compara_tramitacoes_doc,
@ -415,7 +415,7 @@ def test_protocolo_documento_form_invalido():
config = mommy.make(AppConfig)
form = ProtocoloDocumentForm(
form = ProtocoloDocumentoForm(
data={},
initial={
'user_data_hora_manual': '',

41
sapl/protocoloadm/views.py

@ -44,23 +44,19 @@ from sapl.utils import (create_barcode, get_base_url, get_client_ip,
from django.shortcuts import render
from .forms import (AcompanhamentoDocumentoForm, AnularProtocoloAdmForm,
DocumentoAcessorioAdministrativoForm,
DocumentoAdministrativoFilterSet,
DocumentoAdministrativoForm, FichaPesquisaAdmForm, FichaSelecionaAdmForm, ProtocoloDocumentForm,
ProtocoloFilterSet, ProtocoloMateriaForm,
TramitacaoAdmEditForm, TramitacaoAdmForm,
from .forms import (AcompanhamentoDocumentoForm, AnexadoEmLoteFilterSet, AnexadoForm,
AnularProtocoloAdmForm, compara_tramitacoes_doc,
DesvincularDocumentoForm, DesvincularMateriaForm,
filtra_tramitacao_adm_destino_and_status,
filtra_tramitacao_adm_destino, filtra_tramitacao_adm_status,
AnexadoForm, AnexadoEmLoteFilterSet,
PrimeiraTramitacaoEmLoteAdmFilterSet,
TramitacaoEmLoteAdmForm,
TramitacaoEmLoteAdmFilterSet,
compara_tramitacoes_doc)
from .models import (AcompanhamentoDocumento, DocumentoAcessorioAdministrativo,
DocumentoAcessorioAdministrativoForm, DocumentoAdministrativoFilterSet,
DocumentoAdministrativoForm, FichaPesquisaAdmForm, FichaSelecionaAdmForm,
filtra_tramitacao_adm_destino, filtra_tramitacao_adm_destino_and_status,
filtra_tramitacao_adm_status, PrimeiraTramitacaoEmLoteAdmFilterSet,
ProtocoloDocumentoForm, ProtocoloFilterSet, ProtocoloMateriaForm,
TramitacaoAdmEditForm, TramitacaoAdmForm, TramitacaoEmLoteAdmForm,
TramitacaoEmLoteAdmFilterSet)
from .models import (Anexado, AcompanhamentoDocumento, DocumentoAcessorioAdministrativo,
DocumentoAdministrativo, StatusTramitacaoAdministrativo,
TipoDocumentoAdministrativo, TramitacaoAdministrativo, Anexado)
TipoDocumentoAdministrativo, TramitacaoAdministrativo)
TipoDocumentoAdministrativoCrud = CrudAux.build(
@ -582,7 +578,7 @@ class ProtocoloDocumentoView(PermissionRequiredMixin,
logger = logging.getLogger(__name__)
template_name = "protocoloadm/protocolar_documento.html"
form_class = ProtocoloDocumentForm
form_class = ProtocoloDocumentoForm
form_valid_message = _('Protocolo cadastrado com sucesso!')
permission_required = ('protocoloadm.add_protocolo', )
@ -647,7 +643,10 @@ class ProtocoloDocumentoView(PermissionRequiredMixin,
protocolo.tipo_processo = '0' # TODO validar o significado
protocolo.anulado = False
protocolo.numero = ( numero['numero__max'] + 1 ) if numero['numero__max'] else 1
inicio_numeracao = AppConfig.objects.all()[0].inicio_numeracao_protocolo
protocolo.numero = (
(numero['numero__max'] + 1 ) if numero['numero__max'] else inicio_numeracao
)
protocolo.ano = timezone.now().year
protocolo.assunto_ementa = self.request.POST['assunto']
@ -849,10 +848,10 @@ class ProtocoloMateriaView(PermissionRequiredMixin, CreateView):
elif numeracao == 'U':
numero = Protocolo.objects.all().aggregate(Max('numero'))
if numeracao is None:
numero['numero__max'] = 0
protocolo.numero = (numero['numero__max'] + 1) if numero['numero__max'] else 1
inicio_numeracao = AppConfig.objects.all()[0].inicio_numeracao_protocolo
protocolo.numero = (
(numero['numero__max'] + 1 ) if numero['numero__max'] else inicio_numeracao
)
protocolo.ano = timezone.now().year

2
sapl/templates/base/layouts.yaml

@ -18,7 +18,7 @@ AppConfig:
- esfera_federacao
{% trans 'Proposições e Protocolo' %}:
- sequencia_numeracao_proposicao sequencia_numeracao_protocolo
- sequencia_numeracao_proposicao sequencia_numeracao_protocolo inicio_numeracao_protocolo
- protocolo_manual receber_recibo_proposicao
- proposicao_incorporacao_obrigatoria escolher_numero_materia_proposicao

Loading…
Cancel
Save