NFS-e

Já estou há algum tempo desenvolvendo sistemas de integração de NFS-e e devido ao pouco material disponível na web sobre Nota Fiscal de Serviço estou criando este tópico afim de sanar (quando dentro do meu alcance) as dúvidas daqueles que por ventura se encontram em dificuldades e ao mesmo tempo ser ajudado por aqueles que se dispuserem. Grato.

To contigo!!!

Estou lutando a cerca de 1 semana com todo o universo das NFes justamente
para poder resolver um problema de uma empresa relacionado às NFS-e.

Pelo que entendi, como as NFSe são apenas em âmbito municipal, cada uma
das pm acaba criando seu próprio layout. Alguns bem simples, outros mais
complexos.

Algumas disponibilizam webservices bem completos. No caso específico da
minha cidade, disponibilizam enormes recursos, mas fornecem as notas cadastradas
em um estranho formato txt.

Então, a principio, peguei o layout desse txt e criei classes para leitura e separação
dos dados e a partir desses dados estou gerando XMLs por que a empresa precisa
deles para o programa de escrita fiscal importar. (O programa não consegue importar
o txt).

Na luta para fazer isso, acabei lidando com schemas, xsds, wsdls, jaxb e tudo mais.

Vou ficar a disposição se alguém tiver uma sugestão ou dúvida que envolva este tópico.

T+

Caras, já tem muitos tópicos relacionados a esse assunto aqui no Fórum, se derem um procurada irão achar. Recomendam que leiam o manual da NF-e de seus respectivos municipios, sei que esse material é ruim mas ele ajuda. A uns meses atras eu passei por essa luta e consegui com ajuda aqui do fórum. Boa sorte pra vcs, e qualquer duvida estamos ai para ajudar!

Até sei que tem muito, mas muito tópico mesmo de NFe.

Mas o que o criador do tópico está propondo é algo novo sobre as NFSe.

Embora, é claro, que no fundo, tudo que é falado sobre NFe, pode ser usado com alguma adaptacao para NFSe.

Mas vale a pena, de repente, discutir algo que possa ser genérico, uma forma de criar algo diferente que
facilite para aqueles de tantos municipios diferentes que temos.

Na minha cidade, que nem é tão pequena, tem um problema básico. A PM disponibilizou um ws fantastico,
mas quem pede a lista de Notas recebe um txt que precisa ser adaptado para XMLs para ser importado
nos ERPs.

Imagine quantas coisas diferentes aparecerão em cada cidade desse país.

Acho que vale a pena manter o tópico.

Vamos ver o que o criador está propondo. Afinal ele não se manifestou depois que foram postas as primeiras
respostas.

JoaoBluSCBR, a proposta é essa mesmo. Quando comecei a desenvolver soluções para envio de NFS-e encontrei muita coisa sobre NF-e mas muito pouco sobre NFS-e. Cada estado mantém um serviço distinto com suas características únicas e invariavelmente um péssimo suporte. A idéia é trocarmos informações sobre estas peculiaridades que podem, e de fato tomam uma parcela valiosa do tempo de desenvolvimento. Por exemplo: uma empresa chamada Ginfes mantém um serviço web de NFS-e para vários estados e municípios, todavia não há um padrão entre eles… invarialvelmente surgem variações que muitas das vezes nem estão documentadas, isso é fato.
Mantendo um forum sobre o assunto podemos trocar experiências que podem diminuir em muito o esforço de todos.
A minha proposta é a troca de experiências bem sucedidas entre nós, desenvolvedores, afim de facilitarmos a solução de problemas relacionados a NFS-e de vários estados/municípios que muitas vezes são simples mas que na maioria das vezes são solucionados na força bruta pela simples falta de documentação.
Grato.

Bom, para começar, posso com alguma segurança tirar dúvidas sobre o serviço de FORTALEZA, MACEIÓ E RECIFE.
Fortaleza e Maceió usam o padrão Ginfes mas cada um com as suas peculiaridades.
Recife usa o padrão wsNacional com diferenças substanciais, sendo que a principal delas é a assinatura do RPS. E é sobre isso que gostaria de postar agora.

ASSINATURA DE RPS PARA RECIFE

Em geral o padrão Ginfes não pede que o RPS seja assinado (apesar de estar no manual que isso deve ser feito) pelo menos não para Fortaleza e nem para Maceió.
No entanto Recife exige que assinemos o RPS, e isso deve ser feito seguindo os passos a seguir:

1º - Monte a string de caracteres conforme descrito no manual (https://nfse.recife.pe.gov.br/arquivos/nfews.pdf - página 32)
2º - Converta a cadeia de caracteres ASCII para bytes.
3º - Gere o HASH (array de bytes) utilizando SHA1.
4º - Assine o HASH (array de bytes) utilizando RSA-SHA1.

Código para assinar a string:

private static String gerarAssinatura(String stringConcatenada) {
        String retorno = "";
        try {
            Signature dsa = Signature.getInstance("SHA1withRSA");
            /* Initializing the object with a private key */
            dsa.initSign(privateKey);
            /* Update and sign the data */
            dsa.update(stringConcatenada.getBytes());
            byte[] sig = dsa.sign();
            sig = Base64.encodeBase64(sig);
            retorno = new String(sig);

        } catch (InvalidKeyException ex) {
            Logger.getLogger(MainSigner.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SignatureException ex) {
            Logger.getLogger(MainSigner.class.getName()).log(Level.SEVERE, null, ex);
        } catch (NoSuchAlgorithmException ex) {
            Logger.getLogger(MainSigner.class.getName()).log(Level.SEVERE, null, ex);
        }
        return retorno;
    }

Dúvidas/sugestões, escrevam.
Abraço.

Bom dia, pessoal.

Rapaz, a briga ta feia aqui. Será que alguém poderia me ajudar?
Estou implementando o envio e geração de RPS aqui pra Fortaleza, mas não consigo mais do que a mensagem de erro “E160 - Arquivo enviado fora da estrutura do arquivo XML de entrada.”.
Antes eu estava gerando o arquivo através do nosso sistema interno. Agora, sem saber mais o que tentar, eu tou gerando um arquivo na mão, bem simples, e não consigo receber outra mensagem de erro.
Eu tou usando uma aplicação em java, bem simples também, utilizando o NetBeans e aquele plugin que implementa a comunicação com o Web Service a partir do WSDL que você informa.
Fiquei feliz quando ví que o colega aí já tem alguma experiência com o município de Fortaleza.
Será que você (ou alguém) teria um arquivo exemplo que tenha funcionado? A partir desse arquivo eu poderia ajustar o meu.
Alguma considerações:

  • É preciso utilizar conexão segura mesmo para o WS de homologação? Não estou usando…
  • Não estou assinando o meu lote de RPS, até porquê eu nem sei como fazer isso…
  • O meu arquivo foi perfeitamente validado em um validador de “schema” (http://www.xmlvalidation.com).

Espero que possam me ajudar, porque eu realmente não sei mais o que fazer.

Valeu!!!

[quote=rafael.dyad]Bom dia, pessoal.

Rapaz, a briga ta feia aqui. Será que alguém poderia me ajudar?
Estou implementando o envio e geração de RPS aqui pra Fortaleza, mas não consigo mais do que a mensagem de erro “E160 - Arquivo enviado fora da estrutura do arquivo XML de entrada.”.
Antes eu estava gerando o arquivo através do nosso sistema interno. Agora, sem saber mais o que tentar, eu tou gerando um arquivo na mão, bem simples, e não consigo receber outra mensagem de erro.
Eu tou usando uma aplicação em java, bem simples também, utilizando o NetBeans e aquele plugin que implementa a comunicação com o Web Service a partir do WSDL que você informa.
Fiquei feliz quando ví que o colega aí já tem alguma experiência com o município de Fortaleza.
Será que você (ou alguém) teria um arquivo exemplo que tenha funcionado? A partir desse arquivo eu poderia ajustar o meu.
Alguma considerações:

  • É preciso utilizar conexão segura mesmo para o WS de homologação? Não estou usando…
  • Não estou assinando o meu lote de RPS, até porquê eu nem sei como fazer isso…
  • O meu arquivo foi perfeitamente validado em um validador de “schema” (http://www.xmlvalidation.com).

Espero que possam me ajudar, porque eu realmente não sei mais o que fazer.

Valeu!!![/quote]

Eu postei um XML validado do GissOnline no tópico: http://www.guj.com.br/java/232774-nfs-e-para-prefeitura-de-santo-andre-resolvido#1321579

Dausdara,

Valeuzão pela ajuda, mas não rolou aqui :frowning:
Esse RPS tá no layout de Fortaleza? Retornou o mesmo erro de estrutura…
É osso, se tivesse alguma pista de o que tá errado no layout, era massa…

Desde já eu agradeço a força.

Por webservice deve ser utilizado o leiaute: Manual_Integracao_V3_GINFES.pdf

Você desenvolveu nesse leiaute?

Isso… baixei o manual no site www.issfortaleza.com.br…
Já gerei o XML foi na mão, pra diminuir a chance de ter erro na minha rotina automática.
Cara, não sei o que tá faltando. Como eu disse, não tou colocando a assinatura digital nem tou utilizando o certificado, já que é só homologação.
Esse seu arquivo é da prefeitura de fortaleza?

É do GissOnline, é padrão em todas as cidades que utilizam o Giss, tenta subir o XML direto pelo site, sem ser por webservice, e depois fale o resultado.

Deusdara,

Acho que não é exatamente assim… A maioria das prefeituras tem suas peculiaridades. É uma verdadeira esculhambação! Era pra tá tudo no padrão da ABRASF, mas não tá.
Pra você ter uma idéia, aqui em Fortaleza existe uma versão (um esquema) pra ser utilizado via WebService e outro pra ser utilizado direto pelo Gissonline :/.
Eu tinha até implementado inicialmente o esquema que é pra ser enviado direto pelo site, mas depois de pronto eu ví que eu não tinha como testar!! Aí resolvi mudar pro esquema do WebService.
Mais uma vez, obrigado!

Outra coisa que eu lembrei: no site www.issfortaleza.com.br você tem como baixar os manuais “V3”, mas quando vc pega o PDF, ele tem lá embaixo: Versão 1.0 29/12/2008!!! É osso…

[quote=rafael.dyad]Deusdara,

Acho que não é exatamente assim… A maioria das prefeituras tem suas peculiaridades. É uma verdadeira esculhambação! Era pra tá tudo no padrão da ABRASF, mas não tá.
Pra você ter uma idéia, aqui em Fortaleza existe uma versão (um esquema) pra ser utilizado via WebService e outro pra ser utilizado direto pelo Gissonline :/.
Eu tinha até implementado inicialmente o esquema que é pra ser enviado direto pelo site, mas depois de pronto eu ví que eu não tinha como testar!! Aí resolvi mudar pro esquema do WebService.
Mais uma vez, obrigado!

Outra coisa que eu lembrei: no site www.issfortaleza.com.br você tem como baixar os manuais “V3”, mas quando vc pega o PDF, ele tem lá embaixo: Versão 1.0 29/12/2008!!! É osso…[/quote]

Toda prefeitura que se utiliza do GissOnline é o mesmo padrão, o fornecedor do sistema (EICON) mantém tudo padrão, o webservice também é um sistema fornecido pela EICON, só que existe uma diferença que quando você sobe o arquivo direto pelo site se desenvolve no padrão ABRASF V2, quando é por webservice é no ABRASF V3, eu desenvolvi vários leiautes diferentes já, prefeitura de São Paulo, Barueri, padrão DSF e vários outros, e o leiaute mais simples até agora foi o do GissOnline, que é aceito em várias cidades da mesma maneira.

Cara, pois me faz só mais um favor: tem como você me mandar o XSD para envio via WebService, referente à V3 do Gissonline?
Eu já baixei tanto XSD aqui que eu não sei mais qual devo usar…

Valeu mesmo pela ajuda!

[quote=rafael.dyad]Cara, pois me faz só mais um favor: tem como você me mandar o XSD para envio via WebService, referente à V3 do Gissonline?
Eu já baixei tanto XSD aqui que eu não sei mais qual devo usar…

Valeu mesmo pela ajuda![/quote]

Valeu deusdara!

Era exatamente este que eu estava usando…
Recebi uma resposta agora do atendimento da GINFES com algumas considerações.

"Abaixo segue algumas coisas que podem ser observadas, que geralmente ocorrem neste erro:

  • O arquivo XML do cabeçalho não está respeitando o schema;

  • O método que está sendo consumido não é o correspondente ao schema (verifique versões);

  • O arquivo enviado está sofrendo alterações de charset após a validação com o schema;

  • A ordem dos parâmetros está errada (cabeçalho e arquivo)."

Vou começar do zero pra ver se dá certo… Pelo menos eu sei que eu tava no caminho certo.

Valeuzão cara!

Posta seu arquivo que te falo o que está errado.

Agradeço denovo pela ajuda!
Uma pergunta: será que com o certificado que eu gerei (com os comandos que eu vi aqui no forum) eu consigo acesso ao webservice?