Repository: interlegis/sapl

Issue:
Data de anexação posterior à data de desanexação em Documentos Anexados em Lote
<!--- Forneça um resumo geral da _issue_ no título acima -->

## Comportamento Esperado
<!--- Se você está descrevendo um _bug_, conte-nos o que deveria acontecer. -->
<!--- Se você está sugerindo uma mudança/melhoria, conte-nos como deve funcionar. -->
Impedir que documentos anexados em lote sejam salvos (CREATE) com data de anexação posterior à data de desanexação.

## Comportamento Atual
<!--- Se está descrevendo um bug, conte-nos o que acontece em vez do comportamento esperado. -->
<!--- Se está sugerindo uma mudança/melhoria, explique a diferença com o comportamento atual. -->
É possível salvar documentos anexados em lote com data de anexação posterior à data de desanexação.

## Possível Solução
<!--- Não é obrigatório, mas sugira uma possível correção/razão para o bug -->
<!--- ou ideias de como implementar a adição/mudança. -->
Implementar o que foi aplicado no commit https://github.com/interlegis/sapl/commit/c8254d4d69a2e7920018135136dec6a1a6a34e10



Discussion:

Resolving patch:
diff --git a/sapl/protocoloadm/forms.py b/sapl/protocoloadm/forms.py
--- a/sapl/protocoloadm/forms.py
+++ b/sapl/protocoloadm/forms.py
@@ -811,8 +811,8 @@ def clean(self):
         data_desanexacao = cleaned_data['data_desanexacao'] if cleaned_data['data_desanexacao'] else data_anexacao
 
         if data_anexacao > data_desanexacao:
-            self.logger.error("A data de anexação não pode ser posterior a data de desanexação.")
-            raise ValidationError(_("A data de anexação não pode ser posterior a data de desanexação."))
+            self.logger.error("Data de anexação posterior à data de desanexação.")
+            raise ValidationError(_("Data de anexação posterior à data de desanexação."))
         try:
             self.logger.info(
                 "Tentando obter objeto DocumentoAdministrativo (numero={}, ano={}, tipo={})."
diff --git a/sapl/protocoloadm/views.py b/sapl/protocoloadm/views.py
--- a/sapl/protocoloadm/views.py
+++ b/sapl/protocoloadm/views.py
@@ -1046,11 +1046,6 @@ def get_context_data(self, **kwargs):
 
     def post(self, request, *args, **kwargs):
         marcados = request.POST.getlist('documento_id')
-
-        if len(marcados) == 0:
-            msg =_('Nenhum documento foi selecionado')
-            messages.add_message(request, messages.ERROR, msg)
-            return self.get(request, self.kwargs)
         
         data_anexacao = datetime.strptime(
             request.POST['data_anexacao'], "%d/%m/%Y"
@@ -1058,10 +1053,27 @@ def post(self, request, *args, **kwargs):
 
         if request.POST['data_desanexacao'] == '':
             data_desanexacao = None
+            v_data_desanexacao = data_anexacao
         else:
             data_desanexacao = datetime.strptime(
                 request.POST['data_desanexacao'], "%d/%m/%Y"
             ).date()
+            v_data_desanexacao = data_desanexacao
+
+        if len(marcados) == 0:
+            msg =_('Nenhum documento foi selecionado')
+            messages.add_message(request, messages.ERROR, msg)
+            
+            if data_anexacao > v_data_desanexacao:
+                msg=_('Data de anexação posterior à data de desanexação.')
+                messages.add_message(request, messages.ERROR, msg)
+            
+            return self.get(request, self.kwargs)
+
+        if data_anexacao > v_data_desanexacao:
+            msg =_('Data de anexação posterior à data de desanexação.')
+            messages.add_message(request, messages.ERROR, msg)
+            return self.get(request, messages.ERROR, msg)
 
         principal = DocumentoAdministrativo.objects.get(pk = kwargs['pk'])
         for documento in DocumentoAdministrativo.objects.filter(id__in = marcados):


Test patch: