O trabalho da TecnoSpeed no e-Social é com sua mensageria, realizando a geração do XML a partir do TX2 (nosso padrão de arquivos de integração) e facilitando na recepção do retorno dos eventos trazendo de uma forma mais clara (e parseada) o retorno da receita.
O Componente e-Social da Tecnospeed é uma biblioteca contendo todos os métodos necessários para emitir os eventos que a receita exige. É a escolha ideal para quem pode consumir OCX e prefere manter todo o processo de mensageria dentro do próprio ambiente. Para utilizar o Componente em seu software, basta instanciá-lo em seu projeto, implementar chamadas para cada um dos métodos e configurá-los de acordo com sua necessidade.
- Conta TecnoSpeed
- Instalar Componente eSocial
- Instanciar Componente eSocial
- Configurar Propriedades
- Fluxo de Emissão
- Gerar arquivo de Integração
- Gerar XML
- Assinar XML
- Enviar Evento
- Consultar Eventos
- Verificar Ocorrências
- Correções de Informações
Conta Tecnospeed
O primeiro passo, é realizar a criação da sua Conta TecnoSpeed
A Conta TecnoSpeed permite gerenciar as configurações e ferramentas para acessar os nossos produtos e serviços em um único lugar, de forma simples e fácil.
Caso ainda não tenha uma Conta TecnoSpeed, você pode criar a sua conta agora mesmo. Com esta conta, você terá acesso à todos os produtos que a TecnoSpeed oferece.
Utilizando a conta
Após se cadastrar, você poderá visualizar o seu Token. Juntamente com o seu CNPJ ou CPF, este Token será utilizado para se autenticar na maioria de nossos serviços.
O Token juntamente com o CNPJ ou CPF será utilizado no método ConfigurarSoftwareHouse, onde você deve passar ambos como parâmetro, eles também servem para autenticar a requisição caso utilize nossa API para o envio das informações.
Acesse a sua Conta TecnoSpeed >
Instalar Componente eSocial
Após aprovação do pedido de adesão, em até 24 horas úteis, nossa equipe financeira irá realizar o faturamento e disponibilizar o Componente e-Social para download na Central do Cliente. Você pode acessar a Central do Cliente com os dados de acesso que você preencheu no formulário de registro (aquele que você preencheu um pouco antes de assinar o contrato).
Com o Componente já disponível, na aba lateral Download, clique no botão Baixar. Caso o download não inicie, desabilite o bloqueador de pop-ups do seu navegador.
Existem dois instaladores disponíveis para download na Central do Cliente: O Setup Full(deve ser instalado no ambiente de desenvolvimento) e o Setup Dependencies(deve ser instalado no ambiente onde o sistema for ser executado.).
No ambiente de desenvolvimento
Para realizar a instalação do componente na maquina do desenvolvimento, basta realizar o download do arquivos identificado com o nome INSTALADOR, em seguida você deverá seguir as instruções em tela.
A segunda tela irá mostrar o caminho onde os arquivos serão salvos, recomendamos deixar no diretório padrão "C:\Program Files\TecnoSpeed\eSocial" porém, você pode alterá-lo para que se ajuste a sua demanda. Feito isso, clique em avançar novamente.
No ambiente do cliente
A instalação no ambiente do cliente é bem mais simples.
Basta executar o aplicativo identificado com o nome DEPENDENCIAS e seguir os passos seguindo as recomendações em tela
Pronto, a maquina do cliente está pronta para a utilização do componente eSocial.
Instanciar o Componente
Após a instalação do componente, é necessário instanciar a classe no projeto para fazer as modificações necessárias em suas propriedades e também utilizar os seus métodos.
Aqui iremos te mostrar passo a passo como instanciar a classe em três das linguagens, Delphi, C# e VB6.
Delphi
No Delphi há duas formas de instanciar o componente. Você pode arrastar os ícones do componente na barra de ferramentas para dentro do seu unit ou fazê-lo de forma manual, adicionando no uses do projeto:
uses
ESocialS12ClientX_TLB
Em seguida é necessário criar as variáveis das classes, como no exemplo a baixo.
type
TForm1 = class(TForm)
public
eSocial: TspdESocialS12ClientX;
Independente da forma com que você trouxe as classes ao projeto, agora você deve criar o objeto e direcioná-lo a uma variável:
eSocial := TspdESocialS12ClientX.Create(nil);
VB6
Primeiramente, declare o objeto pertencente à classe que faz interação com os servidores da Sefaz
Public eSocial As ESocialS12ClientX.spdESocialSClientX
Após isso, já na inicialização do Fom, instancie o objeto dentro de uma nova variável.
Set eSocial = New ESocialS12ClientX.spdESocialSClientX
C#
No início do seu projeto, junto com as bibliotecas importadas, adicione as OCX da Tecnospeed
using ESocialS12ClientX;
Após isso, instancie o objeto dentro de uma nova variável
public ESocialS12ClientX.spdESocialS12ClientX eSocial = new ESocialS12ClientX.spdESocialS12ClientX();
Configurar Propriedades
O componente eSocial possui algumas propriedades que precisam estar configuradas para que seja possível realizar sua utilização de forma correta.
Temos um lista de todas as propriedades do componente.
Algumas dessas propriedades são obrigatórias para que seja possível utilizar o componente. São elas:
- Ambiente
- CpfCnpjEmpregador
- CpfCnpjTransmissor
- DiretorioEsquemas
- DiretorioTemplates
- NomeCertificado ou CaminhoCertificado e SenhaCertificado
- VersaoManual
Também é necessário utilizar o método ConfigurarSoftwareHouse, onde você passa o CNPJ e Token cadastrados em nossa Conta TecnoSpeed.
Utilizando Proxy
Caso o seu cliente possua uma rede com proxy, ele pode adotar duas abordagens:
É possível adicionar a rota da TecnoSpeed (https://api.tecnospeed.com.br) dentro das urls que tem permissão ou configurar as propriedades: ProxyUsuario, ProxyServidor e ProxySenha para que o componente tenha permissão de enviar e receber informações.
NomeCertificado e VersaoManual
Ambas as propriedades recebem valores String, porém, o valor delas é retornando por um método do nosso componente, o qual você pode utilizar para facilitar a configuração do mesmo.
O método ListarCertificados retorna uma lista com o nome de todos os certificados instalados no usuário atual da maquina. É importante que a instalação tenha ocorrido corretamente (principalmente com certificado A3 [Smart card]) caso ocorra problemas com o certificado A3 ou com o A1 (arquivo .pfx), remova o certificado e instale novamente. Com essa lista você pode selecionar e configurar o certificado que desejar para a propriedade NomeCertificado.
No caso dos certificados A1, é possível configurar as propriedades CaminhoCertificado e SenhaCertificado, nesse caso não é necessária a instalação do certificado na maquina.
No caso da propriedade VersaoManual existe o método ListarVersaoManual, o qual retorna da nossa API as versão válidas que a receita está utilizando. Esse método também retorna uma lista de versões que facilita para a escolha e configuração da propriedade VersaoManual.
Fluxo ideal da emissão eSocial
Para facilitar os retorno dos eventos já processados pela receita, a TecnoSpeed armazena as informações de envio e consulta em um banco de dados para que seja possível o retorno mais rápido desses eventos.
Todo o processo de comunicação com a receita (envio e retorno dos eventos) é feito através da API da TecnoSpeed para que consuma o minimo de recursos possíveis das maquinas de seus clientes.
O fluxo de emissão do eSocial é bem simples, após realizar toda a configuração do componente, você irá gerar o xml, assina-lo, envia-lo. Após o envio do lote, a TecnoSpeed retorna um ID de Lote que identifica seu lote em nosso servidor.
Feito isso, a receita irá fazer todas as validações necessárias no lote e nos eventos e após o fim da validação, retornar com o Recibo (em caso de autorização) ou com as ocorrências do lote/evento para que seja possível analisar e ajustar os erros.
É necessário enviar uma consulta do ID de Lote retornado no envio, para saber se o lote foi autorizado ou não. Somente com esta consulta você terá o resultado do processamento.
Todos esses passos são realizados através do nosso componente, e veremos tudo isso de forma mais detalhada.
Gerar arquivo de Integração
Com o componente configurado é possível começar a geração dos eventos da receita.
Os eventos são divididos em três categorias:
A TecnoSpeed criou um arquivo único de integração (tx2), onde as mudanças de leiaute na receita influencia de forma menos impactante no momento do desenvolvimento, evitando retrabalho e agilizando as atualizações entre versões de leiaute da receita
Existem algumas boas praticas na geração do tx2 que a TecnoSpeed recomenda, para o eSocial e indispensável colocar todos os valores monetários separados apenas pelo decimal e com o ponto "." .
A geração do arquivo se torna bem simples, sendo necessário seguir as regras da receita e realizar o preenchimento com as informações dos clientes..
Dicionário de Dados
Para gerar o arquivo de integração utilizando um arquivo TX2, é necessário seguir o Dicionário de Dados.
O Dicionário de dados é uma tabela com os campos e algumas informações sobre cada campo. A tabela abaixo exemplifica o que significa cada coluna do dicionário.
Coluna | Função |
# | Identificador do campo, é utilizado na montagem do nome do campo no tx2. |
Registro/Campo | Nome do campo |
Registro Pai | Registro que identifica a hierarquia do campo em questão |
Tam | Tamanho máximo que o campo pode possuir |
Ocor | Ocorrência do campo/bloco, identifica os campos e blocos que são obrigatório ou não e quais podem ter múltiplas ocorrências. |
Desc | Descrição do campo e validação que pode ser aplicadas no mesmo. |
O nome do campo do Tx2 seria a junção do Registro/Campo_#, exemplo tpAmb_4.
Inicializando e Finalizando arquivos de integração
Para indicar o início e o fim dos dados da nota, é necessário utilizar a o comando INCLUIRSXXXX no começo e o comando SALVARSXXXX no final da inclusão dos campos. Entre estes comandos, os campos devem ser incluídos seguindo o formato exemplificado abaixo.
O XXXX é referente ao evento que está enviando, por exemplo, ao enviar o evento S-1010 você irá informar: INCLUIRS1010 e SALVARS1010
Exemplo da estrutura em TX2:
INCLUIRS1010
tpAmb_4=2
procEmi_5=1
verProc_6=1.0
tpInsc_8=1
...
SALVARS1010
Informando grupos que podem se repetir
Para indicar o início e o fim dos grupos que podem se repetir, é necessário utilizar a o comando INCLUIR(NOMEDOGRUPO) no começo e o comando SALVAR(NOMEDOGRUPO) no final do grupo. Entre estes comandos, os campos devem ser incluídos seguindo o formato exemplificado abaixo.
O (NOMEDOGRUPO) é referente ao grupo que vou repetir, por exemplo se terei varias ocorrencias do grupo IDEPROCESSOIRRF_35 eu colocarei: INCLUIRIDEPROCESSOIRRF_35 e SALVARIDEPROCESSOIRRF_35
Exemplo da estrutura em TX2:
INCLUIRIDEPROCESSOIRRF_35
nrProc_36=
codSusp_37=
SALVARIDEPROCESSOIRRF_35
INCLUIRIDEPROCESSOIRRF_35
nrProc_36=
codSusp_37=
SALVARIDEPROCESSOIRRF_35
Gerar XML
Feito a geração do Tx2 agora precisamos gerar o XML, que será assinado e enviado para a receita!
A geração do XML é bem simples, basta passar ao método GerarXMLporTx2 o Tx2 como um parâmetro e ele irá retornar o XML gerado.
Assinar XML
Cada certificado possui uma identificação única, que é o que o componente utilizará para selecionar o certificado correto ao realizar a assinatura. É possível listar todos os certificados digitais utilizando o método ListarCertificados.
Este método retornará uma lista com as identificações dos certificado, tanto do modelo A1 quanto do modelo A3 (que possui um cartão físico), instalados no repositório pessoal do Windows. A identificação é uma string parecida com esta:
CN=TECNOSPEED S A:00000000000000, OU=Certificado PJ A1, O=ICP-Brasil, C=BR, S=, L=, E=, SE=00 00 00 00 00 00 00 00
Informando o nome do Certificado Digital
Para selecionar o Certificado Digital que será utilizado na assinatura, basta informar o nome do certificado (esta identificação que o método ListarCertificados retornou) na propriedade NomeCertificado.
Para configurar a propriedade, é possível utilizar um arquivo de configuração (.ini) ou configurar através do código fonte. O artigo Configurando as propriedades detalha o funcionamento das propriedades.
Realizando a assinatura do XML
Para assinar o XML de envio, é necessário utilizar o método AssinarEvento. Como parâmetro, é necessário informar o XML sem assinatura como string. O método retornará o mesmo XML passado como parâmetro na função, porém ele terá as tags de assinatura em seu conteúdo.
Enviar Evento
Para enviar um evento a Receita é necessário possuir o XML gerado e assinado. Basta passar o xml para o método EnviaLoteEventos juntamente com o id do grupo desse evento, que deve seguir:
-
1 - Eventos Iniciais / Tabela;
-
2 - Eventos Não Periódicos;
-
3 - Eventos Periódicos.
Feito isso você recebera o id de lote e poderá realizar a consulta do evento para obter o retorno da receita!
Consultar Eventos
Com a consulta dos eventos é possível verificar o retorno da receita bem como o XML enviado e o XML de retorno.
A forma mais comum de consultar os eventos é utilizando o Id de lote (que é retornado no envio do evento), também é possível consultar os eventos através do id do evento e do recibo. Veja a diferença deles em nosso post!
A consulta permite também que você verifique o retorno dos eventos totalizadores:
Para recepcionar os seus valores de forma mais fácil, a TecnoSpeed parseia os dados do evento, você pode verificar um exemplo da consulta em nossas demos disponibilizadas no GitHub.
Verificar Ocorrências
Quando você receber o retorno da consulta do lote é possível que ele tenha retornado com ocorrências, essas ocorrências, indicam erros no arquivo, tais erros podem ser corrigidos para que o lote seja enviado novamente.
Existem 2 tipos de ocorrências, as ocorrências do lote e do evento.
Ocorrência de Lote
É possível verificar se tiveram ocorrências no lote através do CountOcorrencias, ele retornará a quantidade de ocorrências no lote caso existe, é possível verificar um exemplo de uso em nosso post referente a consulta dos eventos.
Ocorrência de Evento
Também é possível verificar, nos casos de erros no evento, as ocorrências do evento. o Count dentro da classe IspdRetConsultarLoteItem possui a contagem de ocorrências caso existam, e através dela podemos fazer o laço para verificar todas as ocorrências geradas, temos um exemplo em código em nosso post de consulta dos eventos.
Correções de Informações
No eSocial é possível realizar a correção de informações já enviadas e a exclusão de eventos que foram enviados erroneamente. Para isso temos as alterações e exclusões dos eventos. Eles são diferentes para os eventos iniciais e de tabela para com os demais eventos.
Alteração de eventos iniciais ou de tabela
Para realizar uma retificação dos eventos iniciais ou de tabela é necessário utilizar a Tag ALTERAR no lugar da Tag INCLUIR, conforme exemplo de ambos os eventos.
É importante lembrar que os campos de identificação devem ser enviado igual ao do evento que foi previamente autorizado. Os campos de identificação são os campos que não podem se repetir em mais de um evento, geralmente são os primeiros 3 grupo e estão identificados com as 3 tags, INCLUIR, ALTERAR e EXCLUIR.
Exemplo:
Para alterar a data de validade desses eventos é necessário informar os campos do grupo novaValidade que terá um id diferente para cada evento Inicial ou de tabela.
Exemplo:
Se você enviar o arquivo:
INCLUIRS1000
tpAmb_4=2
procEmi_5=1
verProc_6=1.0
tpInsc_8=1
nrInsc_9=13930441
iniValid_13=2017-07
fimValid_14=
nmRazao_15=TECNOSPEED TECNOLOGIA DA INFORMACAO
classTrib_16=99
natJurid_17=2054
indCoop_18=0
indConstr_19=0
indDesFolha_20=0
indOptRegEletron_21=0
indEntEd_23=N
indEtt_24=N
nrRegEtt_25=
ideMinLei_27=
nrCertif_28=
dtEmisCertif_29=
dtVencCertif_30=
nrProtRenov_31=
dtProtRenov_32=
dtDou_33=
pagDou_34=
nmCtt_36=João da Silva
cpfCtt_37=52406715167
foneFixo_38=4430379500
foneCel_39=7867834687
email_40=
nrSiafi_42=
ideEFR_44=
cnpjEFR_45=
nmEnte_47=
uf_48=
codMunic_49=
indRPPS_50=
subteto_51=
vrSubteto_52=
indAcordoIsenMulta_54=
INCLUIRSOFTWAREHOUSE_55
cnpjSoftHouse_56=13930441000134
nmRazao_57=Empresa de Teste
nmCont_58=Nome do Contato
telefone_59=4430303030
email_60=
SALVARSOFTWAREHOUSE_55
indSitPJ_63=0
indSitPF_65=
SALVARS1000
E precisar incluir ou alterar as datas de validade do mesmo, você irá enviar o arquivo:
ALTERARS1000
tpAmb_4=2
procEmi_5=1
verProc_6=1.0
tpInsc_8=1
nrInsc_9=13930441
iniValid_13=2017-07
fimValid_14=
nmRazao_15=TECNOSPEED TECNOLOGIA DA INFORMACAO
classTrib_16=99
natJurid_17=2054
indCoop_18=0
indConstr_19=0
indDesFolha_20=0
indOptRegEletron_21=0
indEntEd_23=N
indEtt_24=N
nrRegEtt_25=
ideMinLei_27=
nrCertif_28=
dtEmisCertif_29=
dtVencCertif_30=
nrProtRenov_31=
dtProtRenov_32=
dtDou_33=
pagDou_34=
nmCtt_36=João da Silva
cpfCtt_37=52406715167
foneFixo_38=4430379500
foneCel_39=7867834687
email_40=
nrSiafi_42=
ideEFR_44=
cnpjEFR_45=
nmEnte_47=
uf_48=
codMunic_49=
indRPPS_50=
subteto_51=
vrSubteto_52=
indAcordoIsenMulta_54=
INCLUIRSOFTWAREHOUSE_55
cnpjSoftHouse_56=13930441000134
nmRazao_57=Empresa de Teste
nmCont_58=Nome do Contato
telefone_59=4430303030
email_60=
SALVARSOFTWAREHOUSE_55
indSitPJ_63=0
indSitPF_65=
iniValid_66=2017-05
fimValid_67=2017-09
SALVARS1000
*Os campos: tpAmb_4, procEmi_5, verProc_6, tpInsc_8, nrInsc_9, iniValid_13, fimValid_14 são utilizados para a identificação do evento pela receita, logo, devem ser iguais ao evento autorizado.
Caso precisa apenas alterar alguma informação, como o classTrib_16 você pode enviar o arquivo da seguinte forma:
ALTERARS1000
tpAmb_4=2
procEmi_5=1
verProc_6=1.0
tpInsc_8=1
nrInsc_9=13930441
iniValid_13=2017-07
fimValid_14=
nmRazao_15=TECNOSPEED TECNOLOGIA DA INFORMACAO
classTrib_16=01
natJurid_17=2054
indCoop_18=0
indConstr_19=0
indDesFolha_20=0
indOptRegEletron_21=0
indEntEd_23=N
indEtt_24=N
nrRegEtt_25=
ideMinLei_27=
nrCertif_28=
dtEmisCertif_29=
dtVencCertif_30=
nrProtRenov_31=
dtProtRenov_32=
dtDou_33=
pagDou_34=
nmCtt_36=João da Silva
cpfCtt_37=52406715167
foneFixo_38=4430379500
foneCel_39=7867834687
email_40=
nrSiafi_42=
ideEFR_44=
cnpjEFR_45=
nmEnte_47=
uf_48=
codMunic_49=
indRPPS_50=
subteto_51=
vrSubteto_52=
indAcordoIsenMulta_54=
INCLUIRSOFTWAREHOUSE_55
cnpjSoftHouse_56=13930441000134
nmRazao_57=Empresa de Teste
nmCont_58=Nome do Contato
telefone_59=4430303030
email_60=
SALVARSOFTWAREHOUSE_55
indSitPJ_63=0
indSitPF_65=
SALVARS1000
Eventos Periódicos e Não Periódicos
Para os eventos periódicos e não periódicos é necessário enviar um novo evento com as alterações preenchendo os campos indRetif_4 e nrRecibo_5.
O campo indRetif_4 deve ir com o valor 2, indicando ser uma retificação. O campo nrRecibo_5 deverá conter o número de recibo do evento autorizado que será retificado.
Exemplo:
Regras a considerar para a geração do Tx2
INCLUIRS1207
indRetif_4=2
nrRecibo_5=127309-08-2010-1809-128409
indApuracao_6=1
perApur_7=2017-08
tpAmb_8=2
procEmi_9=1
verProc_10=1.0
tpInsc_12=1
nrInsc_13=13930441
cpfBenef_15=06332328827
INCLUIRDMDEV_16
tpBenef_17=1
nrBenefic_18=123
ideDmDev_19=123
INCLUIRITENS_20
codRubr_21=1
ideTabRubr_22=
vrRubr_23=1
SALVARITENS_20
SALVARDMDEV_16
SALVARS1207
Exclusão de eventos iniciais ou de tabela
Para realizar uma exclusão dos eventos Iniciais ou de Tabela é necessário utilizar a Tag EXCLUIR no lugar da Tag INCLUIR, conforme exemplo de ambos os eventos.
Exemplo:
EXCLUIRS1000
tpAmb_4=2
procEmi_5=1
verProc_6=1.0
tpInsc_8=1
nrInsc_9=13930441
iniValid_13=2017-07
fimValid_14=
SALVARS1000
Onde você estará informando apenas os dados de localização do evento. Esses dados devem ser os mesmo do arquivo que foi autorizado.
Exclusão de eventos periódicos ou não periódicos
Para os eventos periódicos e não periódicos é necessário enviar o evento S-3000 - Exclusão de Eventos.
Exclusão de base de dados
A receita disponibiliza uma forma para que você possa excluir toda a sua base de dados no ambiente de Pre Produção Restrita.
Para isso você deve enviar a inclusão de um S-1000 e informar alguns campos com valores diferentes, são eles:
nmRazao_15=RemoverEmpregadorDaBaseDeDadosDaProducaoRestrita
classTrib_16=00
Só é possível utilizar esse processo no ambiente de Pre Produção Restrita, tpAmb_4=2
Exemplo:
Regras a considerar para a geração do Tx2
INCLUIRS1000 tpAmb_4=2 procEmi_5=1 verProc_6=1.0 tpInsc_8=1 nrInsc_9=13930441 iniValid_13=2017-07 fimValid_14= nmRazao_15=RemoverEmpregadorDaBaseDeDadosDaProducaoRestrita classTrib_16=00 natJurid_17=2054 indCoop_18=0 indConstr_19=0 indDesFolha_20=0 indOptRegEletron_21=0 indEntEd_23=N indEtt_24=N nrRegEtt_25= ideMinLei_27= nrCertif_28= dtEmisCertif_29= dtVencCertif_30= nrProtRenov_31= dtProtRenov_32= dtDou_33= pagDou_34= nmCtt_36=João da Silva cpfCtt_37=52406715167 foneFixo_38=4430379500 foneCel_39=7867834687 email_40= nrSiafi_42= ideEFR_44= cnpjEFR_45= nmEnte_47= uf_48= codMunic_49= indRPPS_50= subteto_51= vrSubteto_52= indAcordoIsenMulta_54= INCLUIRSOFTWAREHOUSE_55 cnpjSoftHouse_56=13930441000134 nmRazao_57=Empresa de Teste nmCont_58=Nome do Contato telefone_59=4430303030 email_60= SALVARSOFTWAREHOUSE_55 indSitPJ_63=0 indSitPF_65= SALVARS1000
Comentários
0 comentário
Por favor, entre para comentar.