Este exemplo de uso mostra o fluxo de utilização do Componente eSocial em C#. Faça o download de nossos projetos no GitHub.
- Como utilizar o GitHub
- Link download do Projeto no Git: https://github.com/tecnospeed/Componente_eSocial.git
Para que o projeto funcione corretamente, é necessário adicionar a OCX às referencias do projeto (por padrão, a OCX está localizada em "C:\Windows\System32\ESocialClientX.ocx"). 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.
eSocial.CpfCnpjEmpregador = "29062609000177";
eSocial.CpfCnpjTransmissor = "29062609000177";
eSocial.VersaoManual = "2.4.02";
eSocial.DiretorioEsquemas = @"C:\Program Files\TecnoSpeed\eSocial\Arquivos\Esquemas";
eSocial.DiretorioTemplates = @"C:\Program Files\TecnoSpeed\eSocial\Arquivos\Templates";
eSocial.ConfigurarSoftwareHouse("Seu CNPJ ou CPF", "Seu Token");
eSocial.NomeCertificado = cbbCertificados.Text;
Gerar o XML
O primeiro passo para enviar um TX2 de um evento do eSocial é converter este TX2 em XML. Para fazer isso, utilizaremos o método GerarXMLporTX2.
mmRetorno.Text = eSocial.GerarXMLporTx2(mmRetorno.Text);
Assinar os eventos
Antes de enviarmos um XML do eSocial à SEFAZ, devemos assiná-lo digitalmente. Para isso, utilizamos o método AssinarEvento.
mmRetorno.Text = eSocial.AssinarEvento(mmRetorno.Text);
Enviar os eventos
Para enviar o lote de eventos à SEFAZ, utilizaremos o método EnviarLoteEventos.
ESocialClientX.IspdRetEnviarLoteEventos Retorno;
Retorno = eSocial.EnviarLoteEventos(mmRetorno.Text, 1);
mmRetorno.Text = "Retorno:" + Environment.NewLine;
mmRetorno.Text += " ID do lote: " + Retorno.IdLote + Environment.NewLine;
mmRetorno.Text += " Mensagem: " + Retorno.Mensagem + Environment.NewLine;
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.
ESocialClientX.IspdRetConsultarLote Lote;
Lote = eSocial.ConsultarLoteEventos(edtIDLote.Text);
mmXML.Text = "Lote:" + Environment.NewLine;
mmXML.Text += " Número do Protocolo: " + Lote.NumeroProtocolo + Environment.NewLine;
mmXML.Text += " Mensagem de Retorno: " + Lote.Mensagem + Environment.NewLine;
mmXML.Text += " Status do Lote: " + Lote.Status + Environment.NewLine;
mmXML.Text += " Tempo estimado para conclusão do processamento: " + Lote.TempoEstimadoConclusao + Environment.NewLine + Environment.NewLine;
mmXML.Text += Environment.NewLine;
for (var k = 0; k < Lote.CountOcorrencias(); k++)
{
mmXML.Text = "Lote:" + Environment.NewLine;
mmXML.Text += " Codigo: " + Lote.Ocorrencias[k].Codigo + Environment.NewLine;
mmXML.Text += " Tipo: " + Lote.Ocorrencias[k].Tipo + Environment.NewLine;
mmXML.Text += " Localização: " + Lote.Ocorrencias[k].Localizacao + Environment.NewLine;
mmXML.Text += " Descrição: " + Lote.Ocorrencias[k].Descricao + Environment.NewLine + Environment.NewLine;
}
for (var i = 0; i < Lote.Count(); i++)
{
mmXML.Text = "Evento:" + Environment.NewLine;
mmXML.Text += " Id Evento: " + Lote.Eventos[i].IdEvento + Environment.NewLine;
mmXML.Text += " Número Recibo: " + Lote.Eventos[i].NumeroRecibo + Environment.NewLine;
mmXML.Text += " Código de Status: " + Lote.Eventos[i].cStat + Environment.NewLine;
mmXML.Text += " Mensagem: " + Lote.Eventos[i].Mensagem + Environment.NewLine;
mmXML.Text += " Status do Evento: " + Lote.Eventos[i].Status + Environment.NewLine;
mmXML.Text += Environment.NewLine;
for (var j = 0; j < Lote.Eventos[i].Count(); j++)
{
mmXML.Text += " Ocorrência: " + (j + 1).ToString() + Environment.NewLine;
mmXML.Text += " Código: " + Lote.Eventos[i].Ocorrencias[j].Codigo + Environment.NewLine;
mmXML.Text += " Descrição: " + Lote.Eventos[i].Ocorrencias[j].Descricao + Environment.NewLine;
mmXML.Text += " Tipo: " + Lote.Eventos[i].Ocorrencias[j].Tipo + Environment.NewLine;
mmXML.Text += " Localização: " + Lote.Eventos[i].Ocorrencias[j].Localizacao + Environment.NewLine;
}
* Na demonstração de uso a consulta faz o mapeamento completo de retorno dos eventos S-5001, S-5002, S-5011 e S-5012
Comentários
0 comentário
Por favor, entre para comentar.