Jump to content

Assista click.png tectoy.png

C6 chamada_c6.png botao.png

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


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

Recommended Posts

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 to comment
Share on other 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

Link to comment
Share on other 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 to comment
Share on other 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

Link to comment
Share on other sites

  • 5 months later...
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 to comment
Share on other sites

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 to comment
Share on other sites

  • 4 months later...
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 to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.