private { Private declarations } public { Public declarations } end; function GeraLoteRps(tIde, tServico, tTomador : array of ShortString) : ShortString; stdcall; External dllNfse; far; (...) procedure TfrmPrincipal.Button1Click(Sender: TObject); var tIde, tServico, tTomador : array of shortstring; ret, layout : ShortString; vlrps : Integer; begin try Screen.Cursor := crAppStart; Button1.Enabled := False; EditStatus.Text := 'Gerando NFS-e'; SetLength(tIde,26); SetLength(tServico,27); SetLength(tTomador,16); layout := ParametroConfig('layout', ''); {São Paulo - SP} if layout = '1' then begin {Dados de identificação do RPS} tIde[0] := FormatFloat('00000000', StrToFloat(nrps.Text)); //<Numero> Número do RPS tIde[1] := 'LLLLL'; //<Serie> Número de série do RPS tIde[2] := 'RPS'; //<Tipo> [RPS, RPS-M, RPS-C] tIde[3] := FormatDateTime('yyyy-mm-dd', Date()); //<DataEmissao> Data de Emissão do Documento tIde[4] := '1'; //<NaturezaOperacao> Código de natureza da operação: 1 - Tributação no município; 2 - Tributação fora do município; 3 - Isenção; 4 - Imune; 5 - Exigibilidade suspensa por decisão judicial; 6 - Exigibilidade suspensa por procedimento administrativo. tIde[5] := '6'; //<RegimeEspecialTributacao> Código de identificação do regime especial de tributação: 1 - Microempresa municipal; 2 - Estimativa; 3 - Sociedade de profissionais; 4 - Cooperativa. tIde[6] := '1'; //<OptanteSimplesNacional> Identificação de Sim/Não: 1 - Sim; 2 - Não. tIde[7] := '2'; //<IncentivadorCultural> Identificação de Sim/Não: 1 - Sim; 2 - Não. tIde[8] := 'N'; //<StatusRPS> {SP:[N - Normal; C - Cancelado], Outros:[1 - Normal; 2 - Cancelado]; } {Intermediario Servico} tIde[9] := ''; //<Cnpj> ou <Cpf> tIde[10] :=''; //<RazaoSocial> tIde[11] := ''; //<InscricaoMunicipal> IntermediarioServico {Conjunto de dados e valores que compõe o documento fiscal} tServico[0] := '0.10'; //<ValorServicos> tServico[1] := '0.00'; //<ValorDeducoes> tServico[2] := '0.00'; //<ValorPis> tServico[3] := '0.00'; //<ValorCofins> tServico[4] := '0.00'; //<ValorInss> tServico[5] := '0.00'; //<ValorIr> tServico[6] := '0.00'; //<ValorCsll> tServico[7] := 'false'; //<IssRetido> Layout - 1,3,4 = 'true'/'false'; Layout - 5 = 1/2 tServico[8] := ''; //<ValorIss> tServico[9] := '0.00'; //<OutrasRetencoes> tServico[10]:= '0.05'; //<Aliquota> tServico[11] := '0.00'; //<DescontoIncondicionado> tServico[12] := '0.00'; //<DescontoCondicionado> tServico[13] := '2658'; //<CodigoServico> tServico[14] := '4520001'; //<CNAE> tServico[15] := '821999900'; //<CodigoTributacaoMunicipio> tServico[16] := 'PRESTACAO DE SERVICO - TESTE'; //<Discriminacao> tServico[17] := '3106200'; //<CodigoMunicipio> tServico[18] := 'T'; //<TributacaoRPS> Layout - 1 (SP) = "T" - Tributação no município de São Paulo; "F" - T. fora do município de SP; "I" - Isento. tServico[19] := ''; //<ValorCredito> tServico[20] := '1'; //<BaseCalculo> Layout - 8 Aracajú tServico[21] := '0.10'; //<ValorLiquidoNfse> {Dados do tomador de serviço} tTomador[0] := '60253632420'; //<CPFCNPJTomador> tTomador[1] := '39619994'; //<InscricaoMunicipal> tTomador[2] := 'RAZAO SOCIAL TESTE NFE PJ'; //<RazaoSocial> tTomador[3] := 'R PEDRO AMERICO'; //<Endereco> tTomador[4] := '32'; //<Numero> tTomador[5] := 'ANDAR 27'; //<Complemento> tTomador[6] := 'CENTRO'; //<Bairro> tTomador[7] := '3550308'; //<CodigoMunicipio> tTomador[8] := 'SP'; //<Uf> tTomador[9] := '01045010'; //<Cep> tTomador[10] := 'contato@asscomponentes.com.br'; //<EmailTomador> Layout - 8 Aracajú tTomador[11] := 'R'; //<TipoLogradouro> "R" - Rua; "A" - Avenida. tTomador[12] := 'ISENTO'; //<InscricaoEstadualTomador> tTomador[13] := '3232323232'; //<Telefone> end else {Belo Horizonte - MG} if layout = '2' then begin { Dados de identificação do RPS } tIde[0] := FormatFloat('00000000', StrToFloat(nrps.Text)); //<Numero> Número do RPS tIde[1] := 'LLLLL'; //<Serie> Número de série do RPS tIde[2] := '1'; //<Tipo> Código de tipo de RPS: 1 - RPS; 2 - Nota Fiscal Conjugada (Mista); 3 - Cupom. tIde[3] := '2012-07-08T16:44:55'; //<DataEmissao> Data de Emissão do Documento tIde[4] := '1'; //<NaturezaOperacao> Código de natureza da operação. tIde[5] := '6'; //<RegimeEspecialTributacao> Código de identificação do regime especial de tributação. tIde[6] := '1'; //<OptanteSimplesNacional> Identificação de Sim/Não: 1 - Sim; 2 - Não. tIde[7] := '2'; //<IncentivadorCultural> Identificação de Sim/Não: 1 - Sim; 2 - Não. {Conjunto de dados e valores que compõe o documento fiscal} tServico[0] := '1000,00'; //valor servicos tServico[1] := '10,00'; //valor deducoes tServico[2] := '10,00'; //valor pis tServico[3] := '10,00'; //valor cofins tServico[4] := '10,00'; //valor inss tServico[5] := '10,00'; //valor ir tServico[6] := '10,00'; //valor csll tServico[7] := '1'; //iss retido tServico[8] := '10,00'; //valor iss tServico[9] := '10,00'; //outras retençoes tServico[10] := '0.05'; //aliquota tServico[11] := '10,00'; //desconto incondicionado tServico[12] := '10,00'; //desconto condicionado tServico[13] := '17.02'; //item lista serviço tServico[14] := ''; //cnae tServico[15] := '821999900'; //codigo tributacao municipio tServico[16] := 'SERVICO DE MONITORAMENTO DE DADOS'; //descriminação serviço tServico[17] := '3106200'; //CodigoMunicipio {Dados do tomador de serviço} tTomador[0] := '11143662000137'; //CNPJ OU CPF tTomador[1] := ''; //Insc. Municipal tTomador[2] := 'RAZAO DE TESTE ASS COMPONENTES'; //razao social tTomador[3] := 'DE SAO PAULO'; //endereço tTomador[4] := '123'; //numero tTomador[5] := ''; //complemento tTomador[6] := 'CENTRO'; //bairro tTomador[7] := '3106200'; //codigo municipio tTomador[8] := 'MG'; //UF tTomador[9] := '30170011'; //CEP end else {Recife - PE} if layout = '3' then begin tide[0] := FormatFloat('00000000', StrToFloat(nrps.Text)); //<Numero> Número do RPS tide[1] := 'LLLLL'; //<Serie> Número de série do RPS tide[2] := '1'; //<Tipo> [RPS, RPS-M, RPS-C] tide[3] := FormatDateTime('yyyy-mm-dd', Date()); //<DataEmissao> Data de Emissão do Documento tide[4] := '1'; //<NaturezaOperacao> Código de natureza da operação: 1 – Tributação no município; 2 - Tributação fora do município; 3 - Isenção; 4 - Imune; 5 –Exigibilidade suspensa por decisão judicial; 6 – Exigibilidade suspensa por procedimento administrativo. tide[5] := '1'; //<RegimeEspecialTributacao> Código de identificação do regime especial de tributação: 1 – Microempresa municipal; 2 - Estimativa; 3 – Sociedade de profissionais; 4 – Cooperativa. tide[6] := '1'; //<OptanteSimplesNacional> Identificação de Sim/Não: 1 - Sim; 2 – Não. tide[7] := '2'; //<IncentivadorCultural> Identificação de Sim/Não: 1 - Sim; 2 – Não. tide[8] := '1'; //<StatusRPS> {SP:[N - Normal; C - Cancelado], Outros:[1 - Normal; 2 - Cancelado]; } tservico[0] := '0.10'; //<ValorServicos> tservico[1] := '0.00'; //<ValorDeducoes> tservico[2] := '0.00'; //<ValorPis> tservico[3] := '0.00'; //<ValorCofins> tservico[4] := '0.00'; //<ValorInss> tservico[5] := '0.00'; //<ValorIr> tservico[6] := '0.00'; //<ValorCsll> tservico[7] := '2'; //<IssRetido> Layout - 1,3,4 = "true"/"false"; Layout - 5,9 = "1"/"2" tservico[8] := ''; //<ValorIss> tservico[9] := '0.00'; //<OutrasRetencoes> tservico[10] := '0.02'; //<Aliquota> tservico[11] := '0.00'; //<DescontoIncondicionado> tservico[12] := '0.00'; //<DescontoCondicionado> tservico[13] := '0101'; //<CodigoServico> tservico[14] := '0'; //<CNAE> tservico[15] := '821999900'; //<CodigoTributacaoMunicipio> tservico[16] := 'PRESTACAO DE SERVICO - TESTE;OUTRAS INFORMACOES DO SERVICO.'; //<Discriminacao> tservico[17] := '3106200'; //<CodigoMunicipio> tservico[18] := 'T'; //<TributacaoRPS> Layout - 1 (SP) = "T" - Tributação no município de São Paulo; "F" - T. fora do município de SP; "I" - Isento. tservico[19] := ''; //<ValorCredito> tservico[20] := '1'; //<BaseCalculo> Layout - 8 Aracajú tservico[21] := '0.10'; //<ValorLiquidoNfse> ttomador[0] := '04595104448'; //<CPFCNPJTomador> ttomador[1] := ''; //<InscricaoMunicipal> ttomador[2] := 'RAZAO SOCIAL TESTE NFE PJ'; //<RazaoSocial> ttomador[3] := 'R PEDRO AMERICO'; //<Endereco> ttomador[4] := '32'; //<Numero> ttomador[5] := 'ANDAR 27'; //<Complemento> ttomador[6] := 'CENTRO'; //<Bairro> ttomador[7] := '3550308'; //<CodigoMunicipio> ttomador[8] := 'SP'; //<Uf> ttomador[9] := '01045010'; //<Cep> ttomador[10] := 'contato@asscomponentes.com.br'; //<EmailTomador> Layout - 8 Aracajú ttomador[11] := 'R'; //<TipoLogradouro> "R" - Rua; "A" - Avenida. end else {Sertãozinho - SP} if layout = '12' then begin {Dados de identificação da solicitação de Emissão de Nota Eletrônica} tIde[0] := nrps.Text; //<numeronfd> número sequencial, se informar "0" (zero), o num. da nf será gerado pelo sistema da prefeitura. tIde[1] := '7'; //<codseriedocumento> série do documento, informar “7” fixo. tIde[2] := '511'; //<codnaturezaoperacao> código fiscal de prestação de serviço (CFPS) tIde[3] := '3'; //<codigocidade> Código da cidade, informar “3” fixo. tIde[4] := '99999'; //<<inscricaomunicipalemissor> CCM da empresa emissora tIde[5] := '18/11/2012'; //<dataemissao> Informar data de emissão da nota fiscal (somente aceitará o dia corrente) {dados da transportadora - opcionais} tIde[6] := ''; //<razaotransportadora> tIde[7] := ''; //<cpfcnpjtransportadora> tIde[8] := ''; //<enderecotransportadora> tIde[9] := '0'; //<tipofrete> tIde[10] :='0'; //<quantidade> tIde[11] := ''; //<especie> tIde[12] := '0'; //<pesoliquido> tIde[13] := '0'; //<pesobruto> {impostos} tIde[14] := ''; //<pis> tIde[15] := ''; //<cofins> tIde[16] := ''; //<csll> tIde[17] := ''; //<irrf> tIde[18] := ''; //<inss> tIde[19] := ''; //<descdeducoesconstrucao> tIde[20] := ''; //<totaldeducoesconstrucao> tIde[21] := 'true'; //<tributadonomunicipio> true ou false tIde[22] := ''; //<numerort> Número do recibo provisório de serviço – RPS tIde[23] := ''; //<codigoseriert> Serie do recibo, informar “7” fixo. tIde[24] := ''; //<dataemissaort> Data que o RPS foi emitido {Dados dos serviços e fatura - Atenção: separar as ocorrências por ";" conforme exemplo que gera 3 registros} {dados fatura} tServico[0] := '10/2012;11/2010;12/2010;'; //<numfatura> tServico[1] := '10/10/2012;10/11/2012;10/12/2012;'; //<vencimentofatura> tServico[2] := '100;100;100;'; //<valorfatura> {dados serviço. Obs: todos os serviços devem estar enquadrados no mesmo código de serviço.} tServico[3] := '2;3;1;'; //<quantidade> tServico[4] := 'Servicos de Criacao de Logomarca;Servicos de Criacao de Logomarca;Servicos de Criacao de Logomarca'; //<descricao> tServico[5] := '0101;0101;0101;'; //<codatividade> Deve ser o mesmo para todos os ítens de uma mesma nota tServico[6] := '150;200;150;'; //<valorunitario> tServico[7] := '5,5;5,5;5,5;'; //<aliquota> tServico[8] := 'False;False;False;'; //<impostoretido> {Dados do tomador de serviço} tTomador[0] := 'MRN ltda.'; //<razaotomador> tTomador[1] := 'MRN'; //<nomefantasiatomador> tTomador[2] := 'R PEDRO AMERICO'; //<enderecotomador> tTomador[3] := '32'; //<numeroendereco> tTomador[4] := 'Ribeirao Preto'; //<cidadetomador> tTomador[5] := 'SP'; //<estadotomador> tTomador[6] := 'Brasil'; //<paistomador> tTomador[7] := '21119898'; //<fonetomador> tTomador[8] := ''; //<faxtomador> tTomador[9] := '01045010'; //<ceptomador> tTomador[10] := 'Centro'; //<bairrotomador> tTomador[11] := 'teste@mrn.com.br'; //<emailtomador> tTomador[12] := 'F'; //<tppessoa> tTomador[13] := '30669959085'; //<cpfcnpjtomador> tTomador[14] := ''; //<inscricaoestadualtomador> tTomador[15] := ''; //<inscricaomunicipaltomador> end else {Curitiba - PR} if (layout = '9') then begin {Dados de identificação do RPS} tIde[0] := FormatFloat('00000000', StrToFloat(nrps.Text)); //<Numero> Número do RPS tIde[1] := 'LLLLL'; //<Serie> Número de série do RPS tIde[2] := '1'; //<Tipo> (RPS, RPS-M, RPS-C) tIde[3] := '2012-08-02T09:08:47'; //<DataEmissao> Data de Emissão do Documento tIde[4] := '1'; //<NaturezaOperacao> Código de natureza da operação: 1 – Tributação no município 2 - Tributação fora do município 3 - Isenção 4 - Imune 5 –Exigibilidade suspensa por decisão judicial 6 – Exigibilidade suspensa por procedimento administrativo. tIde[5] := '1'; //<RegimeEspecialTributacao> Código de identificação do regime especial de tributação: 1 – Microempresa municipal 2 - Estimativa 3 – Sociedade de profissionais 4 – Cooperativa. tIde[6] := '1'; //<OptanteSimplesNacional> Identificação de Sim/Não: 1 - Sim 2 – Não. tIde[7] := '2'; //<IncentivadorCultural> Identificação de Sim/Não: 1 - Sim 2 – Não. tIde[8] := '1'; //<StatusRPS> {SP:(N - Normal C - Cancelado), Outros:(1 - Normal 2 - Cancelado) } {Intermediario Servico - opcional} tIde[9] := ''; //<Cnpj> ou <Cpf> tIde[10] := ''; //<RazaoSocial> tIde[11] := ''; //<InscricaoMunicipal> IntermediarioServico {Conjunto de dados e valores que compõe o documento fiscal} tServico[0] := '0.10'; //<ValorServicos> tServico[1] := '0.00'; //<ValorDeducoes> tServico[2] := '0.00'; // <ValorPis> tServico[3] := '0.00'; // <ValorCofins> tServico[4] := '0.00'; // <ValorInss> tServico[5] := '0.00'; // <ValorIr> tServico[6] := '0.00'; // <ValorCsll> tServico[7] := '2'; // <IssRetido> Layout - 1,3,4 = "true"/"false" Layout - 5,9 = "1"/"2" tServico[8] := ''; // <ValorIss> tServico[9] := '0.00'; // <OutrasRetencoes> tServico[10] := '0.02'; // <Aliquota> tServico[11] := '0.00'; // <DescontoIncondicionado> tServico[12] := '0.00'; // <DescontoCondicionado> tServico[13] := '0101'; // <CodigoServico> tServico[14] := '0'; // <CNAE> tServico[15] := '821999900'; // <CodigoTributacaoMunicipio> tServico[16] := 'PRESTACAO DE SERVICO - TESTE OUTRAS INFORMACOES DO SERVICO.'; // <Discriminacao> tServico[17] := '3106200'; // <CodigoMunicipio> tServico[18] := 'T'; // <TributacaoRPS> Layout - 1 (SP) = "T" - Tributação no município de São Paulo "F" - T. fora do município de SP "I" - Isento. tServico[19] := ''; // <ValorCredito> tServico[20] := '1'; // <BaseCalculo> Layout - 8 Aracajú ?? tServico[21] := '0.10'; // <ValorLiquidoNfse> {Dados do tomador de serviço} tTomador[0] := '04595104448'; // <CPFCNPJTomador> tTomador[1] := ''; // <InscricaoMunicipal> tTomador[2] := 'RAZAO SOCIAL TESTE NFE PJ'; // <RazaoSocial> tTomador[3] := 'R PEDRO AMERICO'; // <Endereco> tTomador[4] := '32'; // <Numero> tTomador[5] := 'ANDAR 27'; // <Complemento> tTomador[6] := 'CENTRO'; // <Bairro> tTomador[7] := '3550308'; // <CodigoMunicipio> tTomador[8] := 'SP'; // <Uf> tTomador[9] := '01045010'; // <Cep> tTomador[10] := 'contato@asscomponentes.com.br'; // <EmailTomador> Layout - 8 Aracajú tTomador[11] := 'R'; // <TipoLogradouro> "R" - Rua "A" - Avenida.c tTomador[12] := 'ISENTO'; // <InscricaoEstadualTomador> end else {Campo Grande - MS} if (layout = '13') then begin {Dados de identificação do RPS} tIde[0] := FormatFloat('00000000', StrToFloat(nrps.Text)); // <Numero> Número do RPS tIde[1] := ParametroConfig('ide_Razao', ''); // <RazaoSocialPrestador> tIde[2] := 'RPS'; // <TipoRPS> padrão - RPS tIde[3] := 'NF'; // <SerieRPS> padrão - NF tIde[4] := ParametroConfig('ide_IM', ''); // <InscricaoMunicipalPrestador> tIde[5] := '2011-11-16T11:00:00'; // <DataEmissaoRPS> Data de Emissão do RPS tIde[6] := 'N'; // <SituacaoRPS> "N" - normal ou "C" - cancelada tIde[7] := '99'; // <SeriePrestacao> {Conjunto de dados e valores que compõe o documento fiscal} tServico[0] := '010100188'; //<CodigoAtividade> CNAE tServico[1] := '0.00'; //<AliquotaAtividade> tServico[2] := 'A'; // <TipoRecolhimento> A - a receber, R - retido na fonte tServico[3] := '19'; // <MunicipioPrestacao> cod. do município padrão siaf tServico[4] := 'CAMPO GRANDE'; // <MunicipioPrestacaoDescricao> tServico[5] := 'B'; // <Operacao> A - sem dedução, B - com dedução/materiais, C - Imune, D - Devolução/ Simples Remessa tServico[6] := 'T'; // <Tributacao> tServico[7] := '0.00'; // <ValorPIS> tServico[8] := '0.00'; // <ValorCOFINS> tServico[9] := '0.00'; // <ValorINSS> tServico[10] := '0.00'; // <ValorIR> tServico[11] := '0.00'; // <ValorCSLL> tServico[12] := '0.00'; // <AliquotaPIS> tServico[13] := '0.00'; //<AliquotaCOFINS> tServico[14] := '0.00'; // <AliquotaINSS> tServico[15] := '0.00'; // <AliquotaIR> tServico[16] := '0.00'; // <AliquotaCSLL> tServico[17] := 'PRESTACAO DE SERVICO - TESTE'; // <DescricaoRPS> tServico[18] := '011'; // <DDDPrestador> tServico[19] := '21526542'; // <TelefonePrestador> tServico[20] := '011'; // <DDDTomador> tServico[21] := '21522235'; // <TelefoneTomador> tServico[22] := 'SERVICO DE MANUTENCAO'; // <DiscriminacaoServico> tServico[23] := '1'; // <Quantidade> tServico[24] := '100.00'; // <ValorUnitario> tServico[25] := '100.00'; // <ValorTotal> tServico[26] := 'N'; // <Tributavel> {Dados do tomador de serviço} tTomador[0] := '11143662000137'; // <CPFCNPJTomador> informar nesse campo o cpf ou o cnpj do tomador (11 ou 14 dígitos) tTomador[1] := '2463040011'; // <InscricaoMunicipalTomador> tTomador[2] := 'RAZAO DE TESTE ASS COMPONENTES'; // <RazaoSocialTomador> tTomador[3] := 'R PEDRO AMERICO'; // <LogradouroTomador> tTomador[4] := '32'; // <NumeroEnderecoTomador> tTomador[5] := 'BAIRRO'; // <TipoBairroTomador> tTomador[6] := 'APARECIDA'; // <BairroTomador> tTomador[7] := '3106200'; // <CidadeTomador> tTomador[8] := 'CAMPO GRANDE'; // <CidadeTomadorDescricao> tTomador[9] := '01045010'; // <CEPTomador> tTomador[10] := 'emailtomador@gmail.com.br'; // <EmailTomador> caso o tomador do serv. não possua email informar "-" e para mais de um email separar por ";" entre os email´s e no final tTomador[11] := 'RUA'; // <TipoLogradouroTomador> end else showmessage('Layout definido ainda não liberado #'+layout+'.'+#13+'Contate o suporte.'); ret := GeraLoteRps(tIde,tServico, tTomador); EditStatus.Text := 'path RPS Gerado: '+ ret; finally Screen.Cursor := crDefault; Button1.Enabled := True; vlrps := StrToInt(nrps.Text); Inc(vlrps); nrps.Text := IntToStr(vlrps); end; end;