Considerações Iniciais
Este manual tem como objetivo propiciar
o Sistema de Automação Comercial a realizar a integração com o sistema de
nota fiscal digital através do Web services.
Descrição dos serviços
O endereço de produção (notas reais) http://www.brgov.com.br/wsnfd/serviconfd.asmx?WSDL contém a descrição do serviço que deve ser consumido passando os parâmetros detalhados. O ambiente de homologação será passado via e-mail
OBS.: Ambos os ambientes necessitam de uma liberação para envio da nota.
EnviarNota
O método EnviarNota retorna uma string como resposta, esta string pode contém o código de autenticidade da nota, quando a mesma foi processada com sucesso, ou uma mensagem com a descrição do erro. Para saber quando houve sucesso ou erro no processamento da nota veja abaixo:
Quando o retorno é positivo o conteúdo da string começa com o numero 1 que indica sucesso no processamento e logo após o cod. de autenticidade da nota, segue exemplo:
1-MOPD33J.POA234J.OI5WR465.098KJDDW
EnviarNotaRetornaurlNota
O método EnviarNotaRetornaurlNota retorna uma string como resposta, esta string pode contém a URL para impressão da nota, quando a mesma foi processada com sucesso, ou uma mensagem com a descrição do erro. Para saber quando houve sucesso ou erro no processamento da nota veja abaixo:
Quando o retorno é positivo o conteúdo da string começa com o numero 1 que indica sucesso no processamento e logo após a URL de impressão. Segue exemplo:
1-http://www.brgov.com.br/nfd2010/WebPages/Nfd/Usuarios/NotaFiscalImpressao.aspx?p=9999&a=MOO5D33JPOA2378TROI5WR465098KJDFRT&n=99
Caso a nota seja impressa pelo sistema de automação o cod. de autenticidade deve ser incluido na impressão.
Ambos os métodos possui 4 parametros que devem ser informados: .
Parâmetro |
Tipo |
|
codPrefeitura |
inteiro |
Código da Prefeitura (ver lista de prefeituras). |
notaFiscal |
String |
|
cnpjPrestador |
String |
|
senhaNFD |
String |
|
Lista de Prefeituras
Código | Prefeitura | Lista de Atividades |
3150 |
Prefeitura de Rio das Pedras/SP |
Clique aqui |
0044 |
Prefeitura de Piracaia/SP |
Clique aqui |
3039 |
Prefeitura de Ipeúna/SP |
Clique aqui |
Estrutura da Nota Fiscal
Tag
Tipo
NUMERO_NOTA
inteiro
Número da nota fiscal, deve ser sequencial
e não repetir.
DATA_EMISSAO
Date
Data de emissão da nota fiscal, não
pode ser maior que a data de hoje ou menor que a data da última nota.
CODIGO_GERAL_ATIVIDADE
String
Código da geral atividade, no caso
do município de Piracaia e Ipeúna deve ser em branco, nos outros casos
deve contém o código geral da atividade.
CODIGO_ATIVIDADE
String
No caso do munícipio de Piracaia
e Ipeúna deve contém o código da atividade da nota em questão que está no site
da Nota Fiscal Digital em "Minhas Atividades". A atividade principal está no cadastro do Contribuinte e, caso não esteja em "Minhas Atividades", deve ser solicitado a Prefeitura o
cadastramento desta atividade na lista de atividade do Contribuinte. Nos demais municípios deve ser em branco.
OUTRAS_INFORMACOES
String
Outras informações relativas a nota, para salto de linha informar "\r\n", limitado a 10 linhas e cada linha com no máximo 85 caracteres.
DESCRICAO_SERVICOS
String
Descrição dos serviços prestados, para salto de linha informar "\r\n", para mais de um espaço em branco informar "&" + "nbsp;", tudo junto, para cada espaço.
VALOR_TOTAL_NOTA
Valor
Valor total da nota, deve possuir virgula
separando o decimal e não possuir separador de milhar ex: 1000,00 (Mil reais), sempre
deve possuir um valor.
STATUS_ISS_NOTA
inteiro
Status da nota:
IRRF
Valor
IRRF deve possuir virgula separando
o decimal e não conter separador de milhar ex: 1000,00 (Mil reais), sempre deve
possuir um valor.
INSS
Valor
INSS deve possuir virgula separando
o decimal e não possuir separador de milhar ex: 1000,00 (Mil reais), sempre deve
possuir um valor.
PIS
Valor
PIS deve possuir virgula separando
o decimal e não possuir separador de milhar ex: 1000,00 (Mil reais), sempre deve
possuir um valor.
COFINS
Valor
COFINS deve possuir virgula separando
o decimal e não possuir separador de milhar ex: 1000,00 (Mil reais), sempre deve
possuir um valor.
CONTRIBUICAO_SOCIAL
Valor
Contribuição social deve possuir virgula
separando o decimal e não possuir separador de milhar ex: 1000,00 (Mil reais), sempre
deve possuir um valor.
VALOR_LIQUIDO
Valor
Valor líquido deve possuir virgula
separando o decimal e não possuir separador de milhar ex: 1000,00 (Mil reais), sempre
deve possuir um valor.
VALOR_DEDUCAO_MATERIAIS
Valor
Valor dedução material deve possuir
virgula separando o decimal e não possuir separador de milhar ex: 1000,00 (Mil reais),
sempre deve possuir um valor. Este valor pode tem um limite variavel de acordo com
cada Prefeitura
COD_MUNICIPIO_EXECUCAO_SERVICO
inteiro
Código do município de execução do
serviço, caso o serviço seja executado em outro município (Clique
aqui para baixar a lista de Municípios IBGE)
LOCAL_EXECUCAO_SERVICO
String
Local de execução do serviço, caso
o serviço seja executado em outro local
TOMADOR_ESTRANGEIRO
String
Tomador estrangeiro, caso o tomador
do serviço seja estrangeiro o documento do mesmo não será validado, conteúdo S =
Sim ou N = Não
TOMADOR_DOCUMENTO
inteiro
Tomador documento, CNPJ/CPF/DOC do
tomador.
TOMADOR_RAZAO
String
Tomador razão, razão/nome do tomador.
TOMADOR_LOGRADOURO
String
Tomador logradouro, logradouro do
tomador.
TOMADOR_BAIRRO
String
Tomador bairro, bairro do tomador.
TOMADOR_CEP
String
Tomador CEP, CEP do tomador.
TOMADOR_INSCRICAO_ESTADUAL
String
Tomador I.E., Inscrição estadual do
tomador, podendo ser em branco/vazio ou isento.
TOMADOR_INSCRICAO_MUNICIPAL
String
Tomador I.M., Inscrição municipal
do tomador, podendo ser em branco/vazio ou isento.
TOMADOR_EMAIL
String
Tomador email, email do tomador, podendo
ser em branco/vazio.
TOMADOR_TELEFONE
String
Tomador telefone, telefone do tomador,
podendo ser em branco/vazio
TOMADOR_MUNICIPIO
Inteiro
Tomador município, município do tomador
(Clique aqui para baixar a lista de Municípios
IBGE)
ALIQUOTA
Valor
Aliquota, porcentagem(%) aplicada
na nota.
PORCENTAGEM_REGIME_ESPECIAL
Valor
Porcentagem regime especial, caso
o contribuinte seja imune/insento/estimativa... de ISS junto a prefeitura, deve
ser informado esta porcentagem(%), caso não seja o caso deve ser zero(0)
1 = Normal
3 = Retida
4 = Simples Nacional
6 = M.E.I Micro Empresa Individual
7 = Iss Devido Fora Do Município
Referente a execução do serviço: Caso o serviço seja executado em um Município diferente do Município do tomador e do prestador, o imposto deve ser recolhido/retido onde o serviço foi executado, sendo assim deve ser informado neste dois campos o endereço do local e o cod. Ibge (mesma lista enviada anteriormente) do município em questão, se a nota não se encaixar neste caso deve-se deixar ambos os campos em branco porém ambos devem estar no arquivo.
Referente a tomador estrangeiro: Quando
o tomador é estrangeiro o mesmo não possui documentos de indentificação nacional,
portanto deve-se enviar "S" no campo TOMADOR_ESTRANGEIRO, lembrando que o campo
Clique aqui para visualizar um exemplo da nota fiscal. Todos os campos/tags devem estar na estrutura da nota
Exemplo de Request para o WebService (C#)
string soapStr = @" <soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/""> <soap:Body> <EnviarNota xmlns=""http://brgov.com.br/""> <codPrefeitura>3150</codPrefeitura> <notaFiscal><![CDATA[ <NOTA> <NUMERO_NOTA>6053</NUMERO_NOTA> <DATA_EMISSAO>21/05/2016</DATA_EMISSAO> <CODIGO_GERAL_ATIVIDADE>09.00</CODIGO_GERAL_ATIVIDADE> <CODIGO_ATIVIDADE/> <OUTRAS_INFORMACOES>NOTA FISCAL DE PRESTAÇÃO DE SERVIÇOS</OUTRAS_INFORMACOES> <DESCRICAO_SERVICOS>DESCRIÇÃO DO SERVIÇO</DESCRICAO_SERVICOS> <VALOR_TOTAL_NOTA>440,00</VALOR_TOTAL_NOTA> <STATUS_ISS_NOTA>1</STATUS_ISS_NOTA> <IRRF>0,00</IRRF> <INSS>0,00</INSS> <PIS>0,00</PIS> <COFINS>0,00</COFINS> <CONTRIBUICAO_SOCIAL>0,00</CONTRIBUICAO_SOCIAL> <VALOR_LIQUIDO>440,00</VALOR_LIQUIDO> <VALOR_DEDUCAO_MATERIAIS>0,00</VALOR_DEDUCAO_MATERIAIS> <COD_MUNICIPIO_EXECUCAO_SERVICO>3550407</COD_MUNICIPIO_EXECUCAO_SERVICO> <LOCAL_EXECUCAO_SERVICO>LOCAL EXECUÇÃO</LOCAL_EXECUCAO_SERVICO> <TOMADOR_ESTRANGEIRO>N</TOMADOR_ESTRANGEIRO> <TOMADOR_DOCUMENTO>00000000000</TOMADOR_DOCUMENTO> <TOMADOR_RAZAO>TOMADOR RAZAO/NOME</TOMADOR_RAZAO> <TOMADOR_LOGRADOURO>LOGRADOURO</TOMADOR_LOGRADOURO> <TOMADOR_BAIRRO>BAIRRO</TOMADOR_BAIRRO> <TOMADOR_CEP>13400000</TOMADOR_CEP> <TOMADOR_INSCRICAO_ESTADUAL>ISENTO</TOMADOR_INSCRICAO_ESTADUAL> <TOMADOR_INSCRICAO_MUNICIPAL>ISENTO</TOMADOR_INSCRICAO_MUNICIPAL> <TOMADOR_EMAIL>email@email.com</TOMADOR_EMAIL> <TOMADOR_TELEFONE>1912345678</TOMADOR_TELEFONE> <TOMADOR_MUNICIPIO>3506003</TOMADOR_MUNICIPIO> <ALIQUOTA>3,00</ALIQUOTA> <PORCENTAGEM_REGIME_ESPECIAL>0</PORCENTAGEM_REGIME_ESPECIAL> </NOTA> ]]></notaFiscal> <cnpjPrestador>21118045000135</cnpjPrestador> <senhaNFD>fiscalb</senhaNFD> </EnviarNota> </soap:Body> </soap:Envelope>"; HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://www.brgov.com.br/wsnfd/ServicoNfd.asmx"); req.ContentType = "text/xml;charset=\"utf-8\""; req.Accept = "text/xml"; req.Method = "POST"; req.Headers.Add("SOAPAction", "http://brgov.com.br/EnviarNota"); using (Stream stm = req.GetRequestStream()) { using (StreamWriter stmw = new StreamWriter(stm)) { stmw.Write(soapStr); } } using (StreamReader responseReader = new StreamReader(req.GetResponse().GetResponseStream())) { string result = responseReader.ReadToEnd(); } |
O que é Web services
É uma solução utilizada na integração de sistemas e na comunicação entre aplicações diferentes. Com esta tecnologia é possível que novas aplicações possam interagir com aquelas que já existem e que sistemas desenvolvidos em plataformas diferentes sejam compatíveis.
Muitos consideram que os Web services corrigem um grande problema da informática, a falta de integração de sistemas. Os Web services permitem que a integração de sistemas seja realizada de maneira compreensível, reutilizável e padronizada. É uma tentativa de organizar um cenário cercado por uma grande variedade de diferentes aplicativos, fornecedores e plataformas.
Quais as tecnologias envolvidas
As bases para a construção de um Web Service são os padrões XML (eXtensible Markup Language) e SOAP (Simple Object Access Protocol). O transporte dos dados é realizado normalmente via protocolo HTTP ou HTTPS para conexões seguras (o padrão não determina o protocolo de tranSporte). Os dados são transferidos no formato XML, encapsulados pelo protocolo SOAP. Os serviços disponíveis são descritos usando a linguagem WSDL (Web Services Description Language).
Considerações Finais
A transmissão deve ser na emissão da nota.
Este material foi desenvolvido com o intuito de sanar as necessidades existentes até o momento, dúvidas, sugestões ou comentários que venham contribuir para o enriquecimento deste material será bem vinda através do contato suporte@systembrasil.net.br