Roteiro de implantação

Abaixo estão os passos gerais para implantação da NFS-e em seu sistema.

Antes de começar

Antes de começar a usar a Library em seu sistema, recomendamos que: 

  • Leia o manual de integração fornecido pela prefeitura para conhecer o funcionamento do projeto e principalmente o layout da NFS-e da prefeitura, pois muitas vezes existem diferenças no layout em relação ao padrão da ABRASF;
  • Leia o manual complementar (se houver) fornecido pela prefeitura;
  • Providencie um certificado digital válido. Alguns provedores de serviço permitem o uso de qualquer certificado digital em ambiente de homologação, mesmo que o certificado não seja do emissor da NFS-e. Em outros provedores somente é permitido o uso do certificado do próprio emissor, mesmo que em ambiente de homologação;
  • Providencie o credenciamento para emissão da NFS-e. Em vários provedores, mesmo para emissão em ambiente de homologação, é necessário solicitar o credenciamento junto à prefeitura;
  • Faça a configuração da NFSeLibrary em sua Workspace conforme especificado no tópico Configuração

Passo-a-passo

1 - Gerar o lote RPS assinado

Para geração e assinatura do arquivo XML de lote de RPS, a NFSeLibrary fornece a função NFSeGeraLoteRPS. Dentre os parâmetros que devem ser passados para esta função, o mais importante é uma variável do tipo tNFSeRPS. O tipo tNFSeRPS é uma estrutura que contém todos os dados de um RPS. A estrutura foi criada para acomodar os campos de todas as prefeituras homologadas. Existem campos que são usados por algumas prefeituras e outros que não são. Por isso verifique o manual da respectiva prefeitura ao fazer o preenchimento da estrutura.

A estrutura tNFSeRPS está definida no pacote NFSeStructs.pkg. O Code Complete do Visual DataFlex Studio 12.0 ou superior facilita o preenchimento da estrutura, pois exibe os campos existentes conforme demonstrado na imagem que segue: 

Code Complete

A NFSeLibrary é fornecida com uma Workspace de Exemplo que demonstra o preenchimento da estrutura e chamada da função NFSeGeraLoteRPS. Consulte o pacote NFSeGeraTXTRPSExemplo.pkg.

Observações

  • No caso das prefeituras atendidas pelo provedor DSF, a geração do lote é feita através da função NFSeGeraLoteRPSDSF, que funciona de forma análoga à função NFSeGeraLoteRPS.
  • No caso das prefeituras que usam a versão 2.0 do padrão ABRASF, utilize a função NFSeGeraLoteRPS_V2.

2 - Enviar o lote RPS

Uma vez gerado o arquivo XML do lote RPS, a próxima etapa é enviar o lote para o provedor da prefeitura. Para o envio a NFSeLibrary fornece a função NFSeEnviaLoteRPS. Verifique a documentação da mesma para mais detalhes.

Para prefeituras que trabalham com a versão 2.0 do padrão ABRASF, utilize a função NFSeGeraNFSe_V2. Esta função é síncrona e seu retorno já indicará se a NFS-e foi gerada ou não, não sendo necessária nenhuma etapa adicional.

3 - Consultar a situação do lote

Este passo não é necessário nas prefeituras que são atendidas pelo provedor DSF (ou que adotam o seu padrão), prefeituras que usam a versão 2.0 da ABRASF e na prefeitura de São Paulo/SP, pois não existe a funcionalidade de consulta de situação. 

Para fazer a consulta da situação do lote a NFSeLibrary fornece a função NFSeConsultaSituacaoLoteRPS. É necessário informar o código do recibo de envio que foi obtido no passo (2). Os códigos de retorno da consulta da situação podem ser: 

  1. Não recebido; 

  2. Não processado; 

  3. Processado com erro; 

  4. Processado com sucesso. 

Se o código de retorno for 1 significa que houve algum erro no processo de envio e o provedor não recebeu o lote. Neste caso retorne ao passo (2). 

Se o código de retorno for 2 significa que ainda não houve tempo hábil do provedor processar o lote recebido. Neste caso aguarde alguns instantes e faça uma nova consulta.

Se o código de retorno for 3 ou 4, siga para o passo seguinte (4). 

4 - Consultar o lote processado

A consulta do lote processado é feita com a função NFSeConsultaLoteRPS.

Se o lote foi processado com sucesso esta função devolverá o número da NFS-e gerada e o código de verificação que garante sua autenticidade para consultas no portal do provedor/prefeitura. 

Se o lote foi processado com erro esta função devolverá detalhes do erro que causou o não processamento/rejeição para que o RPS possa ser corrigido e uma nova tentantiva seja feita.

5 - O lote foi processado com sucesso e agora?

A rigor, se o lote foi processado com sucesso não é necessário fazer mais nada. O provedor se encarregará de enviar um e-mail para o tomador do serviço com um link onde ele poderá visualizar e/ou imprimir a NFS-e, se assim desejar. 

Não existe exigência legal para a impressão da NFS-e, mas se você desejar fazê-la, imprima através do portal do provedor do serviço. Você pode fornecer um botão em sua aplicação que abra diretamente o link do provedor do serviço posicionando a NFS-e desejada. Consulte a documentação/suporte do seu provedor para verificar como construir este link. Abaixo estão alguns exemplos: 

  • GINFES: http://{prefeitura}.ginfes.com.br/birt/frameset?__report=nfe_ginfes.rptdesign&cdVerificacao={sCdVerificao}&numNota={sNrNota}
  • TIPLAN: https://nfse.americana.sp.gov.br/nfse.aspx?ccm={IM}&nf={sNrNota}&cod={sCdVerificao}
  • Prefeitura de São Paulo/SP: https://nfe.prefeitura.sp.gov.br/contribuinte/notaprint.aspx?inscricao={IM}&nf={sNrNota}&verificacao={sCdVerificacao}

Onde:

  • {prefeitura} é o nome da prefeitura atendida pelo GINFES. Exemplo: guarulhos 

  • {sCdVerificao} é o código de verificação da NFS-e (sem o traço, se houver) 

  • {sNrNota} é o número da NFS-e 

  • {IM} é a inscrição municipal do prestador, sem espaços e caracteres de formatação 

Se for necessário cancelar uma NFS-e emitida, utilize a função NFSeCancelarNFSe