- 10. Funcionalidades
10.7. GeraLoteRPSDSF - 10.6. GeraLoteRPS versão 2.00 [18-03-12]
« Anterior - 10.8. GeraLoteRPSSP
Próximo »
10.7. GeraLoteRPSDSF
Gerar Lote de RPS padrão DSF
Assinatura
string geraLoteRPSDSF(string LoteRPSTXT, string nroLote, string CNPJRemetente, string RazaoSocialRemetente, string nomeCertificado, string cMunicipio, out int resultado, out string msgResultado, out string erros, string licenca);
Descrição:
Funcionalidade para gerar um lote de RPS do padrão DSF a partir de um TXT, é a forma mais simples e rápida de gerar um Lote de RPS.
Esta funcionalidade:
- gera o XML do RPS a partir do TXT;
- assina o XML do RPS se necessário;
- forma o lote de RPS;
- assina o lote de RPS.
Preenchimento do nomeCertificado
informar o Nome do titular (campo Assunto) do certificado digital a ser utlizado na conexão SSL. Ex.: "CN=NFe - Associacao NF-e:99999090910270, C=BR, L=PORTO ALEGRE, O=Teste Projeto NFe RS, OU=Teste Projeto NFe RS, S=RS"
Parâmetros:
| nome | tipo | fluxo | descrição |
|---|---|---|---|
| loteRPSTXT | string | entrada | informar a string com o TXT gerado de acordo com o leiaute da string TXT de entrada da DLL desta página, existem exemplos de arquivos TXT no pasta ..\NFSe_Util\ExemploXML do demo. |
| nroLote | string | entrada | informar a string com o número do lote. Este número é mero controle interno do usuário, pois a prefeitura atribui um outro número de lote. |
| nomeCertificado | string | entrada | informar o Nome do titular (campo Assunto) do certificado digital a ser utlizado na conexão SSL. Ex.: "CN=NFe - Associacao NF-e:99999090910270, C=BR, L=PORTO ALEGRE, O=Teste Projeto NFe RS, OU=Teste Projeto NFe RS, S=RS" |
| CNPJRemetente | string | entrada | informar o CNPJ do Remetente |
| RazaoSocialRemetente | string | entrada | informar a Razão Social do Remetente |
| cMunicipio | string | entrada | informar o código do IBGE do Município para o qual será enviado o lote de RPS. Obs: Verifique se a funcionalidade é compatível com o seu munícipio, esta funcionalidade é compatível apenas para municípios atendidos pelos provedores DSF. |
| resultado | inteiro | saída | retorna o resultado da chamada da funcionalidade |
| msgResultado | string | saída | retorna a literal do resultado da chamada da DLL |
| erros | string | saída | retorna a lista de erros ocorridos na conversão |
| licenca | string | entrada | informar a chave da licença de uso, deixar em branco para uso em ambiente de homologação |
Leiaute da string TXT de entrada:
Orientação de preenchimento
padrão do string de entrada - o string TXT é composto dos seguinte tipos de registros:
- RPS - registro do RPS, um registro por RPS;
- Item - registro de item de serviço, até 25 itens por RPS;
- Deducao - registro de dedução, até 200 deduções por RPS.
quantidade máxima de RPS por Lote - cada registro de 2459 caracteres representa um RPS, assim, a quantidade máxima de RPS permitidos é 50 registros de RPS, mas nem todos os municípios aceitam mais de 50 RPS por lote, também pode existir o limite no tamanho da mensagem (Ex. 500Kb), assim verifique os limites na documentação técnica do respectivo município.
preenchimento dos campos - Os registros são posicionais e os campos tem tamanho fixo que devem ser preenchidos da seguinte forma:
- C - campo caractere, preechimento da esquerda para a direita, acrescentar brancos até completar o tamanho do campo;
- D - campo data, com o seguinte formato: AAAA-MM-DD;
- N - campo numérico, prenchimento da direita para a esquerda, acrescentar zeros à esquerda até completar o tamanho do campo. Os campos de valores devem ser informados sem o ponto decimal, respeitando a quantidade de casas decimais previstas: 2 para valor e 4 para alíquota.
preenchimento de campos ou grupos opcionais - nem todos os RPS têm os grupos e/ou campos destacados na cor verde, quando não existir a informação o campo deve ser preechido com:
- zeros, quando o campo for numérico;
- brancos, quando o campo for caractere
diferença de leiaute dos RPS de cada município - não existe um padrão nacional de RPS, assim podem existir pequenas diferenças nos RPS de cada município ou provedor, sendo necessário consultar a documentação técnica disponibilizada pela prefeitura para fazer o correto preenchimento dos campos.
Solicitamos que entre em contato sempre que identificar alguma informação incorreta ou equívocada.
IMPORTANTE: A DLL somente oferece a funcionalidade para converter os dados informados no TXT para o XML do RPS, os esclarecimentos de como cada campo do RPS deve ser preenchido e quais seriam os valores válidos devem ser obtidos na documentação da prefeitura.
Falha na Assinatura
O certificado digital é responsável pela falha na assinatura, as principais causas são:
Uso de Certificado Digital sem chave privada - é comum o desenvolvedoer receber o arquivo de certificado digital de seu cliente sem a chave privada, este tipo de arquivo tem extensão cer, se este for o caso solicite o arquivo novamente e peça para exportar a chave privada. o arquivo gerado deve ter a extensão pfx e será protegido por senha.
Certificado Digital do tipo A3 ausente - o certificado digital do tipo A3 pode estar com mal contato ou ausente, tente reconectar o dispositivo e verifique o status do certificado digital no aplicativo de administração do certificado digital.
Certificado Digital do tipo A1 da CEF
Existe um "macete" para utilizar o certificado digital da CAIXA:
O problema deste certificado é que apesar de ser um certificado digital A1, ele age como se fosse um certificado digital A3 e utiliza o CSP próprio (cefcert.dll que fica na pasta csp da aplicação da caixa), que não tem suporte para o tipo de assinatura do projeto (só funciona para autenticação).
Assim, é necessário fazer com que o certificado utilize o CSP do Windows.
Os passos são:
- instalar o certificado digital conforme orientação da CEF;
- verificar o funcionamento do certificado e que o certificado consta da lista de certificados no Internet Explorer;
- exportar o certificado digital pelo Internet Explorer;
- desinstalar o aplicativo da CAIXA;
- verificar se a DLL não ficou na pasta da aplicação da CAIXA;
- importar o certificado digital exportado no item 3.
Os passos acima funcionam para windows XP e vista, mas não existe garantia de funcionamento para o windows 7, assim se o equipamento tiver windows 7, tente fazer o processo em um equipamento que tenha windows XP, o certificado gerado no item 3 deve funcionar no windows 7.
Reinstale o Certificado Digital - se não for nenhum dos casos acima, tente reinstalar o certificado digital novamente.
Leiaute do registro tipo RPS
| Campo | tipo | tam. | posição inicial |
posição final |
observação |
|---|---|---|---|---|---|
| Tipo | C | 1 | 1 | 1 | Identificação do Registro "R" |
| InscricaoMunicipalPrestador | C | 11 | 2 | 12 | Inscrição Municipal do Prestador. Verificar regra de preenchmento do campo . |
| RazaoSocialPrestador | C | 120 | 13 | 132 | Razão Social do Prestador |
| TipoRPS | C | 20 | 133 | 152 | Tipo de RPS Padrão "RPS" |
| SerieRPS | C | 2 | 153 | 154 | Série do RPS - Padrão "NF" |
| NumeroRPS | N | 12 | 155 | 166 | Número do RPS |
| DataEmissaoRPS | D | 19 | 167 | 185 | Data de Emissão do RPS No formato AAAA-MM-DD |
| SituacaoRPS | C | 1 | 186 | 186 | Situação da RPS "N"-Normal "C"-Cancelada |
| SerieRPSSubstituiido | C | 10 | 187 | 196 | deixar em branco |
| NumeroRPSSubstituido | N | 10 | 197 | 206 | preencher com zeros |
| NumeroNFSeSubstituida | N | 10 | 207 | 216 | preencher com zeros |
| DataEmissaoNFSeSubstituida | D | 10 | 217 | 226 | Preencher com "1900-01-01" |
| SeriePrestacao | N | 2 | 227 | 228 | Número do equipamento emissor do RPS ou série de prestação. Caso não utilize a série, preencha o campo com o valor ‘99’ que indica modelo único. Caso queira utilizar o campo série para indicar o número do equipamento emissor do RPS deve-se solicitar liberação da prefeitura. |
| InscricaoMunicipalTomador | C | 11 | 229 | 239 | Inscrição Municipal do Tomador. Caso o tomador não for do municipio não preencher, caso o tomador for do município preencher com a Inscrição Municipal formatada de acordo com o padrão de Formato das Inscrições Municipais que existe no final desta tabela. |
| CPFCNPJTomador | C | 14 | 240 | 253 | CPF ou CNPJ do Tomador Ex: "00000000191" (CNPJ) ou "0001112233 " (CPF) |
| RazaoSocialTomador | C | 120 | 254 | 373 | Razão Social do Tomador |
| DocTomadorEstrangeiro | C | 20 | 374 | 393 | Documento de Identificação do Tomador Estrangeiro. Caso o tomador não for estrangeiro ou não possuir a documento deixar o campo vazio |
| TipoLogradouroTomador | C | 10 | 394 | 403 | Tipo de Logradouro do Tomador. Campo de Preenchimento Livre. Exemplo: Avenida Rua Rodovia Ruela Rio Sítio Sup Quadra Travessa Vale Via Viaduto Viela Vila Vargem |
| LogradouroTomador | C | 50 | 404 | 453 | Logradouro do Tomador |
| NumeroEnderecoTomador | C | 9 | 454 | 462 | Numero de Endereço do Tomador |
| ComplementoTomador | C | 30 | 463 | 492 | Complemento do End. do tomador |
| TipoBairroTomador | C | 10 | 493 | 502 | Tipo de Bairro do Tomador. Campo de preenchimento livre. Exemplo: Bairro Bosque Chácara Conjunto Desmembramento Distrito Favela Fazenda Gleba Horto Jardim Loteamento Núcleo Parque Residencial Sítio Tropical Vila Zona. |
| BairroTomador | C | 50 | 503 | 552 | Bairro do Tomador |
| CidadeTomador | C | 10 | 553 | 562 | Código da Cidade do Tomador - Padrão SIAF |
| CidadeTomadorDescricao | C | 50 | 563 | 612 | Nome da Cidade do Tomador |
| CEPTomador | C | 8 | 613 | 620 | CEP do Tomador Ex:"37900000" |
| EmailTomador | C | 60 | 621 | 680 | Email do Tomador. Caso o Tomador não possua email informar o valor "-" Caso queira enviar para mais de um email colocar ";", Separando os emails e no final. Exemplo:nome@bol.com.br; outro@bol.com.br; |
| CodigoAtividade | C | 9 | 681 | 689 | Código da Atividade |
| AliquotaAtividade | N | 6 | 690 | 695 | Alíquota de ISS da Atividade |
| TipoRecolhimento | C | 1 | 696 | 696 | Tipo de Recolhimento "A" - A Recolher "R" - Retido na Fonte |
| MunicipioPrestacao | C | 10 | 697 | 706 | Código do Município de Prestação - Padrão SIAFI, informar ajustado à esquerda. |
| MunicipioPrestacaoDescricao | C | 30 | 707 | 736 | Município de Prestação do Serviço |
| Operacao | C | 1 | 737 | 737 | Operação: A-Sem Dedução B-Com Dedução/Materiais C-Imune/Isenta de ISSQN D-Devolução / Simples Remessa J-Intermediação* |
| Tributacao | C | 1 | 738 | 738 | Tributação: C - Isenta de ISS E - Não Incidência no Município F - Imune K - Exigibilidd Susp.Dec.J/Proc.A N - Não Tributável T - Tributável G - Tributável Fixo H - Tributável S.N. M - Micro Empreendedor Individual (MEI). |
| ValorPIS | N | 15,2 | 739 | 753 | Valor PIS |
| ValorCOFINS | N | 15,2 | 754 | 768 | Valor COFINS |
| ValorINSS | N | 15,2 | 769 | 783 | Valor do INSS |
| ValorIR | N | 15,2 | 784 | 798 | Valor do IR |
| ValorCSLL | N | 15,2 | 799 | 813 | Valor do CSLL |
| AliquotaPIS | N | 6,4 | 814 | 819 | Alíquota PIS |
| AliquotaCOFINS | N | 6,4 | 820 | 825 | Alíquota COFINS |
| AliquotaINSS | N | 6,4 | 826 | 831 | Alíquota INSS |
| AliquotaIR | N | 6,4 | 832 | 837 | Alíquota IR |
| AliquotaCSLL | N | 6,4 | 838 | 843 | Alíquota CSLL |
| DescricaoRPS | C | 1500 | 844 | 2343 | Descrição/ Dados Complemetares do RPS |
| DDDPrestador | C | 3 | 2344 | 2346 | DDD do telefone do Prestador |
| TelefonePrestador | C | 8 | 2347 | 2354 | Telefone do Prestador |
| DDDTomador | C | 3 | 2355 | 2357 | DDD Telefone do Tomador. Quando não souber informar: 00 |
| TelefoneTomador | C | 8 | 2358 | 2365 | Telefone do Tomador. |
| MotCancelamento | C | 80 | 2366 | 2445 | Motivo do Cancelamento |
| CpfCnpjIntermediario | C | 14 | 2446 | 2459 | CPF/CNPJ Intermediário |
Padrão de formatação das Inscrições Municipais
| CIDADE | TAMANHO DO CAMPO | EXEMPLO |
|---|---|---|
| Teresina | 07 | 0000736 |
| Belém | 07 | 0044252 |
| Campinas | 09 | 000000108 |
| Campo Grande | 11 | 00002738007 |
| Uberlândia | 08 | 07444300 |
| Nova Iguaçu | 06 | 000451 |
| São Luis | 11 | 00061994000 |
| Sorocaba | 09 | 000097371 |
Leiaute do registro tipo Item de RPS
| Campo | tipo | tam. | posição inicial |
posição final |
observação |
|---|---|---|---|---|---|
| Tipo | C | 1 | 1 | 1 | Identificação do Registro "I" |
| DiscriminacaoServico | C | 80 | 2 | 81 | Discriminação do Serviço |
| Quantidade | N | 10 | 82 | 91 | Quantidade do serviço tomado |
| ValorUnitario | N | 15,2 | 92 | 106 | Valor Unitário |
| ValorTotal | N | 15,2 | 107 | 121 | Valor Total |
| Tributavel | C | 1 | 122 | 122 | "S" Item Tributavel, "N" Item Não tributável. Verifique as atividades que podem ser informadas como não tributáveis no município http://www.dsfnet.com.br/nfse_lote/Anexo8.xls. |
Leiaute do registro tipo Dedução de RPS
| Campo | tipo | tam. | posição inicial |
posição final |
observação |
|---|---|---|---|---|---|
| Tipo | C | 1 | 1 | 1 | Identificação do Registro "D" |
| DeducaoPor | C | 20 | 2 | 21 | Valores Possíveis: "Percentual" "Valor" |
| TipoDeducao | C | 255 | 22 | 276 | Caso a dedução for por "Valor" os valores possíveis são : "Despesas com Materiais" ou "Despesas com Subempreitada" Caso a dedução for por "Percentual" informar o campo com valor vazio. |
| CPFCNPJReferencia | C | 14 | 277 | 290 | CPF ou CNPJ do Fornecedor ou Prestador do Serviço. |
| NumeroNFReferencia | N | 10 | 291 | 300 | Número da Nota Fiscal de Referência |
| ValorTotalReferencia | N | 15,2 | 301 | 315 | Valor total da Nota Fiscal de Referência |
| PercentualDeduzir | N | 15,2 | 316 | 330 | Percentual a Deduzir |
| ValorDeduzir | N | 15,2 | 331 | 345 | Valor a ser Deduzido |
Retorno:
O resultado da chamada do geraLoteRPSDSF é o XML de lote de RPS.
O parâmetro resultado retorna um código numérico com os seguintes significados:
| código | Mensagem | origem | regra |
|---|---|---|---|
| 5800 | Lote de RPS gerado com sucesso! | DLL | - |
| 5801 | Erro: O parâmetro LoteRPSTXT sem conteúdo | DLL | - |
| 5802 | Erro: O parâmetro nroLote não contém um valor numérico: [{0:0}] | DLL | - |
| 5803 | Erro: O parâmetro nroLote contém um valor fora do intervalo válido (1-999999999999999): [{0:0}] | DLL | - |
| 5804 | Erro: O parâmetro nomeCertificado sem conteúdo | DLL | - |
| 5805 | Erro: O parâmetro LoteRPSTXT com conteúdo inválido, veja os erros: [{0:0}] | DLL | - |
| 5806 | Erro: O parâmetro LoteRPSTXT informado com erro de preenchimento, analise o log de erros | DLL | - |
| 5807 | Erro: Erro inesperado no tratamento da leitura do LoteRPSTXT: [{0:0}] | DLL | - |
| 5808 | Erro: A quantidade de RPS existente no lote: [{0:0}] fora do intervadlo válido (1-50) | DLL | - |
| 5809 | Erro: O parâmetro LoteRPSTXT informado com erro de preenchimento, analise o log de erros | DLL | - |
| 5810 | Erro: A DLL ainda não foi customizada para gerar o LoteRPS para o Município: [{0:0}], contate o suporte (www.flexdocs.com.br/suporte) para outras informações | DLL | - |
| 5811 | Erro: Falha na assinatura do lote | DLL | - |
| 5812 | Erro: O parâmetro CNPJRemetente sem conteúdo | DLL | - |
| 5813 | Erro: O parâmetro CNPJRemetente conteúdo inválido: [{0:0}] | DLL | - |
| 5814 | Erro: O parâmetro RazaoSocialRemetente sem conteúdo | DLL | - |
| 5815 | Erro: Utilize a funcionalidade geraRPSTXT | DLL | - |
| 5816 | Erro: Utilize a funcionalidade geraRPSTXTDSF | DLL | - |
| 5817 | Erro: Utilize a funcionalidade geraRPSTXTSP | DLL | - |
Histórico de atualização:
- 2011-03-15 - 1.1 - Versão beta preliminar.
- 10.7. GeraLoteRPSDSF
10. Funcionalidades - « Anterior
10.6. GeraLoteRPS versão 2.00 [18-03-12] - Próximo »
10.8. GeraLoteRPSSP
Download do Manual da CAIXA