You are on page 1of 16

ESPECIFICAES DLL

NFSE - Nota Fiscal de Servios Eletrnica

Especificaes dms_nfse.dll
DLL de funes para integrao de sistemas de informao de emissores RPS e o Sistema de Nota Fiscal de Servios Eletrnica(NFS-e) 1. Descrio da DLL
A dms_nfse.dll uma biblioteca de funes, que pode ser utilizada para integrao do sistema de informao dos contribuintes e o sistema WebService do portal da Nota Fiscal de Servios Eletrnica(NFS-e). Este documento destina-se apenas a desenvolvedores e contm as informaes tcnicas indispensveis ao uso da DLL dms_nfse.dll.

2. Funcionalidades
A seguir esto resumidas os mtodos disponveis na DLL da NFS-e bem como suas funcionalidades: Entrega de Arquivo de Lote de RPS Neste mtodo, os prestadores de servios atravs de seus sistemas podero enviar lotes de RPS para que sejam convertidas em NFS-e. Consulta de Lote Permite consultar as NFS-e emitidas pelo prestador atravs do nmero de lote informado. Aps o envio bem sucedido de um Lote de RPS, a DLL retorna diversas informaes, entre elas o nmero do lote processado, NFS-e geradas neste lote. Consulta de Notas Permite a consulta das NFS-e emitidas pelo prestador. Cancelamento de NFS-e O prestador poder reenviar um RPS j processado com a informao de cancelamento do RPS, o sistema ir processar novamente o RPS passando seu status para cancelado. Consulta Seqencial RPS Permite consultar o nmero do ltimo RPS convertido pelo prestador.

3. Funcionamento da Dll
1. Entrega de registros de Lote de RPS Processo ideal para converso de Lote 1. Entrega de registros de Lote de RPS A remessa de RPS se d em 5 etapas descritas abaixo: 1 ETAPA: CRIAO DA REMESSA
NFSE - Nota Fiscal de Servios Eletrnica

2 ETAPA: REGISTRO DOS RPS ( Loop que roda todos os RPS ) 3 ETAPA : GRAVA SERVIOS DA RPS. 4 ETAPA : GRAVA DEDUES DA RPS. FIM DA 2 ETAPA ( FINALIZA LOOP DA SEGUNDA ETAPA) FIM DA 1 ETAPA 5 ETAPA ENVIO DE LOTE DE RPS 6 ETAPA PEGA ERROS E ALERTAS DA REMESSA 7 ETAPA PEGA OS DADOS DAS NOTAS PROCESSADAS Tabela de funes da funcionalidade Entrega de Lote de RPS: ETAPA FUNO DESCRIO 1 CriarRemessa Cria lote de remessa, com informaes do contribuinte 2 RPSRemessa Registra os dados dos RPS da Remessa 3 RPSItem Grava os servios do RPS 4 RPSDeducao Grava as dedues do RPS 5 EnviarDeclaracao Envia o lote do RPS para o WebService da NFSe. 6 ErrosRetorno Pega os erros de retorno de processamento. 6 AlertasRetorno Pega os alertas de retorno de processamento. 7 NfseRetorno Retorna os dados das notas geradas no envio. Especificaes das funes : Funo: CriarRemessa Declarao: function CriarRemessa( CodCidade: Integer ; CPFCNPJRemetente: String; RazaoSocialRemetente: String ): Integer; Parmetros de Envio: CAMPO CodCidade TIPO N CONTEDO OBRIG. Cdigo da Cidade de Declarao do Contri- S buinte segundo padro SIAFI CPF ou CNPJ do Remetente S Razo social do remetente. S

CPFCNPJRemetente A RazaoSocialRemetente A

Funo: RPSRemessa Declarao: function RPSRemessa( InscricaoMunicipalPrestador: String ; RazaoSocialPrestador: String ; TipoRPS : String ; SerieRPS: String ; NumeroRPS : Integer ; DataEmissaoRPS : String ; SituacaoRPS : String ; SerieRPSSubstituido: String ; NumeroRPSSubstituido : Integer ; NumeroNFSeSubstituida : Integer ; DataEmissaoNFSeSubstituida : String ; SeriePrestacao: String ;

NFSE - Nota Fiscal de Servios Eletrnica

InscricaoMunicipalTomador : String ; CPFCNPJTomador : String ; RazaoSocialTomador : String ; TipoLogradouroTomador : String ; LogradouroTomador : String ; NumeroEnderecoTomador : String ; TipoBairroTomador: String ; BairroTomador : String ; CidadeTomador : Integer ; CidadeTomadorDescricao: String ; CEPTomador : String ; EmailTomador : String ; CodigoAtividade: String ; AliquotaAtividade : Double ; TipoRecolhimento : String ; MunicipioPrestacao : Integer ; MunicipioPrestacaoDescricao: String ; Operacao : String ; Tributacao : String ; ValorPIS : Double ; ValorCOFINS : Double ; ValorINSS : Double ; ValorIR : Double ; ValorCSLL : Double ; AliquotaPIS : Double ; AliquotaCOFINS : Double ; AliquotaINSS : Double ; AliquotaIR : Double ; AliquotaCSLL : Double ; DescricaoRPS : String ; DDDPrestador : String ; TelefonePrestador : String ; DDDTomador : String ; TelefoneTomador : String ; MotCancelamento : String) : Integer ; Parmetros de Envio: CAMPO InscricaoMunicipalPrestador RazaoSocialPrestador TipoRPS SerieRPS NumeroRPS TIPO TAM. CONTEDO A 11 Inscrio Municipal do Prestador Obs: Minimo de 7 caracteres Ex:0000123 A 120 Razo Social do Prestador A 20 Tipo de RPS Patro RPS A 10 Srie do RPS - Padro NF N 10 Nmero do RPS OBRIG. S S S S S

NFSE - Nota Fiscal de Servios Eletrnica

DataEmissaoRPS SituacaoRPS

D A 1

SerieRPSSubstituido

10

NumeroRPSSubstituido NumeroNFSeSubstituida

N N

10 10

DataEmissaoNFSeSubstituida D

SeriePrestacao InscricaoMunicipalTomador CPFCNPJTomador RazaoSocialTomador TipoLogradouroTomador LogradouroTomador NumeroEnderecoTomador TipoBairroTomador BairroTomador CidadeTomador CidadeTomadorDescricao CEPTomador EmailTomador CodigoAtividade

A A A A A A A A A N A A A A

5 11 14 120 50 100 9 50 50 10 50 10 60 15

Data e Hora de Emisso No formato DD/MM/YYYY HH:MM:SS Situao do RPS N-Normal C-Cancelada E - Extraviada L-Lote Srie do RPS a ser substitudo Padro NF. Se no for substituto no preencher. Nmero do RPS a ser substitudo Se no for substituto no preencher. Nmero da NFSe a ser substituda Se no for substituto no preencher. Data de Emisso da NFSe a ser substituda No formato DD/MM/YYYY Padro:01/01/1900 Srie de Prestao Padro 99 Inscrio Municipal do Tomador Obs: Quando no houver informar: 0000000 CPF ou CNPJ do Tomador Ex: 00000000191 Razo Social do Tomador Tipo de Logradouro do Tomador Padro Rua Logradouro do Tomador Numero de Endereo do Tomador Tipo de Bairro do Tomador Padro Bairro Bairro do Tomador Cdigo da Cidade do Tomador Padro SIAFI Nome da Cidade do Tomador CEP do Tomador Ex:37900000 Email do Tomador Cdigo da Atividade do RPS

S N

N S

S S S S S S S S S S S S S S

NFSE - Nota Fiscal de Servios Eletrnica

AliquotaAtividade TipoRecolhimento MunicipioPrestacao MunicipioPrestacaoDescricao Operacao Tributacao

N A N A A A

15,2 1

ValorPIS ValorCOFINS ValorINSS ValorIR ValorCSLL AliquotaPIS AliquotaCOFINS AliquotaINSS AliquotaIR AliquotaCSLL DescricaoRPS DDDPrestador TelefonePrestador DDDTomador TelefoneTomador MotCancelamento

N N N N N N N N N N A A A A A A

Alquota da Atividade Tipo de Recolhimento A A Recolher R - Retido na Fonte 10 Cdigo do Municpio de Prestao Padro SIAFI 50 Municpio de Prestao do Servio 1 Operao A-Sem Deduo B-Com Deduo/Materiais 1 Tributao C-Insentas de ISS F-Imune K-Exigibilid. Susp. Dec. J/Proc.A 15,2 Valor PIS 15,2 Valor COFINS 15,2 Valor do INSS 15,2 Valor do IR 15,4 Valor do CSLL 15,4 Alquota PIS 15,4 Alquota COFINS 15,4 Alquota INSS 15,4 Alquota IR 15,4 Alquota CSLL 1500 Descrio/ Dados Complementares do RPS 2 DDD do telefone do Prestador 10 Telefone do Prestador 2 DDD Telefone do Tomador 10 Telefone do Tomador 80 Motivo do Cancelamento

S S S S S S

N N N N N N N N N N S S S S S N

Funo: RpsItem Declarao: function RPSItem( DiscriminacaoServico: String ; Quantidade: Double ; ValorUnitario: Double ; ValorTotal: Double ): Integer; Parmetros de Envio: CAMPO DiscriminacaoServico Quantidade ValorUnitario TIPO A N N TAM. 250 10 15,2 CONTEDO Discriminao do Servio Quantidade do servio tomado Valor Unitrio OBRIG. S S S

NFSE - Nota Fiscal de Servios Eletrnica

ValorTotal N 15,2 Valor total do servio Obs: Cada RPS pode ter no mximo 25 itens. Funo: RpsDeducao Declarao: function RPSDeducao( DeducaoPor: Pchar ; TipoDeducao: Pchar ; CPFCNPJReferencia: PChar ; NumeroNFReferencia: Integer ; ValorTotalReferencia: Double ; PercentualDeduzir: Double ; ValorDeduzir: Double ): Integer; CAMPO DeducaoPor TipoDeducao TIPO TAM. CONTEDO A 20 Valores Possveis: Percentual Valor A 255 Caso a deduo for por Valor os valores possveis so : Despesas com Materiais ou Despesas com Sub-empreitada Caso a deduo for por Percentual informar o campo com valor vazio. A 14 CPF ou CNPJ do Fornecedor ou Prestador do Servio. N 10 Nmero da Nota Fiscal de Referncia N 15,2 Valor total da Nota Fiscal de Referncia N 15,2 Percentual a Deduzir N 15,2 Valor a ser Deduzido

OBRIG. S N

CPFCNPJReferencia NumeroNFReferencia ValorTotalReferencia PercentualDeduzir ValorDeduzir

S S S S S

Obs.: Cada RPS pode ter no mximo 5 registros de dedues. Aps Criar a Remessa e Gravar os dados dos RPS a serem enviados no lote o prximo passo enviar a declarao. Caso tenha ocorrido algum erro na validao dos dados de envio ser retornado valor false no parmetro Sucesso. O processamento via DLL assncrono, por padro o processamento no imediato. Caso tenha ocorrido erros ir retornar o nmero de erros encontrados e o lote ser recusado. Dever ser reenviado novamente com as devidas correes. No processamento assncrono deve se consultar o lote pela funo ConsultarLote , obtendo o retorno do processamento. Descrito mais adiante. Funo: EnviarDeclaracao Declarao: function EnviarDeclaracao( pDocAssinatura: String; var pAssincrono : String; var pSucesso : String ; var pNumeroLote: Integer ; var pQtdNotasProcessadas : Integer ; var pValorTotalServicos: Double ; var pValorTotalDeducoes:Double;

NFSE - Nota Fiscal de Servios Eletrnica

var pErros: Integer; var pAlertas: Integer): Integer ; Parmetros de Envio: CAMPO pDocAssinatura pAssincrono TIPO A A TAM. 14 1 CONTEDO OBRIG. Cpj ou Cnpj do contribuinte portador do cer- S tificado digital instalado. Tipo de processamento do Servio: S Padro: S-Assincrono

Parmetros de Retorno: CAMPO TIPO TAM. CONTEDO OBRIG pAssincrono A 1 Processamento Assincrono N S-Sim / N-No pSucesso A 5 Declarao entregue com sucesso N Valores possveis: true ou false pNumeroLote N 15 Numero do lote gerado pelo portal da N NFSe para a remessa. pQtdNotasProcessadas N 15 Quantidade de notas processadas no N lote. pValorTotalServicos N 15,2 Valor total dos servios das notas pro- N cessadas no lote pValorTotalDeducoes N 15,2 Valor total dos servios das notas pro- N cessadas no lote pErros N 15 Caso tenha ocorrido algum erro no pro- N cessamento do lote. Ser retornado o nmero de erros gerados e o lote ser recusado. pAlertas N 15 Caso tenha ocorrido algum alerta no N processamento do lote, ser retornado o nmero de alertas gerados. Obs: O campo pDocAssinatura no obrigatrio, onde informado o CNPJ do portador do certificado instalado a DLL ira enviar o documento XML assinado. Caso no informado nenhum valor para o parmetro o documento no ser assinado. Lembrado que para assinar o documento necessrio que o certificado seja vlido e j esteja instalado. Funo: ErrosRetorno Declarao: function ErrosRetorno( ErroItem:Integer; var Codigo: Integer; var Descricao: String; var InscricaoPrestador : String; var SerieRPS: String ; var NumeroRPS: Integer; var DataEmissaoRPS:String; var RazaoSocialPrestador: String ):Integer;

NFSE - Nota Fiscal de Servios Eletrnica

Parmetros de Envio: CAMPO TIPO TAM. CONTEDO OBRIG. ErroItem N 15 Posio do erro retornado na remessa. Por exemplo, S se a remessa retornou dois erros. O ErrosItem de valor Zero pega o primeiro erro e assim por diante. Parmetros de Retorno: CAMPO TIPO Codigo N Descrio A InscricaoPrestador A SerieRPS NumeroRPS DataEmissaoRPS RazaoSocialPrestador A N D A TAM. 15 2000 20 10 15 CONTEDO Cdigo do erro gerado Descrio do Erro gerado Inscrio do Prestador do RPS que gerou o erro Srie do RPS que gerou o erro Nmero da RPS que gerou o erro Data Emissao RPS Formato : DD/MM/YYYY Razao Social do Prestador do RPS que gerou o erro. OBRIG. N N N N N N N

120

*Obs: Caso tenha ocorrido erros no processamento o lote ser recusado e o contribuinte deve reenviar o lote com os RPS contidos. Funo: AlertasRetorno Declarao: function AlertasRetorno( AlertaItem:Integer; var Codigo: Integer; var Descricao: String; var InscricaoPrestador : String; var SerieRPS: String ; var NumeroRPS: Integer; var DataEmissaoRPS:String; var RazaoSocialPrestador: String ):Integer; Parmetros de Envio: CAMPO TIPO TAM. CONTEDO OBRIG. AlertaItem N 15 Posio do alerta retornado na remessa. Por exemplo S se a remessa retornou dois alertas. O AlertaItem de valor Zero pega o primeiro alerta e assim por diante. Parmetros de Retorno: CAMPO TIPO Codigo N Descrio A InscricaoPrestador A

TAM. 15 2000 20

CONTEDO Cdigo do alerta gerado Descrio do alerta gerado Inscrio do Prestador do RPS que gerou o alerta

OBRIG. N N N

NFSE - Nota Fiscal de Servios Eletrnica

SerieRPS NumeroRPS DataEmissaoRPS

A N D

10 15

RazaoSocialPrestador A

120

Srie do RPS que gerou o alerta Nmero do RPS que gerou o alerta Data Emisso RPS Formato: DD/MM/YYYY Razo Social do Prestador do RPS que gerou o alerta.

N N N N

Funo: NfseRetorno Declarao: function NfseRetorno( RetornoItem : Integer ; var InscricaoPrestador: String ; var NumeroNFe: Integer ; var CodigoVerificacao: String ; var RazaoSocialPrestador: String ; var SerieRPS : String ; var NumeroRPS: Integer ; var DataEmissaoRPS : String ):Integer;

Parmetros de Envio: CAMPO TIPO TAM. CONTEDO OBRIG. RetornoItem N 15 Posio do Nota retornada no processamento. Por S exemplo, se a remessa retornou quatro notas. O RetornoItem de valor Zero pega a primeira nota e assim por diante. Parmetros de Retorno: CAMPO TIPO InscricaoPrestador A NumeroNFe N CodigoVerificacao A RazaoSocialPrestador A SerieRPS A NumeroRPS N DataEmissaoRPS D

TAM. 20 15 255 120 10 10

CONTEDO Inscrio do Prestador do RPS Nmero da Nota Fiscal Gerada Cdigo de Verificao Razo social do prestador Srie do RPS Nmero do RPS Data de Emisso da RPS Formato: DD/MM/YYYY

OBRIG. N N N N N N N

2. Consulta de Lote Pode se acessar a funo de consulta de lote para consultar informaes sobre determinado lote gerado, ou no caso de retorno Assncrono, como especificado no item 1, pode se consultar se o lote foi processado e o resultado do processamento.

NFSE - Nota Fiscal de Servios Eletrnica

10

Caso o lote tenha sido processado o parmetro sucesso ir retornar true, no caso de processamento Assncrono caso o lote no tenha sido processado ainda, ir retornar o valor false e no alertas ir trazer um alerta. Ao consultar os alertas com a funo AlertasRetorno, ir retornar o alerta 203 RPS aguardando processamento. Funo para consultar o Retorno de Processamento de Lote: Funo: ConsultarLote Declarao: function ConsultarLote( CodCidade: Integer ; CPFCNPJRemetente: String ; NumeroLote: Integer ; var Sucesso: String; var DataEnvioLote: String; var QtdNotasProcessadas: Integer; var TempoProcessamento: String; var ValorTotalServicos: Double; var ValotTotalDeducoes: Double ; var Alertas: Integer; var Erros: Integer):Integer; Parmetros de Envio: CAMPO TIPO TAM. CONTEDO OBRIG. CodCidade N 10 Codigo da Cidade de Declarao padro S SIAFI. CPFCNPJRemetente A 14 CPF ou CNPJ Remetente S NumeroLote N 10 Nmero do Lote a ser consultado S

NFSE - Nota Fiscal de Servios Eletrnica

11

Parmetros de Retorno: CAMPO TIPO TAM. CONTEDO Sucesso A 5 True Consulta realizada com sucesso False Erro na consulta DataEnvioLote D Data de Envio do Lote Formato DD/MM/YYYY QtdNotasProcessadas N 10 Quantidade de Notas Processadas no Lote TempoProcessamento N 10 Tempo total de processamento ValorTotalServicos N 15,2 Valor Total dos Servios ValorTotalDeducoes N 15,2 Valor total das Dedues Alertas N 10 Quantidade de alertas ocorridos no procesamento Erros N 10 Quantidade de erros ocorridos no processamento Funo para consulta a Notas do Consultar Lote: Funo: ConsultarNFSeLote Declarao: function ConsultarNFSeLote( NrItem:Integer; var InscricaoPrestador: String; var NumeroNFe: Integer ; var CodigoVerificacao:String ; var SerieRPS:String ; var NumeroRPS: Integer; var DataEmissaoRPS: String ; var RazaoSocialPrestador: String ; var TipoRecolhimento: String ; var ValorDeduzir :Double; var ValorTotal : Double; var Aliquota : Double ):Integer;

OBRIG. N N N N N N N N

Parmetros de Envio: CAMPO TIPO TAM. CONTEDO OBRIG. NrItem N 10 Posico da Nota retornada na consulta de lote. Por ex- S emplo se a consulta retornou quatro notas. O NrItem de valor Zero pega a primeira nota. Parmetros de Retorno: CAMPO TIPO InscricaoPrestador A NumeroNFe N CodigoVerificacao A SerieRPS A TAM. 20 10 255 10 CONTEDO Inscrio Municipal do Contribuinte Numero da Nota Fiscal de Servios Cdigo de Verificao Serie do RPS Padro NF Nota Fiscal de Servios OBRIG. N N N N

NFSE - Nota Fiscal de Servios Eletrnica

12

NumeroRPS DataEmissaoRPS RazaoSocialPrestador TipoRecolhimento ValorDeduzir ValorTotal Aliquota

N D A A N N N

10

120 1 15,2 15,2 15,2

Nmero do RPS Data de Emisso do RPS Formato: DD/MM/YYYY Razo Social do Contribuinte Tipo de Recolhimento A A Recolher R - Retido na Fonte Valor a Deduzir Valor total Alquota

N N N N N N N

3. Consulta de Nota O consulta de nota retornar as notas geradas pelo contribuinte de acordo com o perodo passado na consulta. Funo: ConsultarNotas Declarao: function ConsultarNotas(CodCidade: Integer ; CPFCNPJRemetente: String ; InscricaoMunicipalPrestador:String; DataInicio: String; DataTermino: String; var QtdNotas : Integer ):Integer; Parmetros de Envio: CAMPO CodCidade TIPO TAM. CONTEDO N 10 Cdigo da Cidade de Declarao padro SIAFI. CPFCNPJRemetente A 14 CPF ou CNPJ Remetente InscricaoMunicipalPrestador Inscrio Municipal do Prestador DataInicio D Data inicial do perodo a ser consultado Formato: DD/MM/YYYY DataTermino Data Final do perodo a ser consultado. Formato: DD/MM/YYYY. OBRIG. S S S S S

Parmetros de Retorno: CAMPO TIPO TAM. CONTEDO QtdNotas N 10 Quantidade de notas retornadas pela consulta

OBRIG. N

4. Consulta Seqencial RPS O mtodo de consulta seqencial de Rps retorna nmero seqencial do ltimo RPS do prestador convertido em nota. O seqencial utilizado para controle de numerao de RPS, o servio deve ser acessado sempre que necessrio obter o nmero do ltimo RPS processado. No necessrio acessar o servio em cada converso de lote.

NFSE - Nota Fiscal de Servios Eletrnica

13

Funo: ConsultarSeqRps Declarao: function ConsultarSeqRps( CodCidade: Integer ; CPFCNPJRemetente: PChar ; InscricaoMunicipalPrestador: PChar ; var NroUltimoRps : Integer ):Integer; Parmetros de Envio: CAMPO CodCidade TIPO TAM. CONTEDO N 10 Cdigo da Cidade de Declarao padro SIAFI. CPFCNPJRemetente A 14 CPF ou CNPJ Remetente InscricaoMunicipalPrestador Inscrio Municipal do Prestador TAM. 10 CONTEDO Nmero do ultimo RPS convertido

Parmetros de Retorno: CAMPO TIPO NroUltimoRps N

Pr-requisitos e instalao:
1. Para o correto funcionamento da DLL necessrio baixar e instalar os seguintes itens : Microsoft .NET Framework verso 2.0 http://www.microsoft.com/downloads/details.aspx?familyid=0856eacb-4362-4b0d-8eddaab15c5e04f5&displaylang=pt-BR Microsoft Visual J# Version 2.0 Redistributable Package http://www.microsoft.com/downloads/details.aspx?FamilyID=f72c74b3-ed0e-4af8-ae632f0e42501be1&DisplayLang=en Aps instalar os dois itens acima execute o aplicativo de instalao da DLL contido no arquivo de instalao baixado no site da prefeitura no passo anterior. O aplicativo de instalao ir criar na pasta arquivos de programas uma pasta com nome Dll Dms Nfse onde estar os arquivos necessrios para configurar a DLL. No menu Iniciar/Programas/Dll Dms Nfse/ execute o aplicativo Instalador para configurar as bibliotecas para certificao digital. Aps executar estes passos para instanciar a DLL no seu sistema basta fazer referncia em seu projeto dms_nfse.dll que se encontra na pasta System32 do Windows. 2. Configurao da Dll Antes de iniciar as chamadas aos mtodos da dll deve-se primeiramente configurar a URL de acesso ao servio de RPS. Para isso deve se chamar o mtodo setURL presente na DLL antes de qualquer chamada a DLL. Abaixo segue o exemplo para servidor de homologao e servidor de produo
NFSE - Nota Fiscal de Servios Eletrnica

14

Homologao: setURL(http://200.201.194.78/WsNFe2/LoteRps.jws, http://200.201.194.78/WsNFe2/ LoteRps.jws?wsdl); Produo: setURL(http://www.issdigitalthe.com.br/WsNFe2/LoteRps.jws, http://www.issdigitalthe. com.br/WsNFe2/LoteRps.jws?wsdl); Nos exemplos de utilizao da DLL segue a maneira correta de chamada dos mtodos.

LINK PARA DOWNLOADS:


Arquivo de Instalao:
http://www.issdigitalthe.com.br/nfse/Instal_dms_nfse.zip

Arquivos de exemplos:

http://www.issdigitalthe.com.br/nfse/Exemplos.zip

DSF - Desenvolvimento de Sistemas Fiscais


Alameda Santos,1787 - CJ82 - So Paulo - SP

www.dsfnet.com.br