wmixvideo / nfe

Nota Fiscal Eletrônica em Java.
Apache License 2.0
657 stars 379 forks source link

QR code em NFC #202

Closed andre-campos closed 8 years ago

andre-campos commented 8 years ago

Antes de mais nada, ótimo trabalho!

Acredito que eu tenha encontrado um pequeno problema na geração de QR code para NFC-e. A validação no XSD é um regex que começa com http (ou https). Mas o QR está sendo gerado sem isso no momento do envio. Consequentemente um erro de validação é lançado.

Como no meu projeto eu prefiro enviar lotes em dois passos: primeiro gerar um XML assinado e depois enviá-lo (permitindo que o usuário envie manualmente em caso de algum problema), eu consegui resolver isto adicionando manualmente o prefixo "http://" à geração do QR. Mas creio que isto possa ser um problema para quem envia diretamente.

for (final NFNota nota : loteAssinado.getNotas()) {
    switch (nota.getInfo().getIdentificacao().getModelo()) {
    case NFE:
        qtdNF++;
        break;
    case NFCE:
        final NFGeraQRCode geraQRCode = new NFGeraQRCode(nota, config);
        nota.setInfoSuplementar(new NFNotaInfoSuplementar());
        nota.getInfoSuplementar().setQrCode("http://" + geraQRCode.getQRCode());
        qtdNFC++;
        break;
    default:
        throw new IllegalArgumentException(String.format("Modelo de nota desconhecida: %s",
                nota.getInfo().getIdentificacao().getModelo()));
    }
}

Talvez seja interessante que o gerador de QR gere a URL desta forma.

andre-campos commented 8 years ago

Pelo visto meu hack não deu certo porque o hash do QR fica errado. De fato, o QR para meu estado, Amazonas, não possui https ou http:

AM("AM", "Amazonas", "13", "homnfce.sefaz.am.gov.br/nfceweb/consultarNFCe.jsp", "sistemas.sefaz.am.gov.br/nfceweb/consultarNFCe.jsp"),

Vou submeter um patch para isso. Como utilizo o maven, seria interessante atualizar o repositório com essa modificação assim que possível.

jefperito commented 8 years ago

Governo fazendo governisse...

tens alguma idéia em como resolver isso?

andre-campos commented 8 years ago

@jefperito tentei ajustar a enum, mas não deu muito certo... a SEFAZ reclamou do hash: Rejeicao: Endereco do site da UF da Consulta via QR-Code diverge do previsto Tentei inclusive usar a URL do QR de produção, mas não deu certo.

andre-campos commented 8 years ago

Fiz besteira aqui... o QR tava ficando errado porque o meu CSC e identificador do CSC estavam errados. Após a alteração da enum (com http://) como prefixo, o envio passou a funcionar.

andre-campos commented 8 years ago

Esta é a modificação que eu fiz:

diff --git a/src/main/java/com/fincatto/nfe310/classes/NFUnidadeFederativa.java b/src/main/java/com/fincatto/nfe310/classes/NFUnidadeFederativa.java
index 23b4ca7..c64aa84 100755
--- a/src/main/java/com/fincatto/nfe310/classes/NFUnidadeFederativa.java
+++ b/src/main/java/com/fincatto/nfe310/classes/NFUnidadeFederativa.java
@@ -8,7 +8,7 @@ public enum NFUnidadeFederativa {
     AC("AC", "Acre", "12", "http://hml.sefaznet.ac.gov.br/nfce/qrcode", "http://hml.sefaznet.ac.gov.br/nfce/qrcode"),
     AL("AL", "Alagoas", "27"),
     AP("AP", "Amap\u00E1", "16", "https://www.sefaz.ap.gov.br/nfcehml/nfce.php", "https://www.sefaz.ap.gov.br/nfce/nfce.php"),
-    AM("AM", "Amazonas", "13", "homnfce.sefaz.am.gov.br/nfceweb/consultarNFCe.jsp", "sistemas.sefaz.am.gov.br/nfceweb/consultarNFCe.jsp"),
+    AM("AM", "Amazonas", "13", "http://homnfce.sefaz.am.gov.br/nfceweb/consultarNFCe.jsp", "http://sistemas.sefaz.am.gov.br/nfceweb/consultarNFCe.jsp"),
     BA("BA", "Bahia", "29", "http://hnfe.sefaz.ba.gov.br/servicos/nfce/modulos/geral/NFCEC_consulta_chave_acesso.aspx", "http://nfe.sefaz.ba.gov.br/servicos/nfce/modulos/geral/NFCEC_consulta_chave_acesso.aspx"),
     CE("CE", "Cear\u00E1", "23"),
     DF("DF", "Distrito Federal", "53", "http://dec.fazenda.df.gov.br/ConsultarNFCe.aspx", "http://dec.fazenda.df.gov.br/ConsultarNFCe.aspx"),
@@ -94,4 +94,4 @@ public enum NFUnidadeFederativa {
         }
         throw new IllegalArgumentException(String.format("N\u00e3o existe o c\u00f3digo %s no mapeamento.", codigo));
     }
-}
\ No newline at end of file
+}
fincatto commented 8 years ago

Boa noite @andre-campos. Consegue fazer um PR? []s

andre-campos commented 8 years ago

@fincatto Nunca tinha feito um, por isso mandei o patch por aqui ;) Mas acabei de fazer. Valeu!

higomatos commented 8 years ago

Isto foi resolvido?

jefperito commented 8 years ago

o reporter do bug fez um PR e foi aceito, fechando