Este exemplo de uso mostra o fluxo de utilização do Componente EFD-Reinf em Delphi. Faça o download de nossos projetos no GitHub.
- Como utilizar o GitHub
- Link download do Projeto no Git: https://github.com/tecnospeed/Componente_REINF.git
Para que o projeto funcione corretamente, é necessário adicionar o caminho da TLB no Library Path (por padrão, a TLB está localizada em "C:\Program Files\TecnoSpeed\Reinf\Fontes\TLB"). Depois de adicionada, você já poderá executar o projeto normalmente.
Configurar o componente
As propriedades do componente devem ser configuradas antes de realizar a chamada de qualquer método. A propriedade ConfigurarSoftwareHouse espera receber o CNPJ ou CPF e o Token cadastrados na sua Conta TecnoSpeed.
Reinf.CpfCnpjEmpregador := '08187168';
Reinf.VersaoManual := "1.3.02";
Reinf.Ambiente := akPreProducaoReais;
Reinf.DiretorioEsquemas := 'C:\Program Files\TecnoSpeed\Reinf\Arquivos\Esquemas\';
Reinf.DiretorioTemplates := 'C:\Program Files\TecnoSpeed\Reinf\Arquivos\Templates\';
Reinf.ConfigurarSoftwareHouse('Seu CNPJ ou CPF', 'Seu Token');
Reinf.NomeCertificado := cbbCertificados.Text;
Gerar o XML
O primeiro passo para enviar um TX2 de um evento do EFD-Reinf é converter este TX2 em XML. Para fazer isso, utilizaremos o método GerarXMLporTX2.
mmRetorno.Text := Reinf.GerarXMLporTx2(mmRetorno.Text);
Assinar os eventos
Antes de enviarmos um XML do EFD-Reinf à SEFAZ, devemos assiná-lo digitalmente. Para isso, utilizamos o método AssinarEvento.
mmRetorno.Text := Reinf.AssinarEvento(mmRetorno.Text);
Enviar os eventos
Para enviar o lote de eventos à SEFAZ, utilizaremos o método EnviarLoteEventos.
var
Retorno: IspdRetEnviarLoteEventos;
begin
Retorno := Reinf.EnviarLoteEventos(mmRetorno.Text);
mmRetorno.Lines.Add(' Retorno:');
mmRetorno.Lines.Add(' ID Lote: ' + Retorno.IdLote);
mmRetorno.Lines.Add(' Mensagem: ' + Retorno.Mensagem);
Consultar os eventos
Para consultar um evento do eSocial que enviamos, utilizaremos o método ConsultarLoteEventos e informaremos o número de protocolo de um evento válido.
var
Lote: IspdRetConsultarLote;
_i, _j, _k: Integer;
begin
Lote := Reinf.ConsultarLoteEventos(edtIDLote.Text);
mmRetorno.Lines.Clear;
mmRetorno.Lines.Add('Lote:');
mmRetorno.Lines.Add(' Número do Protocolo: ' + Lote.NumeroProtocolo);
mmRetorno.Lines.Add(' Mensagem de Retorno: ' + Lote.Mensagem);
mmRetorno.Lines.Add(' Status do Lote: ' + Lote.Status);
for _i := 0 to Lote.Count - 1 do
begin
mmRetorno.Lines.Add('Evento ' + IntToStr(_i+1) + ':');
mmRetorno.Lines.Add(' Id Evento: ' + Lote.Eventos[_i].IdEvento);
mmRetorno.Lines.Add(' Número Recibo: ' + Lote.Eventos[_i].NumeroRecibo);
mmRetorno.Lines.Add(' Código de Status: ' + Lote.Eventos[_i].cStat);
mmRetorno.Lines.Add(' Mensagem: ' + Lote.Eventos[_i].Mensagem);
mmRetorno.Lines.Add(' Status do Evento: ' + Lote.Eventos[_i].Status + #13#10);
for _j := 0 to Lote.Eventos[_i].Count -1 do
begin
mmRetorno.Lines.Add(' Ocorrencia ' + IntToStr(_j+1) + ':');
mmRetorno.Lines.Add(' Código: ' + Lote.Eventos[_i].Ocorrencias[_j].Codigo);
mmRetorno.Lines.Add(' Descrição: ' + Lote.Eventos[_i].Ocorrencias[_j].Descricao);
end;
end;
for _k := 0 to Lote.CountOcorrencias - 1 do
begin
mmRetorno.Lines.Add('Lote:');
mmRetorno.Lines.Add(' Codigo: ' + Lote.Ocorrencias[_k].Codigo);
mmRetorno.Lines.Add(' Tipo: ' + Lote.Ocorrencias[_k].Tipo);
mmRetorno.Lines.Add(' Descrição: ' + Lote.Ocorrencias[_k].Descricao);
end;
* Na demonstração de uso a consulta faz o mapeamento completo de retorno dos eventos R-5001 e R-5011
Comentários
0 comentário
Por favor, entre para comentar.