diff --git a/sapl/sessao/forms.py b/sapl/sessao/forms.py
index 523e1cede..9b3fc1f90 100644
--- a/sapl/sessao/forms.py
+++ b/sapl/sessao/forms.py
@@ -464,6 +464,9 @@ class VotacaoForm(forms.Form):
abstencoes = forms.IntegerField(label='Abstenções')
total_presentes = forms.IntegerField(
required=False, widget=forms.HiddenInput())
+ total_votantes = forms.IntegerField(
+ required=False, widget=forms.HiddenInput()
+ )
voto_presidente = forms.IntegerField(
label='A totalização inclui o voto do Presidente?')
total_votos = forms.IntegerField(required=False, label='total')
@@ -479,15 +482,16 @@ class VotacaoForm(forms.Form):
votos_nao = cleaned_data['votos_nao']
abstencoes = cleaned_data['abstencoes']
qtde_presentes = cleaned_data['total_presentes']
+ qtde_votantes = cleaned_data['total_votantes']
qtde_votos = votos_sim + votos_nao + abstencoes
voto_presidente = cleaned_data['voto_presidente']
- if qtde_presentes and not voto_presidente:
- qtde_presentes -= 1
+ if qtde_votantes and not voto_presidente:
+ qtde_votantes -= 1
- if qtde_presentes and qtde_votos != qtde_presentes:
+ if qtde_votantes and qtde_votos != qtde_votantes:
raise ValidationError(
- 'O total de votos não corresponde com a quantidade de presentes!')
+ 'O total de votos não corresponde com a quantidade de votantes!')
return cleaned_data
diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py
index f76d1efb8..8380247cf 100755
--- a/sapl/sessao/views.py
+++ b/sapl/sessao/views.py
@@ -3620,17 +3620,41 @@ class VotacaoEmBlocoSimbolicaView(PermissionRequiredForAppCrudMixin, TemplateVie
if request.POST['origem'] == 'ordem':
ordens = OrdemDia.objects.filter(
id__in=request.POST.getlist('marcadas_1'))
- qtde_presentes = PresencaOrdemDia.objects.filter(
- sessao_plenaria_id=self.kwargs['pk']).count()
+
+ presentes_id = [
+ presente.parlamentar.id for presente in PresencaOrdemDia.objects.filter(
+ sessao_plenaria_id=self.kwargs['pk']
+ )
+ ]
+ qtde_presentes = len(presentes_id)
+
+ presenca_ativos = Parlamentar.objects.filter(
+ id__in=presentes_id, ativo=True
+ )
+ qtde_ativos = len(presenca_ativos)
+
context.update({'ordens': ordens,
- 'total_presentes': qtde_presentes})
+ 'total_presentes': qtde_presentes,
+ 'total_votantes': qtde_ativos})
else:
expedientes = ExpedienteMateria.objects.filter(
id__in=request.POST.getlist('marcadas_1'))
- qtde_presentes = SessaoPlenariaPresenca.objects.filter(
- sessao_plenaria_id=self.kwargs['pk']).count()
+
+ presentes_id = [
+ presente.parlamentar.id for presente in SessaoPlenariaPresenca.objects.filter(
+ sessao_plenaria_id=self.kwargs['pk']
+ )
+ ]
+ qtde_presentes = len(presentes_id)
+
+ presenca_ativos = Parlamentar.objects.filter(
+ id__in=presentes_id, ativo=True
+ )
+ qtde_ativos = len(presenca_ativos)
+
context.update({'expedientes': expedientes,
- 'total_presentes': qtde_presentes})
+ 'total_presentes': qtde_presentes,
+ 'total_votantes': qtde_ativos})
if 'salvar-votacao' in request.POST:
form = VotacaoForm(request.POST)
@@ -3755,17 +3779,41 @@ class VotacaoEmBlocoSimbolicaView(PermissionRequiredForAppCrudMixin, TemplateVie
if self.request.POST['origem'] == 'ordem':
ordens = OrdemDia.objects.filter(
id__in=self.request.POST.getlist('ordens'))
- qtde_presentes = PresencaOrdemDia.objects.filter(
- sessao_plenaria_id=self.kwargs['pk']).count()
+
+ presentes_id = [
+ presente.parlamentar.id for presente in PresencaOrdemDia.objects.filter(
+ sessao_plenaria_id=self.kwargs['pk']
+ )
+ ]
+ qtde_presentes = len(presentes_id)
+
+ presenca_ativos = Parlamentar.objects.filter(
+ id__in=presentes_id, ativo=True
+ )
+ qtde_ativos = len(presenca_ativos)
+
context.update({'ordens': ordens,
- 'total_presentes': qtde_presentes})
+ 'total_presentes': qtde_presentes,
+ 'total_votantes': qtde_ativos})
elif self.request.POST['origem'] == 'expediente':
expedientes = ExpedienteMateria.objects.filter(
id__in=self.request.POST.getlist('expedientes'))
- qtde_presentes = SessaoPlenariaPresenca.objects.filter(
- sessao_plenaria_id=self.kwargs['pk']).count()
+
+ presentes_id = [
+ presente.parlamentar.id for presente in SessaoPlenariaPresenca.objects.filter(
+ sessao_plenaria_id=self.kwargs['pk']
+ )
+ ]
+ qtde_presentes = len(presentes_id)
+
+ presenca_ativos = Parlamentar.objects.filter(
+ id__in=presentes_id, ativo=True
+ )
+ qtde_ativos = len(presenca_ativos)
+
context.update({'expedientes': expedientes,
- 'total_presentes': qtde_presentes})
+ 'total_presentes': qtde_presentes,
+ 'total_votantes': qtde_ativos})
context.update({'resultado_votacao': TipoResultadoVotacao.objects.all(),
'form': form,
diff --git a/sapl/templates/sessao/votacao/votacao.html b/sapl/templates/sessao/votacao/votacao.html
index 323beb060..d7320c5b1 100644
--- a/sapl/templates/sessao/votacao/votacao.html
+++ b/sapl/templates/sessao/votacao/votacao.html
@@ -39,14 +39,14 @@