Repository: interlegis/sapl

Issue:
Código de documento vazio ao trocar opção na aplicação
<!--- Forneça um resumo geral da _issue_ no título acima -->

## Comportamento Esperado
Ao ir em Tabelas Auxiliares >Configurações da Aplicação, mudar opção "Protocolar proposição somente com recibo? " de Sim para Não , constar o código do documento nas proposições já inseridas no sistema.

## Comportamento Atual
Ao mudar a opção acima , não consta o código do documento na visão , assim impedindo o recebimento da mesma

## Passos para Reproduzir (para bugs)
<!--- Forneça um link para um exemplo, ou um conjunto de passos inequívocos -->
<!--- para reproduzir esse bug. Inclua código para reproduzir, se relevante. -->
1. Enviar proposição com a opção "Protocolar proposição somente com recibo? " Sim
2.Trocar a opção para "Protocolar proposição somente com recibo? " Não

## Imagens do Ocorrido
![image](https://user-images.githubusercontent.com/1524415/51849609-3dcb7d00-2307-11e9-85d1-3c0603868005.png)


## Seu Ambiente
<!--- Inclua detalhes relevantes sobre o ambiente em que você presenciou/experienciou o bug. -->
* Versão usada (_Release_): 3.1.142
* Nome e versão do navegador: Google Chrome
* Nome e versão do Sistema Operacional (desktop ou mobile): Windows 10

Código de documento vazio ao trocar opção na aplicação
<!--- Forneça um resumo geral da _issue_ no título acima -->

## Comportamento Esperado
Ao ir em Tabelas Auxiliares >Configurações da Aplicação, mudar opção "Protocolar proposição somente com recibo? " de Sim para Não , constar o código do documento nas proposições já inseridas no sistema.

## Comportamento Atual
Ao mudar a opção acima , não consta o código do documento na visão , assim impedindo o recebimento da mesma

## Passos para Reproduzir (para bugs)
<!--- Forneça um link para um exemplo, ou um conjunto de passos inequívocos -->
<!--- para reproduzir esse bug. Inclua código para reproduzir, se relevante. -->
1. Enviar proposição com a opção "Protocolar proposição somente com recibo? " Sim
2.Trocar a opção para "Protocolar proposição somente com recibo? " Não

## Imagens do Ocorrido
![image](https://user-images.githubusercontent.com/1524415/51849609-3dcb7d00-2307-11e9-85d1-3c0603868005.png)


## Seu Ambiente
<!--- Inclua detalhes relevantes sobre o ambiente em que você presenciou/experienciou o bug. -->
* Versão usada (_Release_): 3.1.142
* Nome e versão do navegador: Google Chrome
* Nome e versão do Sistema Operacional (desktop ou mobile): Windows 10



Discussion:

Resolving patch:
diff --git a/sapl/base/views.py b/sapl/base/views.py
--- a/sapl/base/views.py
+++ b/sapl/base/views.py
@@ -32,12 +32,12 @@
 from sapl.base.models import Autor, TipoAutor
 from sapl.comissoes.models import Reuniao, Comissao
 from sapl.crud.base import CrudAux, make_pagination
-from sapl.materia.models import (Autoria, MateriaLegislativa,
+from sapl.materia.models import (Autoria, MateriaLegislativa, Proposicao,
                                  TipoMateriaLegislativa, StatusTramitacao, UnidadeTramitacao)
 from sapl.norma.models import (NormaJuridica, NormaEstatisticas)
 from sapl.sessao.models import (PresencaOrdemDia, SessaoPlenaria,
                                 SessaoPlenariaPresenca)
-from sapl.utils import (parlamentares_ativos,
+from sapl.utils import (parlamentares_ativos, gerar_hash_arquivo, SEPARADOR_HASH_PROPOSICAO,
                         show_results_filter_set, mail_service_configured)
 
 from .forms import (AlterarSenhaForm, CasaLegislativaForm,
@@ -1078,10 +1078,28 @@ class AppConfigCrud(CrudAux):
 
     class BaseMixin(CrudAux.BaseMixin):
         form_class = ConfiguracoesAppForm
-
         list_url = ''
         create_url = ''
 
+        def form_valid(self, form):
+            recibo_prop_atual = AppConfig.objects.last().receber_recibo_proposicao
+            recibo_prop_novo = self.request.POST['receber_recibo_proposicao']
+            if recibo_prop_novo == 'False' and recibo_prop_atual:
+                props = Proposicao.objects.filter(hash_code='')
+                for prop in props:
+                    self.gerar_hash(prop)
+            return super().form_valid(form)
+
+        def gerar_hash(self, inst):
+            inst.save()
+            if inst.texto_original:
+                inst.hash_code = gerar_hash_arquivo(
+                    inst.texto_original.path, str(inst.pk))
+            elif inst.texto_articulado.exists():
+                ta = inst.texto_articulado.first()
+                inst.hash_code = 'P' + ta.hash() + SEPARADOR_HASH_PROPOSICAO + str(inst.pk)
+            inst.save()
+
     class CreateView(CrudAux.CreateView):
 
         def get(self, request, *args, **kwargs):


Test patch: