Ir para conteúdo
  • Cadastre-se

dev botao

Posso informar mais de uma rubrica no evento S-1010 ?


  • Este tópico foi criado há 1893 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Consultores

Boa tarde Anderson,

O sequencial tem que mudar, caso contrario ocorrera erro de validação.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

17 horas atrás, Italo Jurisato Junior disse:

Boa tarde Anderson,

O sequencial tem que mudar, caso contrario ocorrera erro de validação.

Italo, obrigado por responder.
Eu li no manual e entendi que o "Sequencial" é do arquivo e a cada dia ele começa do zero.
Então não é isso? O sequencial é incrementado a cada ADD?
 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Anderson,

Se você monta um lote com 10 eventos S-1010, por exemplo, cada um deles deverá ter um sequencial diferente, ou seja, 1, 2, 3, ... vamos a um exemplo.

O Lote contem 4 eventos:

1 evento S-1000 ==> sequencial = 1

2 eventos S-1005==> sequencial = 2 e 3

1 evento S-1010==> sequencial = 4

Como a chave é composta por: tipo de inscrição, numero da inscrição, data, hora e sequencial se for gerado dois eventos no mesmo horário (hora, minuto, segundo) e com mesmo sequencial teremos problemas ao realizar a validação do lote antes do seu envio.

Infelizmente o pessoal que idealizou o eSocial poderia ter pensando um pouco mais e ter incluído na chave o numero do evento e não o horário, desta forma poderíamos ter um sequencial controlado pela aplicação para cada tipo de evento.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

4 horas atrás, Italo Jurisato Junior disse:

Bom dia Anderson,

Se você monta um lote com 10 eventos S-1010, por exemplo, cada um deles deverá ter um sequencial diferente, ou seja, 1, 2, 3, ... vamos a um exemplo.

O Lote contem 4 eventos:

1 evento S-1000 ==> sequencial = 1

2 eventos S-1005==> sequencial = 2 e 3

1 evento S-1010==> sequencial = 4

Como a chave é composta por: tipo de inscrição, numero da inscrição, data, hora e sequencial se for gerado dois eventos no mesmo horário (hora, minuto, segundo) e com mesmo sequencial teremos problemas ao realizar a validação do lote antes do seu envio.

Infelizmente o pessoal que idealizou o eSocial poderia ter pensando um pouco mais e ter incluído na chave o numero do evento e não o horário, desta forma poderíamos ter um sequencial controlado pela aplicação para cada tipo de evento.

Entendi.
E o sequencial começa do zero a cada nova data ou é continuo?
 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Anderson,

O que você acha de realizar um teste?

Envie um lote hoje e amanhã você envia outro lote e inicie o numero sequencial do 1 novamente.

Se for aceito sem nenhum problema significa que pode, caso contrario o lote será rejeitado e vai acusar o motivo.

Fico no aguardo do seu retorno com o resultado desse teste.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • 5 meses depois ...
Em 08/03/2018 at 22:41, anderson.mendonca disse:

Caros colegas desenvolvedores,
Gostaria de saber se posso informar mais de uma rubrica no mesmo evento S-1010 e se posso, como adiciono mais um ?
Obrigado.
 

Bom dia! Eu tenho a mesma dúvida pois quando faço "With ACBreSocial.Eventos.Tabelas.S1010.Add Do" é criado um arquivo por rubrica e não consigo fazer sair mais de uma rubrica por arquivo de jeito nenhum...

 

  If (Not jvmm1010.IsEmpty) Then
  Begin
    jvmm1010.First;

    While (Not jvmm1010.Eof) Do
    Begin
      AtualizaDadosS1010Aux;

      With ACBreSocial.Eventos.Tabelas.S1010.Add Do
      Begin
        evtTabRubrica.Sequencial := RetornaSequencia('S1010');

        If (rgTipoAmb.ItemIndex = 0) Then
          evtTabRubrica.IdeEvento.TpAmb := pcesConversaoeSocial.taProducao
        Else
          evtTabRubrica.IdeEvento.TpAmb := pcesConversaoeSocial.taProducaoRestrita;

        evtTabRubrica.IdeEvento.ProcEmi := TpProcEmi(0);
        evtTabRubrica.IdeEvento.VerProc := '1.0';

        If (cbxS1010_tpInsc.ItemIndex = 0) Then
          evtTabRubrica.IdeEmpregador.TpInsc := tiCNPJ
        Else
          evtTabRubrica.IdeEmpregador.TpInsc := tiCPF;

        evtTabRubrica.IdeEmpregador.NrInsc := mskS1010_nrInsc.Text;

        Case rdgOperacao.ItemIndex Of
          0 : evtTabRubrica.ModoLancamento := mlInclusao;
          1 : evtTabRubrica.ModoLancamento := mlAlteracao;
          2 : evtTabRubrica.ModoLancamento := mlExclusao;
        End;

        evtTabRubrica.infoRubrica.IdeRubrica.CodRubr := edtS1010_codRubr.Text;
        evtTabRubrica.infoRubrica.IdeRubrica.ideTabRubr := edtS1010_ideTabRubr.Text;
        evtTabRubrica.infoRubrica.IdeRubrica.IniValid := mskS1010_iniValid.Text;
        evtTabRubrica.infoRubrica.IdeRubrica.FimValid := mskS1010_fimValid.Text;

        evtTabRubrica.infoRubrica.DadosRubrica.dscRubr := edtS1010_dscRubr.Text;

        evtTabRubrica.infoRubrica.DadosRubrica.natRubr := StrToInt(trim(Copy(cbxS1010_natRubr.Text, 01, 04)));

        evtTabRubrica.infoRubrica.DadosRubrica.tpRubr := tpTpRubr(cbxS1010_tpRubr.ItemIndex +1);
        evtTabRubrica.infoRubrica.DadosRubrica.codIncCP := tpCodIncCP(cbxS1010_codIncCP.ItemIndex +1);
        evtTabRubrica.infoRubrica.DadosRubrica.codIncIRRF := tpCodIncIRRF(cbxS1010_codIncIRRF.ItemIndex +1);
        evtTabRubrica.infoRubrica.DadosRubrica.codIncFGTS := tpCodIncFGTS(cbxS1010_codIncFGTS.ItemIndex +1);
        evtTabRubrica.infoRubrica.DadosRubrica.codIncSIND := tpCodIncSIND(cbxS1010_codIncSIND.ItemIndex +1);
        evtTabRubrica.infoRubrica.DadosRubrica.observacao := edtS1010_observacao.Text;

        evtTabRubrica.infoRubrica.DadosRubrica.IdeProcessoCP.Clear;
        If (Trim(edtS1010_ideProcessoCP_nrProc.Text) <> '') Then
        Begin
          with evtTabRubrica.infoRubrica.DadosRubrica.IdeProcessoCP.Add do
          begin
            tpProc := tpTpProc(cbxS1010_ideProcessoCP_tpProc.ItemIndex +1);
            nrProc := edtS1010_ideProcessoCP_nrProc.Text;
            ExtDecisao := tpExtDecisao(cbxS1010_ideProcessoCP_extDecisao.ItemIndex +1);
            codSusp := edtS1010_ideProcessoCP_codSusp.Text;
          end;
        End;

        evtTabRubrica.infoRubrica.DadosRubrica.IdeProcessoIRRF.Clear;
        If (Trim(cbxS1010_IRRPF_nrProc.Text) <> '') Then
        Begin
          with evtTabRubrica.infoRubrica.DadosRubrica.IdeProcessoIRRF.Add do
          begin
            evtTabRubrica.infoRubrica.DadosRubrica.IdeProcessoIRRF.Add.nrProc := cbxS1010_IRRPF_nrProc.Text;
            evtTabRubrica.infoRubrica.DadosRubrica.IdeProcessoIRRF.Add.codSusp := cbxS1010_IRRPF_codSusp.Text;
          end;
        End;

        evtTabRubrica.infoRubrica.DadosRubrica.IdeProcessoFGTS.Clear;
        If (Trim(gbx1010_ideProcessoFGTS_nrProc.Text) <> '') Then
        Begin
          with evtTabRubrica.infoRubrica.DadosRubrica.IdeProcessoFGTS.Add do
          begin
            evtTabRubrica.infoRubrica.DadosRubrica.IdeProcessoFGTS.Add.nrProc := gbx1010_ideProcessoFGTS_nrProc.Text;
            evtTabRubrica.infoRubrica.DadosRubrica.IdeProcessoFGTS.Add.codSusp := gbx1010_ideProcessoFGTS_codSusp.Text;
          end;
        End;

        evtTabRubrica.infoRubrica.DadosRubrica.IdeProcessoSIND.Clear;
        If (Trim(gbx1010_ideProcessoSIND_nrProc.Text) <> '') Then
        Begin
          with evtTabRubrica.infoRubrica.DadosRubrica.IdeProcessoSIND.Add do
          begin
            nrProc := gbx1010_ideProcessoSIND_nrProc.Text;
            codSusp := gbx1010_ideProcessoSIND_codSusp.Text;
          end;
        End;

        if (evtTabRubrica.ModoLancamento = mlAlteracao) then
        begin
          evtTabRubrica.infoRubrica.NovaValidade.IniValid := mskS1010_iniValid.Text;
          evtTabRubrica.infoRubrica.NovaValidade.FimValid := mskS1010_fimValid.Text;
        end;
      end;
      jvmm1010.Next;
    End;
  End;
 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Bom dia Mariana

O código que você postou apenas carrega as informações de um evento que será adicionado na lista de eventos que será incluída no lote. Você precisa cuidar para que não seja adicionado mais que 50 eventos, que é o máximo permitido por lote. Dentro de seu while, para cada evento você ainda precisa chamar o comando  evtTabRubrica.GerarXML, onde o ACBR vai carregar o ID do evento (caso não tenho sido atribuido) e assinar.

O arquivo na verdade será criado quando você chamar o comando ACBreSocial.Enviar(egIniciais), que é quando o arquivo XML será salvo na pasta especificada nas configurações do ACBR, isso se a opção de salvar o XML também estiver ativada, e o XML contendo os eventos carregados no lote (através dos comandos ACBreSocial.Eventos.Tabelas.S1010.Add) serão transmitidos.

Logo após a transmissão deve-se esperar um tempinho através do comando Sleep(3000) e efetuar a consulta do protocolo do lote:

var RetornoEnvioLote: TRetEnvioLote;
	DataHoraDaRecepcaoDoLote: string;
	VersaoDoAplicativoNaRecepcao: string;
	ProtocoloDoEnvioDoLote: string;

begin
  RetornoEnvioLote := ACBreSocial.WebServices.EnvioLote.RetEnvioLote;

  if RetornoEnvioLote.Status.cdResposta in [201, 202] then begin 	

    DataHoraDaRecepcaoDoLote := RetornoEnvioLote.dadosRecLote.dhRecepcao;
    VersaoDoAplicativoNaRecepcao := RetornoEnvioLote.dadosRecLote.versaoAplicRecepcao;

	// ProtocoloDoEnvioDoLote deverá ser usado para obter depois o resultado do processamento do lote
    ProtocoloDoEnvioDoLote := RetornoEnvioLote.dadosRecLote.Protocolo;  
  end;
end;

 

Link para o comentário
Compartilhar em outros sites

  • 4 meses depois ...
Em 08/03/2018 at 22:41, anderson.mendonca disse:

Caros colegas desenvolvedores,
Gostaria de saber se posso informar mais de uma rubrica no mesmo evento S-1010 e se posso, como adiciono mais um ?
Obrigado.
 

Eu estou com essa dúvida também. Eu até gerei o XML em anexo com duas rubricas em um único evento eSocial e consegui enviar normalmente. Contudo, não sei como fazer isso usando os componentes ACBreSocial.

Em outras palavras, o ACBreSocial gera um evento com um ID para cada rubrica (o mesmo ocorre com todos os outros tipos de eventos), é isso?

Observe que o XML em anexo possui duas inclusões de rubricas no mesmo evento. É possível fazer isso ?

1061177090000002019012115192102024-S-1010-27.xml

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1893 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.