
elielgmartins
Membros-
Total de ítens
2 -
Registro em
-
Última visita
elielgmartins's Achievements
-
Mensagem Ao Emitir Nfse (Campo Grande - Ms)
elielgmartins replied to elielgmartins's tópico in ACBrNFSe
Juiomar, Nos proximos post usarei essa opção de anexa, agradeço pela dica. Eu vi o outro post, mas o colega disse que no post que estava errado a forma que foi implementado, não disse qual o motivo, então não me ajudou, por isso coloquei o código no post. Tem alguém que passou por este problema ou pode me orientar o que estou fazendo de errado ? Tentei seguir o exemplo do demo da NFSe. -
Estou com problema no momento de enviar NFS-e, está exibindo uma mensagem ("Conjunto De Rps Transmitidos (Máximo De 50) Excedido."). Sendo que estou alimentando o objeto conforme está no exemplo, segue abaixo o código que desenvolvi para emitir a NFS-e. Desde já agradeço a todos pela atenção, e gostaria de ver quem pode me ajudar, para ver o que estou fazendo de errado. Abraço a todos. No evento onshow (chamo a procedure p_GetParamNFSe) do form, carrego as configurações do componente, conforme o código abaixo : procedure TfmMenuNotaFiscal.p_GetParamNFSe; Var f_PathMensal : String; f_Confirma : Boolean; begin {Carregando as configurações da Nota Fiscal Serviço Eletrônica} Sql_Param.Close; Sql_Param.SQL.Clear; Sql_Param.SQL.Add('SELECT PAR_CAMINHO_CERTIFICADO, '); Sql_Param.SQL.Add(' PAR_SENHA_CERTIFICADO, '); Sql_Param.SQL.Add(' PAR_NUM_SERIE_CERTIFICADO, '); Sql_Param.SQL.Add(' PAR_DIRETORIOXML, '); Sql_Param.SQL.Add(' PAR_CAMINHO_SCHEMA, '); Sql_Param.SQL.Add(' PAR_CAMINHO_LOGS, '); Sql_Param.SQL.Add(' COALESCE(PAR_COD_MUN_IBGE,0) AS PAR_COD_MUN_IBGE, '); Sql_Param.SQL.Add(' COALESCE(PAR_AMBIENTE_HOMOLOG,''2'') AS PAR_AMBIENTE_HOMOLOG, '); Sql_Param.SQL.Add(' COALESCE(PAR_VISUALIZA_MSG_WEBSRV,''N'') AS PAR_VISUALIZA_MSG_WEBSRV, '); Sql_Param.SQL.Add(' PAR_LOGO_PREFEITURA, '); Sql_Param.SQL.Add(' PAR_LOGO_EMPRESA, '); Sql_Param.SQL.Add(' PAR_NOME_PREFEITURA '); Sql_Param.SQL.Add(' FROM ESCPARA '); Sql_Param.Open; {$IFDEF ACBrNFSeOpenSSL} ACBrNFSe.Configuracoes.Certificados.Certificado := Sql_Param.FieldByName('PAR_CAMINHO_CERTIFICADO').AsString; ACBrNFSe.Configuracoes.Certificados.Senha := Sql_Param.FieldByName('PAR_SENHA_CERTIFICADO').AsString; {$ELSE} ACBrNFSe.Configuracoes.Certificados.NumeroSerie := Sql_Param.FieldByName('PAR_NUM_SERIE_CERTIFICADO').AsString; {$ENDIF} ACBrNFSe.Configuracoes.Arquivos.AdicionarLiteral := True; ACBrNFSe.Configuracoes.Arquivos.EmissaoPathNFSe := True; ACBrNFSe.Configuracoes.Arquivos.PastaMensal := True; ACBrNFSe.Configuracoes.Arquivos.PathCan := Sql_Param.FieldByName('PAR_DIRETORIOXML').AsString; ACBrNFSe.Configuracoes.Arquivos.PathNFSe := Sql_Param.FieldByName('PAR_DIRETORIOXML').AsString; ACBrNFSe.Configuracoes.Arquivos.Salvar := True; f_PathMensal := ACBrNFSe.Configuracoes.Arquivos.GetPathNFSe(0); ACBrNFSe.Configuracoes.Geral.PathSchemas := Sql_Param.FieldByName('PAR_CAMINHO_SCHEMA').AsString; ACBrNFSe.Configuracoes.Geral.Salvar := (Sql_Param.FieldByName('PAR_CAMINHO_LOGS').AsString <> ''); ACBrNFSe.Configuracoes.Geral.PathSalvar := Sql_Param.FieldByName('PAR_CAMINHO_LOGS').AsString; ACBrNFSe.Configuracoes.WebServices.CodigoMunicipio := Sql_Param.FieldByName('PAR_COD_MUN_IBGE').AsInteger; {************************} { Ambiente } {************************} { 1 - Produção } { 2 - Homologação } {************************} ACBrNFSe.Configuracoes.WebServices.Ambiente := StrToTpAmb(f_Confirma,Sql_Param.FieldByName('PAR_AMBIENTE_HOMOLOG').AsString); ACBrNFSe.Configuracoes.WebServices.Visualizar := (Sql_Param.FieldByName('PAR_VISUALIZA_MSG_WEBSRV').AsString = 'S'); ACBrNFSe.Configuracoes.WebServices.SetConfigMunicipio(ACBrNFSe.Configuracoes.Geral.PathSchemas); if ACBrNFSe.DANFSe <> nil then begin ACBrNFSe.DANFSe.Logo := Sql_Param.FieldByName('PAR_LOGO_PREFEITURA').AsString; ACBrNFSe.DANFSe.PrestLogo := Sql_Param.FieldByName('PAR_LOGO_EMPRESA').AsString; ACBrNFSe.DANFSe.Prefeitura := Sql_Param.FieldByName('PAR_NOME_PREFEITURA').AsString; end; StsbInfo.Panels[1].Text := ACBrNFSe.Configuracoes.WebServices.xProvedor; end; No botão de emitir a nota, tenho seguinte código : procedure TfmMenuNotaFiscal.SbtnEmitir_NFSeClick(Sender: TObject); Var f_Numero_Rps : Integer; f_Numero_Lote : Integer; begin if p_VerificaSelecao = False then begin Application.MessageBox('É necessário selecionar pelo menos um registro.','Atenção',MB_ICONINFORMATION); Grid_NotaFiscal.SetFocus; Abort; end; PnlProcessando.Visible := (PnlProcessando.Visible = False); JvGFProcessando.Animate := (PnlProcessando.Visible); Cds_Grid.First; Cds_Grid.DisableControls; f_Numero_Rps := 0; f_Numero_Lote := 0; while not Cds_Grid.Eof do begin if Cds_Grid.FieldByName('SELECIONADO').AsString = 'S' then begin f_Numero_Rps := f_ProxChave('ESCPARA','PAR_NUMERO_RPS'); f_Numero_Lote := f_ProxChave('ESCPARA','PAR_NUMERO_LOTE'); ACBrNFSe.NotasFiscais.Clear; p_GerarNFSe(IntToStr(f_Numero_Rps),IntToStr(f_Numero_Lote)); ACBrNFSe.Enviar(f_Numero_Lote); dmDados.Sql_Temp.Close; dmDados.Sql_Temp.SQL.Clear; dmDados.Sql_Temp.SQL.Add('UPDATE ESCNOTA SET NOT_NUMERO_RPS = ' + IntToStr(f_Numero_Rps)); dmDados.Sql_Temp.SQL.Add(' ,NOT_NUMERO_LOTE = ' + IntToStr(f_Numero_Lote)); dmDados.Sql_Temp.SQL.Add(' ,NOT_SITUACAO = ''E'''); dmDados.Sql_Temp.SQL.Add(' WHERE CHV_NOTA = ' + IntToStr(Cds_Grid.FieldByName('SEQ_NF').AsInteger)); dmDados.Sql_Temp.ExecSQL; dmDados.Sql_Temp.Close; dmDados.Sql_Temp.SQL.Clear; dmDados.Sql_Temp.SQL.Add('UPDATE ESCPARA SET PAR_NUMERO_RPS = ' + IntToStr(f_Numero_Rps) ); dmDados.Sql_Temp.SQL.Add(' ,PAR_NUMERO_LOTE = ' + IntToStr(f_Numero_Lote)); dmDados.Sql_Temp.SQL.Add(' ,PAR_DT_ULTIMA_EMISS = CURRENT_DATE '); dmDados.Sql_Temp.ExecSQL; end; Cds_Grid.Next; end; ACBrNFSe.NotasFiscais.Clear; PnlProcessando.Visible := (PnlProcessando.Visible = False); JvGFProcessando.Animate := (PnlProcessando.Visible); end; A procedure p_GerarNFSe, é responsável pelos dados da NFS-e, segue abaixo a lógica utilizada (baseada no código do exemplo da NFS-e) : procedure TfmMenuNotaFiscal.p_GerarNFSe(sNumNFSe, sNumLote : String); Var f_ValorISS : Double; f_DescServico : AnsiString; f_Referencia : AnsiString; begin {Procedure para geração da NFSe} f_ValorISS := 0; {Parâmetros para geração da NFS-e} Sql_Param.Close; Sql_Param.SQL.Clear; Sql_Param.SQL.Add('SELECT PAR_SERIE_NFSE, '); Sql_Param.SQL.Add(' COALESCE(PAR_AMBIENTE_HOMOLOG,''2'') AS PAR_AMBIENTE_HOMOLOG, '); Sql_Param.SQL.Add(' COALESCE(PAR_ALIQUOTAISS,0) AS PAR_ALIQUOTAISS, '); Sql_Param.SQL.Add(' COALESCE(PAR_ALIQISSRETIDO,0) AS PAR_ALIQISSRETIDO, '); Sql_Param.SQL.Add(' COALESCE(PAR_COD_MUN_IBGE,0) AS PAR_COD_MUN_IBGE, '); Sql_Param.SQL.Add(' COALESCE(PAR_COD_TRIB_MUNIC,0) AS PAR_COD_TRIB_MUNIC, '); Sql_Param.SQL.Add(' PAR_CNPJ, '); Sql_Param.SQL.Add(' PAR_INSCRMUNICIPAL '); Sql_Param.SQL.Add(' FROM ESCPARA '); Sql_Param.Open; ACBrNFSe.NotasFiscais.Clear; ACBrNFSe.NotasFiscais.NumeroLote := sNumLote; ACBrNFSe.NotasFiscais.Add.NFSe.IdentificacaoRps.Numero := FormatFloat('#########0', StrToInt(sNumNFSe)); {Para provedor ISS.NET em ambiente de homologação mudar a série para '8'} {Campo Grande o povedor é : ISSDSF } ACBrNFSe.NotasFiscais.Add.NFSe.IdentificacaoRps.Serie := Sql_Param.FieldByName('PAR_SERIE_NFSE').AsString; ACBrNFSe.NotasFiscais.Add.NFSe.IdentificacaoRps.Tipo := trRPS; ACBrNFSe.NotasFiscais.Add.NFSe.DataEmissao := Date; ACBrNFSe.NotasFiscais.Add.NFSe.NaturezaOperacao := noTributacaoNoMunicipio; ACBrNFSe.NotasFiscais.Add.NFSe.RegimeEspecialTributacao := retMicroempresaMunicipal; ACBrNFSe.NotasFiscais.Add.NFSe.OptanteSimplesNacional := snSim; ACBrNFSe.NotasFiscais.Add.NFSe.IncentivadorCultural := snSim; {************************} { Ambiente } {************************} { 1 - Produção } { 2 - Homologação } {************************} if Sql_Param.FieldByName('PAR_AMBIENTE_HOMOLOG').AsString = '1' then ACBrNFSe.NotasFiscais.Add.NFSe.Producao := snSim else if Sql_Param.FieldByName('PAR_AMBIENTE_HOMOLOG').AsString = '2' then ACBrNFSe.NotasFiscais.Add.NFSe.Producao := snNao; {[srNormal,srCancelado]} ACBrNFSe.NotasFiscais.Add.NFSe.Status := srNormal; ACBrNFSe.NotasFiscais.Add.NFSe.OutrasInformacoes := 'Pagamento a Vista'; {Usado quando o RPS for substituir outro} {ACBrNFSe.NotasFiscais.Add.NFSe.Numero := FormatFloat('#########0', StrToInt(sNumNFSe)); } {ACBrNFSe.NotasFiscais.Add.NFSe.IdentificacaoRps.Serie := Sql_Param.FieldByName('PAR_SERIE_NFSE').AsString; } {ACBrNFSe.NotasFiscais.Add.NFSe.RpsSubstituido.Tipo := trRPS; } ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorServicos := Cds_Grid.FieldByName('TOTAL_NOTA').AsFloat; {Valores ficaram zerado, porque na análise inicial o calculo será somente do} {ISS normal, no futuro se obtiver esses valores deverão ser alimentados. } ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorDeducoes := 0.00; ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorPis := 0.00; ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorCofins := 0.00; ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorInss := 0.00; ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorIr := 0.00; ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorCsll := 0.00; {Default o iSS será normal e não retido, porque os cliente da Lets Talk, não} {atende esse requisito de renteção. } ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.IssRetido := stNormal; ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.OutrasRetencoes := 0.00; ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.DescontoIncondicionado := 0.00; ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.DescontoCondicionado := 0.00; {Base de calculo será o valor total da nota, esse valor já esta deduzido os, } {descontos e embutido os acréscimos. Então a base de calculo sempre será o } {o valor total da nota. } ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.BaseCalculo := Cds_Grid.FieldByName('TOTAL_NOTA').AsFloat; ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.Aliquota := Sql_Param.FieldByName('PAR_ALIQUOTAISS').AsFloat; if ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.IssRetido = stNormal then begin f_ValorISS := dmFuncoes.F_RoundTo((Cds_Grid.FieldByName('TOTAL_NOTA').AsFloat * Sql_Param.FieldByName('PAR_ALIQUOTAISS').AsFloat)/100,-2); ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorIss := dmFuncoes.F_RoundTo(f_ValorISS,-2); ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorIssRetido := 0.00; end else begin f_ValorISS := dmFuncoes.F_RoundTo((Cds_Grid.FieldByName('TOTAL_NOTA').AsFloat * Sql_Param.FieldByName('PAR_ALIQISSRETIDO').AsFloat)/100,-2); ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorIss := 0.00; ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorIssRetido := dmFuncoes.F_RoundTo(f_ValorISS,-2); end; ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorLiquidoNfse := ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorServicos - ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorPis - ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorCofins - ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorInss - ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorIr - ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorCsll - ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.OutrasRetencoes - ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorIssRetido - ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.DescontoIncondicionado - ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.DescontoCondicionado; ACBrNFSe.NotasFiscais.Add.NFSe.Servico.ItemListaServico := '14.01'; ACBrNFSe.NotasFiscais.Add.NFSe.Servico.CodigoTributacaoMunicipio := IntToStr(Sql_Param.FieldByName('PAR_COD_TRIB_MUNIC').AsInteger); ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Discriminacao := 'discriminacao'; {Para o provedor ISS.Net em ambiente de homologação o código de Município } {tem que ser 999. } ACBrNFSe.NotasFiscais.Add.NFSe.Servico.CodigoMunicipio := IntToStr(Sql_Param.FieldByName('PAR_COD_MUN_IBGE').AsInteger); ACBrNFSe.NotasFiscais.Add.NFSe.Servico.ExigibilidadeISS := exiExigivel; ACBrNFSe.NotasFiscais.Add.NFSe.Servico.CodigoPais := 1058; {Brasil} ACBrNFSe.NotasFiscais.Add.NFSe.Servico.MunicipioIncidencia := StrToIntDef(IntToStr(Sql_Param.FieldByName('PAR_COD_MUN_IBGE').AsInteger), 0); SqlScript.Close; SQLScript.SQL.Clear; SqlScript.SQL.Add('SELECT DISTINCT EI.ITE_TIPO_PARC '); SqlScript.SQL.Add(' FROM ESCITEMNOTA EI '); SqlScript.SQL.Add(' WHERE EI.CHV_NOTA = :pCHV_NOTA '); SqlScript.SQL.Add(' ORDER BY EI.ITE_TIPO_PARC '); SQLScript.ParamByName('pCHV_NOTA').AsInteger := Cds_Grid.FieldByName('SEQ_NF').AsInteger; SQLScript.Open; SQLScript.First; f_DescServico := ''; while not SQLScript.Eof do begin if SQLScript.FieldByName('ITE_TIPO_PARC').AsString = 'A' then {Matricula} begin dmDados.Sql_Temp.Close; dmDados.Sql_Temp.SQL.Clear; dmDados.Sql_Temp.SQL.Add('SELECT DISTINCT EP.PES_NOME '); dmDados.Sql_Temp.SQL.Add(' FROM ESCITEMNOTA EI, '); dmDados.Sql_Temp.SQL.Add(' ESCMATR EM, '); dmDados.Sql_Temp.SQL.Add(' ESCALUN EA, '); dmDados.Sql_Temp.SQL.Add(' ESCPESS EP, '); dmDados.Sql_Temp.SQL.Add(' ESCPARC ER '); dmDados.Sql_Temp.SQL.Add(' WHERE EI.CHV_NOTA = :pCHV_NOTA '); dmDados.Sql_Temp.SQL.Add(' AND EI.CHV_MATRICULA = EM.CHV_MATRICULA '); dmDados.Sql_Temp.SQL.Add(' AND EM.CHV_ALUNO = EA.CHV_ALUNO '); dmDados.Sql_Temp.SQL.Add(' AND EP.CHV_PESSOAS = EA.CHV_PESSOAS '); dmDados.Sql_Temp.SQL.Add(' AND EI.chv_parcela = ER.chv_parcela '); dmDados.Sql_Temp.SQL.Add(' AND ER.par_tipo = ''A'' '); dmDados.Sql_Temp.ParamByName('pCHV_NOTA').AsInteger := Cds_Grid.FieldByName('SEQ_NF').AsInteger; dmDados.Sql_Temp.Open; dmDados.Sql_Temp.First; f_Referencia := ''; while not dmDados.Sql_Temp.Eof do begin if Trim(f_Referencia) = '' then f_Referencia := dmDados.Sql_Temp.FieldByName('PES_NOME').AsString else f_Referencia := f_Referencia + ',' + dmDados.Sql_Temp.FieldByName('PES_NOME').AsString; dmDados.Sql_Temp.Next; end; f_DescServico := 'MATRÍCULA DO CURSO DE INGLÊS DO(S) ALUNO(S) ' + f_Referencia; end; if SQLScript.FieldByName('ITE_TIPO_PARC').AsString = 'M' then {Mensalidade} begin f_Referencia := ''; dmDados.Sql_Temp.Close; dmDados.Sql_Temp.SQL.Clear; dmDados.Sql_Temp.SQL.Add('SELECT DISTINCT COALESCE(EC.PAR_REFERENCIA,0) AS PAR_REFERENCIA, '); dmDados.Sql_Temp.SQL.Add(' COALESCE(EM.MAT_ANO,0) AS MAT_ANO '); dmDados.Sql_Temp.SQL.Add(' FROM ESCITEMNOTA EI, '); dmDados.Sql_Temp.SQL.Add(' ESCPARC EC, '); dmDados.Sql_Temp.SQL.Add(' ESCMATR EM '); dmDados.Sql_Temp.SQL.Add(' WHERE EI.CHV_NOTA = :pCHV_NOTA '); dmDados.Sql_Temp.SQL.Add(' AND EI.CHV_PARCELA = EC.CHV_PARCELA '); dmDados.Sql_Temp.SQL.Add(' AND EC.CHV_MATRICULA = EM.CHV_MATRICULA '); dmDados.Sql_Temp.SQL.Add(' AND EC.PAR_TIPO = ''M'' '); dmDados.Sql_Temp.ParamByName('pCHV_NOTA').AsInteger := Cds_Grid.FieldByName('SEQ_NF').AsInteger; dmDados.Sql_Temp.Open; dmDados.Sql_Temp.First; while not dmDados.Sql_Temp.Eof do begin if Trim(f_Referencia) = '' then f_Referencia := IntToStr(dmDados.Sql_Temp.FieldByName('PAR_REFERENCIA').AsInteger) else f_Referencia := f_Referencia + ',' + IntToStr(dmDados.Sql_Temp.FieldByName('PAR_REFERENCIA').AsInteger); dmDados.Sql_Temp.Next; end; f_Referencia := f_Referencia + '/' + IntToStr(dmDados.Sql_Temp.FieldByName('MAT_ANO').AsInteger); if Trim(f_DescServico) <> '' then f_DescServico := f_DescServico + 'MENSALIDADE DAS AULAS DE INGLÊS REF. AO MÊS ' + f_Referencia else f_DescServico := f_DescServico + ' / MENSALIDADE DAS AULAS DE INGLÊS REF. AO MÊS ' + f_Referencia;; end; SQLScript.Next; end; ACBrNFSe.NotasFiscais.Add.NFSe.Servico.ItemServico.Add.Descricao := f_DescServico; ACBrNFSe.NotasFiscais.Add.NFSe.Servico.ItemServico.Add.Quantidade := 1; ACBrNFSe.NotasFiscais.Add.NFSe.Servico.ItemServico.Add.ValorUnitario := Cds_Grid.FieldByName('TOTAL_NOTA').AsFloat; ACBrNFSe.NotasFiscais.Add.NFSe.Prestador.Cnpj := dmFuncoes.StrZero(dmKernel.F_SoNumeros(Sql_Param.FieldByName('PAR_CNPJ').AsString),14,0); ACBrNFSe.NotasFiscais.Add.NFSe.Prestador.InscricaoMunicipal := dmFuncoes.StrZero(dmKernel.F_SoNumeros(Sql_Param.FieldByName('PAR_INSCRMUNICIPAL').AsString),6,0); {Para Provedor ISSDigital} ACBrNFSe.NotasFiscais.Add.NFSe.Prestador.Senha := 'senha'; ACBrNFSe.NotasFiscais.Add.NFSe.Prestador.FraseSecreta := 'frase secreta'; ACBrNFSe.NotasFiscais.Add.NFSe.Prestador.cUF := 33; {Tomador} ACBrNFSe.NotasFiscais.Add.NFSe.Tomador.IdentificacaoTomador.CpfCnpj := dmKernel.F_SoNumeros(Cds_Grid.FieldByName('PES_CPF').AsString); ACBrNFSe.NotasFiscais.Add.NFSe.Tomador.RazaoSocial := dmFuncoes.F_SemAcento(Cds_Grid.FieldByName('RESP_FINANCEIRO').AsString); ACBrNFSe.NotasFiscais.Add.NFSe.Tomador.Endereco.Endereco := dmFuncoes.F_SemAcento(Cds_Grid.FieldByName('PES_ENDERECO').AsString); ACBrNFSe.NotasFiscais.Add.NFSe.Tomador.Endereco.Numero := dmFuncoes.F_SemAcento(Cds_Grid.FieldByName('PES_ENDNUMERO').AsString); ACBrNFSe.NotasFiscais.Add.NFSe.Tomador.Endereco.Complemento := dmFuncoes.F_SemAcento(Cds_Grid.FieldByName('PES_COMPLEMENTO').AsString); ACBrNFSe.NotasFiscais.Add.NFSe.Tomador.Endereco.Bairro := dmFuncoes.F_SemAcento(Cds_Grid.FieldByName('PES_BAIRRO').AsString); ACBrNFSe.NotasFiscais.Add.NFSe.Tomador.Endereco.CodigoMunicipio := IntToStr(Cds_Grid.FieldByName('PES_CODMUNIBGE').AsInteger); ACBrNFSe.NotasFiscais.Add.NFSe.Tomador.Endereco.UF := dmFuncoes.F_SemAcento(Cds_Grid.FieldByName('PES_UF').AsString); ACBrNFSe.NotasFiscais.Add.NFSe.Tomador.Endereco.CEP := dmFuncoes.StrZero(dmKernel.F_SoNumeros(Cds_Grid.FieldByName('PES_CEP').AsString),8,0); ACBrNFSe.NotasFiscais.Add.NFSe.Tomador.Endereco.xPais := 'BRASIL'; if Trim(Cds_Grid.FieldByName('PES_CEP').AsString) <> '' then begin ACBrNFSe.NotasFiscais.Add.NFSe.Tomador.Contato.Telefone := dmFuncoes.StrZero(dmKernel.F_SoNumeros(Cds_Grid.FieldByName('PES_DDTELEFONE').AsString),3,0) + dmKernel.F_SoNumeros(Cds_Grid.FieldByName('PES_FONE').AsString); end else begin ACBrNFSe.NotasFiscais.Add.NFSe.Tomador.Contato.Telefone := ''; end; ACBrNFSe.NotasFiscais.Add.NFSe.Tomador.Contato.Email := dmFuncoes.F_SemAcento(Cds_Grid.FieldByName('PES_EMAIL').AsString); end;