diff --git a/sapl/base/forms.py b/sapl/base/forms.py
index 64b3e43f9..0fe2c311d 100644
--- a/sapl/base/forms.py
+++ b/sapl/base/forms.py
@@ -1552,6 +1552,7 @@ class ConfiguracoesAppForm(ModelForm):
fields = ['documentos_administrativos',
'sequencia_numeracao_protocolo',
'inicio_numeracao_protocolo',
+ 'registro_numeracao_materia',
'sequencia_numeracao_proposicao',
'esfera_federacao',
# 'painel_aberto', # TODO: a ser implementado na versão 3.2
diff --git a/sapl/base/migrations/0042_appconfig_registro_numeracao_materia.py b/sapl/base/migrations/0042_appconfig_registro_numeracao_materia.py
new file mode 100644
index 000000000..745a1f4ea
--- /dev/null
+++ b/sapl/base/migrations/0042_appconfig_registro_numeracao_materia.py
@@ -0,0 +1,18 @@
+# Generated by Django 2.2.13 on 2020-09-14 16:41
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('base', '0041_merge_20200818_1256'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='appconfig',
+ name='registro_numeracao_materia',
+ field=models.CharField(choices=[('N', 'Não registrar numeração'), ('A', 'Registrar numeração - sequencial por ano'), ('U', 'Registrar numeração - sequencial única')], default='N', max_length=1, verbose_name='Registro de numeração na criação de matérias'),
+ ),
+ ]
diff --git a/sapl/base/migrations/0043_auto_20200915_1419.py b/sapl/base/migrations/0043_auto_20200915_1419.py
new file mode 100644
index 000000000..03d4149bc
--- /dev/null
+++ b/sapl/base/migrations/0043_auto_20200915_1419.py
@@ -0,0 +1,18 @@
+# Generated by Django 2.2.13 on 2020-09-15 17:19
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('base', '0042_appconfig_registro_numeracao_materia'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='appconfig',
+ name='registro_numeracao_materia',
+ field=models.CharField(choices=[('N', 'Não registrar numeração de processo'), ('A', 'Registrar numeração de processo - sequencial por ano'), ('U', 'Registrar numeração de processo - sequencial única')], default='N', max_length=1, verbose_name='Registro de numeração de processo na criação de matérias'),
+ ),
+ ]
diff --git a/sapl/base/models.py b/sapl/base/models.py
index b619a1e97..bb592b489 100644
--- a/sapl/base/models.py
+++ b/sapl/base/models.py
@@ -22,6 +22,12 @@ SEQUENCIA_NUMERACAO_PROTOCOLO = (('A', _('Sequencial por ano')),
('L', _('Sequencial por legislatura')),
('U', _('Sequencial único')))
+REGISTRO_NUMERACAO_MATERIA = (
+ ('N', _('Não registrar numeração de processo')),
+ ('A', _('Registrar numeração de processo - sequencial por ano')),
+ ('U', _('Registrar numeração de processo - sequencial única'))
+)
+
SEQUENCIA_NUMERACAO_PROPOSICAO = (('A', _('Sequencial por ano para cada autor')),
('B', _('Sequencial por ano indepententemente do autor')))
@@ -113,6 +119,14 @@ class AppConfig(models.Model):
default=1
)
+ registro_numeracao_materia = models.CharField(
+ max_length=1,
+ verbose_name=_(
+ 'Registro de numeração de processo na criação de matérias'
+ ),
+ choices=REGISTRO_NUMERACAO_MATERIA, default='N'
+ )
+
esfera_federacao = models.CharField(
max_length=1,
blank=True,
diff --git a/sapl/materia/forms.py b/sapl/materia/forms.py
index 1bd594ab0..d2e15db02 100644
--- a/sapl/materia/forms.py
+++ b/sapl/materia/forms.py
@@ -852,7 +852,7 @@ class NumeracaoForm(ModelForm):
ano_materia=self.cleaned_data['ano_materia'],
numero_materia=self.cleaned_data['numero_materia']
).exists():
- msg = _('Essa numeração já foi cadastrada.')
+ msg = _('Essa numeração de processo já foi cadastrada.')
self.logger.error("Essa numeração (materia={}, tipo_materia={}, ano_materia={}, numero_materia={}) "
"já foi cadastrada.".format(self.instance.materia, self.cleaned_data['tipo_materia'],
self.cleaned_data['ano_materia'], self.cleaned_data['numero_materia']))
@@ -998,7 +998,7 @@ class MateriaLegislativaFilterSet(django_filters.FilterSet):
numeracao__numero_materia = django_filters.NumberFilter(
required=False,
- label=_('Número do processo'))
+ label=_('Número de processo'))
o = MateriaPesquisaOrderingFilter(help_text='')
diff --git a/sapl/materia/migrations/0074_auto_20200915_1419.py b/sapl/materia/migrations/0074_auto_20200915_1419.py
new file mode 100644
index 000000000..01def1ce5
--- /dev/null
+++ b/sapl/materia/migrations/0074_auto_20200915_1419.py
@@ -0,0 +1,17 @@
+# Generated by Django 2.2.13 on 2020-09-15 17:19
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('materia', '0073_auto_20200910_1420'),
+ ]
+
+ operations = [
+ migrations.AlterModelOptions(
+ name='numeracao',
+ options={'ordering': ('materia', 'tipo_materia', 'numero_materia', 'ano_materia', 'data_materia'), 'verbose_name': 'Numeração de Processo', 'verbose_name_plural': 'Numerações de Processo'},
+ ),
+ ]
diff --git a/sapl/materia/models.py b/sapl/materia/models.py
index 0f17761bb..78525180d 100644
--- a/sapl/materia/models.py
+++ b/sapl/materia/models.py
@@ -648,8 +648,8 @@ class Numeracao(models.Model):
data_materia = models.DateField(verbose_name=_('Data'), null=True)
class Meta:
- verbose_name = _('Numeração')
- verbose_name_plural = _('Numerações')
+ verbose_name = _('Numeração de Processo')
+ verbose_name_plural = _('Numerações de Processo')
ordering = ('materia',
'tipo_materia',
'numero_materia',
diff --git a/sapl/materia/views.py b/sapl/materia/views.py
index 2545064ad..20bde16ca 100644
--- a/sapl/materia/views.py
+++ b/sapl/materia/views.py
@@ -1712,6 +1712,57 @@ class MateriaLegislativaCrud(Crud):
return initial
+ def form_valid(self, form):
+ self.object = form.save()
+ tipo_materia = TipoMateriaLegislativa.objects.get(id=self.object.tipo_id)
+
+ self.logger.debug(
+ "Tentando obter a configuração selecionada para o registro de numeração " \
+ "de processo na criação de materias."
+ )
+ config = BaseAppConfig.objects.last().registro_numeracao_materia
+ if not config:
+ self.logger.error(
+ "Não foi possível obter a configuração selecionada para o registro " \
+ "de numeração de processo na criação de matérias."
+ )
+
+ msg = _(
+ 'Não foi possível obter a configuração selecionada para o registro ' \
+ 'de numeração de processo na criação de matérias.'
+ )
+ messages.add_message(self.request, messages.WARNING, msg)
+ elif config == "A":
+ numeros = [
+ int(n.numero_materia) for n in Numeracao.objects.filter(
+ ano_materia=self.object.ano
+ )
+ ]
+ numeros.sort()
+ numero = numeros[len(numeros)-1] + 1 if numeros else 1
+
+ Numeracao.objects.create(
+ materia=self.object, tipo_materia=tipo_materia,
+ numero_materia=numero, ano_materia=self.object.ano,
+ data_materia=self.object.data_apresentacao
+ )
+ elif config == "U":
+ numeros = [ int(n.numero_materia) for n in Numeracao.objects.all() ]
+ numeros.sort()
+ numero = numeros[len(numeros)-1] + 1 if numeros else 1
+
+ Numeracao.objects.create(
+ materia=self.object, tipo_materia=tipo_materia,
+ numero_materia=numero, ano_materia=self.object.ano,
+ data_materia=self.object.data_apresentacao
+ )
+ else:
+ self.logger.debug(
+ "A configuração selecionada para o registro de numeração de processo" \
+ " na criação de matérias é: Não registrar numeração de processo."
+ )
+ return super().form_valid(form)
+
@property
def cancel_url(self):
return self.search_url
diff --git a/sapl/relatorios/templates/pdf_detalhe_materia_gerar.py b/sapl/relatorios/templates/pdf_detalhe_materia_gerar.py
index 43224d282..d892de863 100755
--- a/sapl/relatorios/templates/pdf_detalhe_materia_gerar.py
+++ b/sapl/relatorios/templates/pdf_detalhe_materia_gerar.py
@@ -300,7 +300,7 @@ def relatorias(lst_relatorias):
def numeracoes(lst_numeracoes):
tmp = ''
- tmp += '\t\t