Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remoção da validação de xml para quando o envio de nfe for com xml assinado. #154

Closed
wants to merge 2 commits into from

Conversation

rafaelsunn
Copy link

@rafaelsunn rafaelsunn commented May 30, 2016

Ao enviar uma nota fiscal com xml já assinado o validador emite o seguinte erro:

org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 2806; cvc-complex-type.2.4.a: Foi detectado um conteúdo inválido começando com o elemento 'Signature'. Era esperado um dos '{"http://www.portalfiscal.inf.br/nfe":infNFeSupl}'.

Esse erro é devido o xml já possuir a tag de assinatura daí ele não consegue validar nesse caso. Nos envios com certificado A1 o xml é validado antes da assinatura assim permitindo a validação de forma correta.

@coveralls
Copy link

Coverage Status

Coverage increased (+0.01%) to 79.367% when pulling 8be1959 on fauker:master into df7839f on wmixvideo:master.

@jefperito
Copy link
Contributor

Entendi, o problema é que tira uma camada inteira de validação, nesse caso, caso tenha algum problema de formatação da informação, só terá a resposta na retorno da sefaz.

@rafaelsunn
Copy link
Author

rafaelsunn commented May 31, 2016

@jefperito entendi a sua preocupação. Existe uma classe na api chamada XMLValidador ela possui dois métodos publicos para validar o xml:

 public static boolean validaLote(final String arquivoXML) throws Exception {
        return XMLValidador.validaXml(arquivoXML, "enviNFe_v3.10.xsd");
    }

    public static boolean validaNota(final String arquivoXML) throws Exception {
        return XMLValidador.validaXml(arquivoXML, "nfe_v3.10.xsd");
    }

O programador nesse caso poderia utilizar dessa classe para realizar validação antes do envio, assim evitando exceptions do webservice da sefaz. Lembrando que isso seria necessario apenas no envio de lote/nfe já assinados.

Outra possível solução era criar um xsd semelhante ao leiauteNFe_v3.10.xsd que espere o leiaute de um arquivo já assinado. Em seguida criar um método no XMLValidator utilizando esse novo xsd para realizar validação.

@jefperito
Copy link
Contributor

Pois é, pensei na solução do xsd a parte, contendo as tags de assinatura. Se ficarem de acordo posso dar uma olhada nisso mais tarde.

@jefperito
Copy link
Contributor

A opção de validar pelo programador é boa, mas é mais um caso q ele tem q estar se preocupando.

@lucasmoreiradev
Copy link
Contributor

Conseguir adaptar o .xsd seria o ideal.

@fincatto
Copy link
Member

Acho que o XSD a ser utilizado deve ser o fornecido, senão fica muito
difícil atualizar (e manter as validações adicionadas).
Se o mesmo não contempla a assinatura, fazemos a validação antes da nota
ser assinada.
No caso de optarem por usar o método que ja envia a nota assinada, aí fica
a cargo do programador fazer essa validação.

On Tue, May 31, 2016 at 1:39 PM, Lucas Moreira notifications@github.com
wrote:

Conseguir adaptar o .xsd seria o ideal.


You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
#154 (comment), or mute
the thread
https://github.com/notifications/unsubscribe/AADj8K393e6krBWhQpOeNZZUq0DzUILYks5qHGRWgaJpZM4IqEZ8
.

@rafaelsunn
Copy link
Author

@fincatto então vamos mandar esse PR para a versão atual ? pois ele corrige o problema de não poder enviar um xml já assinado. Daí depois poderíamos cogitar uma validação automática após a criação de novos xsds.

@fincatto
Copy link
Member

Muito possivelmente.
Vou revisar ele hoje no final do dia e se tiver tudo ok já entra pra base
de código.
Quando muito, amanhã já estará disponível no maven.
[]s

2016-05-31 14:11 GMT-03:00 rafaelsunn notifications@github.com:

@fincatto https://github.com/fincatto então vamos mandar esse PR para a
versão atual ? pois ele corrige o problema de não poder enviar um xml já
assinado. Daí depois poderíamos cogitar uma validação automática após a
criação de novos xsds.


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
#154 (comment), or mute
the thread
https://github.com/notifications/unsubscribe/AADj8EFTEnCCBfeTpng8AxaQ1-e2R6lUks5qHGvHgaJpZM4IqEZ8
.

@jefperito
Copy link
Contributor

Verdade, futuramente iria gerar dor de cabeça.

@fincatto
Copy link
Member

fincatto commented Jun 1, 2016

Dei uma olhada nos xsd do projeto NFe e eles contemplam a validação com a assinatura: http://www.nfe.fazenda.gov.br/portal/listaConteudo.aspx?tipoConteudo=/fwLvLUSmU8=

Assim sendo, atualizei os arquivos no projeto e criei um branch que os utiliza, e já passado a validação para o metodo que faz o envio do lote ja assinado. Assim evitamos uma duplicidade:
https://github.com/wmixvideo/nfe/tree/validacao

Ainda farei mais testes "em produção" desse código pois, como não podemos colocar um certificado válido no projeto, fica difícil criar um teste de unidade pra isso. No entanto, se funcionar a contento, parece ser o melhor dos mundos.

Verifiquem aí e comentem. Se houver consenso nessa abordagem, faço o merge e já libero a versão.

@fincatto
Copy link
Member

fincatto commented Jun 2, 2016

Boa noite @rafaelsunn.
Você conseguiu dar uma olhada no branch "validacao"?
Assim que possível nos dê um feedback se a implementação funciona pra você do jeito que foi feita.
Att,
Diego

@fincatto fincatto closed this Jun 2, 2016
@lucasmoreiradev
Copy link
Contributor

@fincatto, baixei os branchs aqui para testarmos porém deu esse merge.

@fincatto
Copy link
Member

fincatto commented Jun 2, 2016

Já subi o código pro master, e atualizei a versão para 2.0.0-SNAPSHOT, pois houve uma pequena quebra de compatibilidade no retorno do lote assinado.
Se ainda houverem problemas com o validador aí, me comuniquem.

@rafaelsunn
Copy link
Author

@fincatto a versão para atualizar o pom vai ser 2.0.0-SNAPSHOT ?

@fincatto
Copy link
Member

fincatto commented Jun 2, 2016

Acho que estava fazendo o merge bem na hora.
Pode testar com o código no master.

On Thu, Jun 2, 2016 at 8:51 PM, Lucas Moreira notifications@github.com
wrote:

@fincatto https://github.com/fincatto, baixei os branchs aqui para
testarmos porém deu esse merge.


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
#154 (comment), or mute
the thread
https://github.com/notifications/unsubscribe/AADj8D1ZUyYbomvnZA85ihe55B22AWoaks5qH2x7gaJpZM4IqEZ8
.

@fincatto
Copy link
Member

fincatto commented Jun 2, 2016

Sim. Houve um outro merge que adicionou uma camada no retorno do envio de
lote não assinado, o que fez com que houvesse uma quebra de
compatibilidade, então subi a versão principal, conforme sugestão dos
colegas em um post passado.

On Thu, Jun 2, 2016 at 8:52 PM, rafaelsunn notifications@github.com wrote:

@fincatto https://github.com/fincatto a versão para atualizar o pom vai
ser 2.0.0-SNAPSHOT ?


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
#154 (comment), or mute
the thread
https://github.com/notifications/unsubscribe/AADj8Fq9J3ZdoiVT4kkaLYy0pgRtDrUfks5qH2y7gaJpZM4IqEZ8
.

@rafaelsunn
Copy link
Author

@fincatto realizei os testes aqui e funcionou corretamente.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants