Este exemplo de uso mostra o fluxo de utilização do Componente eSocial em Fox Pro. 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.ConfigurarSoftwareHouse "12090234903", "GRk7PBfmzx5QaeJFHpMUI3GlyFatiGDUQAkezoPb"
eSocial.CpfCnpjEmpregador = "29062609000177"
eSocial.CpfCnpjTransmissor = "29062609000177"
eSocial.VersaoManual = "2.4.02"
eSocial.DiretorioTemplates = "C:\Program Files\TecnoSpeed\eSocial\Arquivos\Templates\"
eSocial.DiretorioEsquemas = "C:\Program Files\TecnoSpeed\eSocial\Arquivos\Esquemas\"
eSocial.Ambiente = 2
eSocial.NomeCertificado = ALLTRIM(thisform.cbcertificados.Value)
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.
thisform.mmoRetorno.Value = eSocial.GerarXMLporTx2(thisform.mmoRetorno.Value)
Assinar os eventos
Antes de enviarmos um XML do eSocial à SEFAZ, devemos assiná-lo digitalmente. Para isso, utilizamos o método AssinarEvento.
thisform.mmoRetorno.Value = eSocial.AssinarEvento(thisform.mmoRetorno.Value)
Enviar os eventos
Para enviar o lote de eventos à SEFAZ, utilizaremos o método EnviarLoteEventos.
PUBLIC RetEnvio As IspdRetEnviarLoteEventos
RetEnvio= eSocial.EnviarLoteEventos(thisform.mmoRetorno.Value, VAL(thisform.cbGrupo.value))
thisform.mmoRetorno.Value = " Retorno:"
thisform.mmoRetorno.Value = thisform.mmoRetorno.Value + chr(13)+chr(10) + " ID do lote: " + Retorno.IdLote
thisform.mmoRetorno.Value = thisform.mmoRetorno.Value + chr(13)+chr(10) + " 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.
PUBLIC _i as Integer
PUBLIC _j as Integer
PUBLIC _k as Integer
PUBLIC RetConsulta As IspdRetConsultarLote
PUBLIC RetConsultaItem As IspdRetConsultarLoteItem
PUBLIC RetConsultaOcorrencia As IspdRetConsultarLoteOcorrencia
PUBLIC RetConsultaOcorrenciaEnvio As IspdRetConsultarLoteOcorrenciaEnvio
RetConsulta = eSocial.ConsultarLoteEventos(ALLTRIM(thisform.edtIdLote.value))
thisform.mmoRetorno.Value = "### CONSULTA PROTOCOLO ###"
thisform.mmoRetorno.Value = thisform.mmoRetorno.Value + chr(13)+chr(10) + "Número do Protocolo: " + RetConsulta.NumeroProtocolo
thisform.mmoRetorno.Value = thisform.mmoRetorno.Value + chr(13)+chr(10) + "Mensagem de Retorno: " + RetConsulta.Mensagem
thisform.mmoRetorno.Value = thisform.mmoRetorno.Value + chr(13)+chr(10) + "Status do Lote: " + RetConsulta.Status
thisform.mmoRetorno.Value = thisform.mmoRetorno.Value + chr(13)+chr(10) + "Tempo estimado para conclusão do processamento: " + RetConsulta.TempoEstimadoConclusao
thisform.mmoRetorno.Value = thisform.mmoRetorno.Value + chr(13)+chr(10) + "Id do Lote: " + RetConsulta.IdLote
FOR _i = 0 to RetConsulta.Count -1
RetConsultaItem = RetConsulta.Eventos[_i]
thisform.mmoRetorno.Value = thisform.mmoRetorno.Value + chr(13)+chr(10) + " Evento: " + STR(_i + 1)
thisform.mmoRetorno.Value = thisform.mmoRetorno.Value + chr(13)+chr(10) + " Id Evento: " + RetConsultaItem.IdEvento
thisform.mmoRetorno.Value = thisform.mmoRetorno.Value + chr(13)+chr(10) + " Número Recibo: " + RetConsultaItem.NumeroRecibo
thisform.mmoRetorno.Value = thisform.mmoRetorno.Value + chr(13)+chr(10) + " Código de Status: " + RetConsultaItem.cStat
thisform.mmoRetorno.Value = thisform.mmoRetorno.Value + chr(13)+chr(10) + " Mensagem: " + RetConsultaItem.Mensagem
thisform.mmoRetorno.Value = thisform.mmoRetorno.Value + chr(13)+chr(10) + " Status do Evento: " + RetConsultaItem.Status
FOR _j = 0 to RetConsultaItem.Count -1
RetConsultaOcorrencia = RetConsultaItem.Ocorrencias[_j]
thisform.mmoRetorno.Value = thisform.mmoRetorno.Value + chr(13)+chr(10) + " Ocorrencia: " + STR(_j + 1)
thisform.mmoRetorno.Value = thisform.mmoRetorno.Value + chr(13)+chr(10) + " Código: " + RetConsultaOcorrencia.Codigo
thisform.mmoRetorno.Value = thisform.mmoRetorno.Value + chr(13)+chr(10) + " Descrição: " + RetConsultaOcorrencia.Descricao
thisform.mmoRetorno.Value = thisform.mmoRetorno.Value + chr(13)+chr(10) + " Tipo: " + RetConsultaOcorrencia.Tipo
thisform.mmoRetorno.Value = thisform.mmoRetorno.Value + chr(13)+chr(10) + " Localização: " + RetConsultaOcorrencia.Localizacao
NEXT
NEXT
FOR _k = 0 to RetConsulta.CountOcorrencias -1
RetConsultaOcorrenciaEnvio = RetConsulta.Ocorrencias[_k]
thisform.mmoRetorno.Value = thisform.mmoRetorno.Value + chr(13)+chr(10) + " Codigo: " + RetConsultaOcorrenciaEnvio.Codigo
thisform.mmoRetorno.Value = thisform.mmoRetorno.Value + chr(13)+chr(10) + " Tipo: " + RetConsultaOcorrenciaEnvio.Tipo
thisform.mmoRetorno.Value = thisform.mmoRetorno.Value + chr(13)+chr(10) + " Localização: " + RetConsultaOcorrenciaEnvio.Localizacao
thisform.mmoRetorno.Value = thisform.mmoRetorno.Value + chr(13)+chr(10) + "Descrição: " + RetConsultaOcorrenciaEnvio.Descricao
NEXT
* 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.