diff --git a/sapl/protocoloadm/forms.py b/sapl/protocoloadm/forms.py index 7d00d8090..fbac3cf6c 100644 --- a/sapl/protocoloadm/forms.py +++ b/sapl/protocoloadm/forms.py @@ -412,6 +412,8 @@ class ProtocoloMateriaForm(ModelForm): if self.is_valid(): if data['vincular_materia'] == 'True': try: + if not data['ano_materia'] or not data['numero_materia']: + raise ValidationError('Favor informar o número e ano da matéria a ser vinculada') self.materia = MateriaLegislativa.objects.get(ano=data['ano_materia'], numero=data['numero_materia'], tipo=data['tipo_materia']) diff --git a/sapl/protocoloadm/views.py b/sapl/protocoloadm/views.py index 47b875753..17c1c9ab7 100644 --- a/sapl/protocoloadm/views.py +++ b/sapl/protocoloadm/views.py @@ -289,17 +289,21 @@ class ProtocoloDocumentoView(PermissionRequiredMixin, return self.render_to_response(self.get_context_data()) if numeracao == 'A': - numero = Protocolo.objects.filter( - ano=timezone.now().year).aggregate(Max('numero')) + numero = MateriaLegislativa.objects.filter( + ano=timezone.now().year, tipo=tipo).aggregate(Max('numero')) elif numeracao == 'L': - legislatura = Legislatura.objects.first() + 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 - numero = Protocolo.objects.filter( - data__gte=data_inicio, data__lte=data_fim).aggregate( - Max('numero')) + numero = MateriaLegislativa.objects.filter( + data_apresentacao__gte=data_inicio, + data_apresentacao__lte=data_fim, + tipo=tipo).aggregate( + Max('numero')) elif numeracao == 'U': - numero = Protocolo.objects.all().aggregate(Max('numero')) + numero = MateriaLegislativa.objects.filter(tipo=tipo).aggregate(Max('numero')) f.tipo_processo = '0' # TODO validar o significado f.anulado = False @@ -414,7 +418,6 @@ class ProtocoloMateriaView(PermissionRequiredMixin, CreateView): 'pk': protocolo.pk}) def form_valid(self, form): - try: numeracao = sapl.base.models.AppConfig.objects.last( ).sequencia_numeracao @@ -431,17 +434,21 @@ class ProtocoloMateriaView(PermissionRequiredMixin, CreateView): numeracao = tipo.sequencia_numeracao if numeracao == 'A': - numero = Protocolo.objects.filter( - ano=timezone.now().year).aggregate(Max('numero')) + numero = MateriaLegislativa.objects.filter( + ano=timezone.now().year, tipo=tipo).aggregate(Max('numero')) elif numeracao == 'L': - legislatura = Legislatura.objects.first() + 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 - numero = Protocolo.objects.filter( - data__gte=data_inicio, data__lte=data_fim).aggregate( - Max('numero')) + numero = MateriaLegislativa.objects.filter( + data_apresentacao__gte=data_inicio, + data_apresentacao__lte=data_fim, + tipo=tipo).aggregate( + Max('numero')) elif numeracao == 'U': - numero = Protocolo.objects.all().aggregate(Max('numero')) + numero = MateriaLegislativa.objects.filter(tipo=tipo).aggregate(Max('numero')) if numeracao is None: numero['numero__max'] = 0 @@ -469,11 +476,12 @@ class ProtocoloMateriaView(PermissionRequiredMixin, CreateView): protocolo.save() data = form.cleaned_data - materia = MateriaLegislativa.objects.get(ano=data['ano_materia'], - numero=data['numero_materia'], - tipo=data['tipo_materia']) - materia.numero_protocolo = protocolo.numero - materia.save() + if data['vincular_materia'] == 'True': + materia = MateriaLegislativa.objects.get(ano=data['ano_materia'], + numero=data['numero_materia'], + tipo=data['tipo_materia']) + materia.numero_protocolo = protocolo.numero + materia.save() return redirect(self.get_success_url(protocolo))