diff --git a/sapl/materia/forms.py b/sapl/materia/forms.py index c0a3b3777..50c1bc931 100644 --- a/sapl/materia/forms.py +++ b/sapl/materia/forms.py @@ -206,39 +206,39 @@ class MateriaLegislativaForm(FileFieldCheckMixin, ModelForm): data_apresentacao = cleaned_data['data_apresentacao'] ano = cleaned_data['ano'] - protocolo = cleaned_data['numero_protocolo'] - protocolo_antigo = self.instance.numero_protocolo + protocolo_novo_numero = cleaned_data['numero_protocolo'] + protocolo_antigo_numero = self.instance.numero_protocolo - if protocolo: - if not Protocolo.objects.filter(numero=protocolo, ano=ano).exists(): - self.logger.error("Protocolo %s/%s não" - " existe" % (protocolo, ano)) - raise ValidationError(_('Protocolo %s/%s não' - ' existe' % (protocolo, ano))) + if protocolo_novo_numero: + if not Protocolo.objects.filter(numero=protocolo_novo_numero, ano=ano).exists(): + self.logger.error("O Protocolo %s/%s não" + " existe!" % (protocolo_novo_numero, ano)) + raise ValidationError(_('O Protocolo %s/%s não' + ' existe!' % (protocolo_novo_numero, ano))) - if protocolo_antigo != protocolo: + if protocolo_antigo_numero != protocolo_novo_numero: exist_materia = MateriaLegislativa.objects.filter( - numero_protocolo=protocolo, + numero_protocolo=protocolo_novo_numero, ano=ano).exists() - + + protocolo_novo = Protocolo.objects.get(numero=protocolo_novo_numero, ano=ano) exist_doc = DocumentoAdministrativo.objects.filter( - protocolo_id=protocolo, + protocolo_id=protocolo_novo.id, ano=ano).exists() if exist_materia or exist_doc: - self.logger.error("Protocolo %s/%s ja possui" - " documento vinculado" - % (protocolo, ano)) - raise ValidationError(_('Protocolo %s/%s ja possui' - ' documento vinculado' - % (protocolo, ano))) - - p = Protocolo.objects.get(numero=protocolo, ano=ano) - if p.tipo_materia != cleaned_data['tipo']: - self.logger.error("Tipo do Protocolo ({}) deve ser o mesmo do Tipo Matéria ({})." - .format(cleaned_data['tipo'], p.tipo_materia)) + self.logger.error("O Protocolo %s/%s já possui" + " um documento vinculado." + % (protocolo_novo_numero, ano)) + raise ValidationError(_('O Protocolo %s/%s já possui' + ' um documento vinculado.' + % (protocolo_novo_numero, ano))) + + if protocolo_novo.tipo_materia != cleaned_data['tipo']: + self.logger.error("O Tipo de Matéria do Protocolo ({}) deve ser o mesmo Tipo da Matéria ({})." + .format(cleaned_data['tipo'], protocolo_novo.tipo_materia)) raise ValidationError( - _('Tipo do Protocolo deve ser o mesmo do Tipo Matéria')) + _('O Tipo de Matéria do Protocolo deve ser o mesmo Tipo da Matéria.')) ano_origem_externa = cleaned_data['ano_origem_externa'] data_origem_externa = cleaned_data['data_origem_externa'] diff --git a/sapl/protocoloadm/forms.py b/sapl/protocoloadm/forms.py index 240d61891..068de326c 100644 --- a/sapl/protocoloadm/forms.py +++ b/sapl/protocoloadm/forms.py @@ -559,11 +559,24 @@ class ProtocoloMateriaForm(ModelForm): "Não foram informados o número ou ano da matéria a ser vinculada") raise ValidationError( 'Favor informar o número e ano da matéria a ser vinculada') + self.logger.debug("Tentando obter MateriaLegislativa com ano={}, numero={} e data={}." .format(data['ano_materia'], data['numero_materia'], data['tipo_materia'])) self.materia = MateriaLegislativa.objects.get(ano=data['ano_materia'], numero=data['numero_materia'], tipo=data['tipo_materia']) + + if timezone.localdate(timezone.now()).year != self.materia.ano: + self.logger.error( + "O ano da Matéria Legislativa a ser vinculada ao novo Protocolo de Matéria diverge do " \ + "ano atual (ano que será cadastrado no novo Protocolo de Matéria)." + ) + raise ValidationError( + _("A Matéria Legislativa e o seu Protocolo devem possuir o mesmo ano. O ano da Matéria " \ + "Legislativa a ser vinculada ao novo Protocolo de Matéria diverge do ano atual " \ + "(ano que será cadastrado no novo Protocolo de Matéria).") + ) + if self.materia.numero_protocolo: self.logger.error("MateriaLegislativa informada já possui o protocolo {}/{} vinculado." .format(self.materia.numero_protocolo, self.materia.ano)) diff --git a/sapl/protocoloadm/views.py b/sapl/protocoloadm/views.py index b61b91ff8..6ed2036a4 100755 --- a/sapl/protocoloadm/views.py +++ b/sapl/protocoloadm/views.py @@ -955,6 +955,11 @@ class ProtocoloMateriaTemplateView(PermissionRequiredMixin, TemplateView): **kwargs) protocolo = Protocolo.objects.get(pk=self.kwargs['pk']) context.update({'protocolo': protocolo}) + + context['protocolo_materia'] = MateriaLegislativa.objects.filter( + numero_protocolo=protocolo.numero, ano=protocolo.ano + ).exists() + return context diff --git a/sapl/templates/protocoloadm/MateriaTemplate.html b/sapl/templates/protocoloadm/MateriaTemplate.html index 2207628f5..01a9211ad 100644 --- a/sapl/templates/protocoloadm/MateriaTemplate.html +++ b/sapl/templates/protocoloadm/MateriaTemplate.html @@ -2,28 +2,36 @@ {% load i18n common_tags%} {% block base_content %} - - -
- -
-
- Imprimir Etiqueta -
-
- Imprimir Comprovante -
+ - -
- -
- Continuar +
+
+
+ + Imprimir Etiqueta + +
+
+ + Imprimir Comprovante + +
+ +
+ {% if not protocolo_materia %} + Criar Matéria + {% endif %} +
+
+ Continuar +
-
{% endblock base_content %} diff --git a/sapl/templates/protocoloadm/protocolo_mostrar.html b/sapl/templates/protocoloadm/protocolo_mostrar.html index b5e7328e0..48113c165 100644 --- a/sapl/templates/protocoloadm/protocolo_mostrar.html +++ b/sapl/templates/protocoloadm/protocolo_mostrar.html @@ -18,7 +18,7 @@ {% if protocolo.tipo_processo == 0 %} Interessado: {{ protocolo.interessado|default_if_none:"Não informado" }}
{% elif protocolo.tipo_processo == 1 %} - Autor:{{ protocolo.autor.nome|default_if_none:"Não informado" }}
+ Autor: {{ protocolo.autor.nome|default_if_none:"Não informado" }}
{% endif %} Natureza do Processo: {% if protocolo.tipo_processo == 0 %} Administrativo {% elif protocolo.tipo_processo == 1 %} Legislativo {% endif %}