Ir para conteúdo
  • Cadastre-se

dev botao

S-1200 - Como carregar Arquivos Assinados Baixados no ESocial para o Componente


Ver Solução Respondido por Renato Rubinho,

Recommended Posts

Estou com uma Dúvida, Eu tenho varios lotes de varias datas que foram feitos downloads Manualmente no portal do ESocial , e preciso alimentar minha base de dados com dados processados de anos anteriores.

EU estou Usando o Método ACBrESocial.LoadFromFile( umArquivoXMl1200 ), porém eu não consigo de nenhuma forma recuperar os valores, parece que nada é carregado no componente, debugando eu  cheguei na pcesGerador para o Laytou TeS1200 , Ele direciona para esse método 

 

procedure TeSocialEvento.SetXML(const Value: String);
var
  NomeEvento: String;
  Ok: Boolean;
  Leitor: TLeitor;
  typVersaoeSocial: TVersaoeSocial;
begin
  typVersaoeSocial := TACBreSocial(FACBreSocial).Configuracoes.Geral.VersaoDF;
  FXML             := Value;

  if not XmlEstaAssinado(FXML) then
  begin
    NomeEvento := TipoEventoToStrEvento(StringXMLToTipoEvento(Ok, FXML, typVersaoeSocial), typVersaoeSocial);
    FXML       := Assinar(FXML, NomeEvento);

    Leitor := TLeitor.Create;
    try
      Leitor.Grupo := FXML;
      Self.Id      := Leitor.rAtributo('Id=');
    finally
      Leitor.Free;
    end;

    Validar(TipoEventoToSchemaeSocial(StringXMLToTipoEvento(Ok, FXML, typVersaoeSocial), typVersaoeSocial));
  end;

end;

Essa Condição verifica se ele Está assinado     if not XmlEstaAssinado(FXML) then  , se não tiver ele aciona o leitor, Está correto isso, ou eu tenho que usar algum outro método para ler e carregar o componente ACBRESocial com um Arquivo s-1200.xml?

Link para o comentário
Compartilhar em outros sites

  • Moderadores

é que como é algo que vai pra frente creio que o código tu tem que configurar conforme a versão do layout que pode ser diferente

e senão falho a memoria o componente não está ficando as versões antigas

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Link para o comentário
Compartilhar em outros sites

Postado (editado)

humm, Entao pelo que estou entendendo , antes de fazer um LoadFromFile(  ) eu tenho que setar manualmente a versão do Layout? , mas é estranho por que de qualquer forma ele vai sempre entrar nesse ponto da rotina que vai validar se Nao está assinado.. se tiver assinado ele  ignora o Leitor, será que cabe uma revisão ?

Aqui ele entra primeiro na pcesPeriodicos 

e analisa a versão xml e direciona para o type que representa o layout

 

function TPeriodicos.LoadFromString(const AXMLString: String): Boolean;
var
  Ok: Boolean;
  typVersaoDF : TVersaoeSocial;
begin
  typVersaoDF := TACBreSocial(Self.Owner).Configuracoes.Geral.VersaoDF;

  case StringXMLToTipoEvento(Ok, AXMLString, typVersaoDF) of
    teS1200: Self.S1200.New.EvtRemun.XML := AXMLString;
    teS1202: Self.S1202.New.EvtRmnRPPS.XML := AXMLString;
    teS1207: Self.S1207.New.EvtBenPrRP.XML := AXMLString;
    teS1210: Self.S1210.New.EvtPgtos.XML := AXMLString;
    teS1220: Self.S1220.New.EvtInfoIR.XML := AXMLString;
    teS1250: Self.S1250.New.EvtAqProd.XML := AXMLString;
    teS1260: Self.S1260.New.EvtComProd.XML := AXMLString;
    teS1270: Self.S1270.New.EvtContratAvNP.XML := AXMLString;
    teS1280: Self.S1280.New.EvtInfoComplPer.XML := AXMLString;
    teS1295: Self.S1295.New.EvtTotConting.XML := AXMLString;
    teS1298: Self.S1298.New.EvtReabreEvPer.XML := AXMLString;
    teS1299: Self.S1299.New.EvtFechaEvPer.XML := AXMLString;
    teS1300: Self.S1300.New.EvtContrSindPatr.XML := AXMLString;
  end;

  Result := (GetCount > 0);
end;

No Meu caso o tes1200 

 

Editado por carlosevania dias
Link para o comentário
Compartilhar em outros sites

  • Moderadores

acho que tu deveria conferir o log do svn para o componente, mas eu acho que foi capado a parte que tratava lá do começo do esocial pois omesmo não era mais aceito então se tu está a pegar xml antigo pra popular pode ser que não carregue

mas depura linha a linha e tu vai ver o que ele tá buscando

  • Curtir 1
Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Link para o comentário
Compartilhar em outros sites

Postado (editado)

Eu olhei aqui, e pude verificar, debugando linha a linha, que na verdade ele não popula nenhum Arquivo Processado tes1200 , cai sempre na mesma validação,

Se <não> estiver assinado façAssina
     Aciona a Classe de Leitor 
   Valida 
  termina



Não há um Desvio condicional para acionar o Leitor caso *Ja* esteje Assinado!

Na minha percepção ele deveria ter uma condicional
 

Se <não> estiver assinado faça 
   Assina
     Aciona a Classe de Leitor 
   Valida 

se sim <está assinado>
    Aciona a Classe de Leitor 
           popula Layout 
termina



mas não tem uma clausula para arquivos Ja com assinaturas existentes para popular o componente e a estrutura ts1200 , então , qualquer arquivo processado, baixado no portal do Social , não está sendo populado pelo Componente ACBR , independente de versão.

Testei inclusive no Exemplo do ACBR. 

Se eu der um LoadFromFile(  Arquivo S-1200.xml )  ele não popula a estrutura ts1200.


Acredito que ele não está populando nenhum Layout processado baixado do eSocial , Testei com outros Arquivos de processamento Periódicos.

Editado por Carlos Alberto Dias Filho
Link para o comentário
Compartilhar em outros sites

  • Consultores
  • Solution

Olá,

Efetuados testes com a rotina de importação de xmls (ACBreSocial1.Eventos.LoadFromFile) e os dados foram importados corretamente.
Verifique conforme trecho de código abaixo se é o que espera.

  for i := 0 to ACBreSocial1.Eventos.Periodicos.Count - 1 do
  begin
    if ACBreSocial1.Eventos.Periodicos.S1200.Count > 0 then
    begin
      MemoResp.Lines.Add('Tipo Evento.: ' + TipoEventoToStr(ACBreSocial1.Eventos.Periodicos.S1200.Items[i].TipoEvento));
    end;
  end;

Para que os eventos sejam adicionados em ACBreSocial1.Eventos.Gerados ao ler um xml, você deve habilitar a propriedade a seguir:
ACBreSocial1.Configuracoes.Arquivos.Salvar 

Com isso os poderá acessar os dados conforme o trecho a seguir.
Obs: Foi enviada uma correção ao SVN (Rev-34557) ao ler xmls assinados para interpretar o ID do xml para utilizá-lo e salvar os xmls lidos.

  for i := 0 to ACBreSocial1.Eventos.Gerados.Count - 1 do
  begin
    MemoResp.Lines.Add('Tipo Evento.: ' + TipoEventoToStr(ACBreSocial1.Eventos.Gerados.Items[i].TipoEvento));
    MemoResp.Lines.Add('Evento Salvo: ' + ACBreSocial1.Eventos.Gerados.Items[i].PathNome);
  end;

Por favor atualize os fontes, reinstale os componentes, verifique se o problema foi resolvido e, se possível, nos informe se foi o resultado esperado.
 

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.